ミニゲームを製作していますが、このプログラムだと始めた瞬間に動いてしまいます。マウスのクリックで始まるようにしたいのですが、どうしたらいいでしょうか。バインドを使うことがわかりますがDEFの中の処理の書き方がわかりません。
一応自分でコードは書いてみて、わからないところはPASSで書いています。
よろしくお願いします
python
1 2 3from tkinter import* 4import random 5import time 6 7class Ball: 8 def __init__ (self,canvas,paddle,color): 9 self.canvas=canvas 10 self.paddle=paddle 11 self.id=canvas.create_oval(10,10,25,25,fill=color) 12 self.canvas.move(self.id,245,100) 13 starts=[-3,-2,-1,1,2,3] 14 random.shuffle(starts) 15 self.x=starts[0] 16 self.y=-3 17 self.canvas_height=self.canvas.winfo_height() 18 self.canvas_width=self.canvas.winfo_width() 19 self.hit_bottom=False 20 21 def hit_paddle(self,pos): 22 paddle_pos=self.canvas.coords(self.paddle.id) 23 if pos[2]>=paddle_pos[0] and pos[0]<=paddle_pos[2]: 24 if pos[3]>=paddle_pos[1] and pos[3]<=paddle_pos[3]: 25 return True 26 return False 27 28 def draw(self): 29 self.canvas.move(self.id,self.x,self.y) 30 pos=self.canvas.coords(self.id) 31 if pos[1]<=0: 32 self.y=1 33 if pos[3]>=self.canvas_height: 34 self.hit_bottom=True 35 if self.hit_paddle(pos)==True: 36 self.y=-3 37 if pos[0]<=0: 38 self.x=3 39 if pos[2]>=self.canvas_width: 40 self.x=-3 41 42class Paddle: 43 def __init__(self,canvas,color): 44 self.canvas=canvas 45 self.id=canvas.create_rectangle(0,0,100,10,fill=color) 46 self.canvas.move(self.id,200,300) 47 self.x=-2 48 self.canvas_width=self.canvas.winfo_width() 49 self.canvas.bind_all('<KeyPress-Left>',self.turn_left) 50 self.canvas.bind_all('<KeyPress-Right>',self.turn_right) 51 self.canvas.bind_all('<Button-1>',self.start) 52 53 54 def draw(self): 55 self.canvas.move(self.id,self.x,0) 56 pos=self.canvas.coords(self.id) 57 if pos[0]<=0: 58 self.x=0 59 elif pos[2]>=self.canvas_width: 60 self.x=0 61 62 def turn_left(self,evt): 63 self.x=-2 64 65 def turn_right(self,evt): 66 self.x=2 67 68 def start(self,evt): 69 pass 70 71tk=Tk() 72tk.title("Game") 73tk.resizable(0,0) 74tk.wm_attributes("-topmost",1) 75canvas=Canvas(tk,width=400,height=400,bd=0,highlightthickness=0) 76canvas.create_rectangle(0,0,400,400,fill='black') 77canvas.pack() 78tk.update() 79 80 81 82paddle=Paddle(canvas,'blue') 83ball= Ball(canvas,paddle,'red') 84 85while True: 86 87 if ball.hit_bottom==False: 88 ball.draw() 89 paddle.draw() 90 if ball.hit_bottom==True: 91 canvas.create_text(200,150,text='GAME OVER', 92 fill='red', 93 font=('Times',35)) 94 time.sleep(1) 95 96 tk.update_idletasks() 97 tk.update() 98 time.sleep(0.01) 99 100 101 102 103```。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/11 07:17