本文实例为大家分享了python3.6实现弹跳小球游戏的具体代码,供大家参考,具体内容如下
进口随机 导入的时间 从tkinter进口* #下面定义一个球的类,有帆布和颜色两个对象 班级舞会:#定义一个球类的函数 def __init__(自我、帆布、桨、颜色):#这是球类的属性函数,球类下的函数都有这些性质 self.canvas=帆布 self.paddle=桨 self.id=canvas.create_oval(10、10、25日,25日,填补=颜色)#返回所绘小球的调用值放入对象self.id self.canvas.move (self.id, 245100) #移动小球到(245100)坐标处, 开始=[3、2、1,1,2,3] random.shuffle(开始) 自我。x=[0] #开始使得小球左右方向运动随机 自我。y=3 #默认开始的小球向上方运动 self.canvas_height=self.canvas.winfo_height() #画布高度函数winfo_height()返回值放入canvas_height对象中 # winfo_width self.canvas_width=self.canvas.winfo_width()()返回画布宽度放入canvas_width对象中 自我。hit_bottom=False #设定hit_bottom初始值为假的 def hit_paddle(自我,pos): #声明函数,以供调用 paddle_pos=self.canvas.coords (self.paddle.id) #将球拍的(x1, y1) (x2, y2)的坐标放到paddle_pos中 如果pos[2]祝辞=paddle_pos[0]和pos [0] & lt;=paddle_pos [2]: # 如果pos[3]祝辞=paddle_pos[1]和pos [3] & lt;=paddle_pos[3]: #比较小球y轴是否在球拍y轴内 还真#表示小球碰到了球拍 返回False #表示小球没有碰到球拍 def画(自我):#声明画函数, self.canvas.move (self.id self.x self.y) #移动小球,移动速度为(self.x self.y),在初始化中的属性可以直接用 pos=self.canvas.coords (self.id) #把小球的左上角和右下角的坐标以列表形式(可能元组)放入pos对象中 如果pos [1] & lt;=0: #如果小球碰到画布上方 自我。y=3 #则改变移动方向向下方 如果pos[3]祝辞=自我。canvas_height: #如果小球碰到画布底端则返回hit_bottom为真实的 self.hit_bottom=True 如果self.hit_paddle (pos)==True: #小球碰到了球拍,则改变Y轴方向向上运动 self.y=3 如果pos [0] & lt;=0: #如果小球碰到了画布左边,则把X轴速度改成每次向右3个像素 self.x=3 如果pos[2]祝辞=自我。canvas_width: #如果小球碰到了画布右边,则把速度改成每次向左3个像素 self.x=3 类桨:#定义一个桨类 def __init__(自我、画布、颜色):#桨类的属性函数,默认有两个变量画布和颜色 自我。帆布画布=#将画布对象赋给self.canvas self.id=canvas.create_rectangle(10 0, 0100年,填补=颜色)#创建球拍,将球拍的调用编号存入self.id self.canvas.move (self.id, 200300) #将球拍移动到(200300)处 自我。x=0 # self.canvas_width=self.canvas.winfo_width() #将画布的宽度放入canvas_width对象 self.canvas.bind_all (“& lt; KeyPress-Left>”, self.turn_left) #用bind_all()函数绑定键盘左键与tun_left函数 self.canvas.bind_all (“& lt; KeyPress-Right>”, self.turn_right) #绑定键盘右键与turn_right函数 def画(自我):#声明一个画函数 self.canvas.move (self.id self.x 0) #左右移动球拍的速度为self.x,默认不动 pos=self.canvas.coords (self.id) #将球拍的左上角和右下角的坐标存入pos对象中 如果pos [0] & lt;=0: #如果球拍x轴小于0,则不再向右移动 self.x=0 elif pos[2]祝辞=自我。canvas_width: #如果球拍要超过画布右侧了,则球拍的移动速度变为0 self.x=0 def turn_left(自我,evt): #这里的evt是调用方传过来的参数,改变球拍的移动速度向左, self.x=5 def turn_right(自我,evt): #改变球拍的移动速度向右每次5个像素 self.x=5 #创建框架并且命名和固定,然后创建该框架的画布 tk=tk() #创建框架对象tk tk.title(游戏)#框架对象tk显示的名字为“游戏” tk.resizable(0,0) #固定框架 tk.wm_attributes(“最高的”,1)#显示在最外层 帆布=画布(tk、宽=500,高=400,bd=0, highlightthickness=0) #创建画布画布,属于tk框架对象, canvas.pack() #显示画布的变化 tk.update() #显示框架的变化 #把类赋值给对象球,如果调用了球就可以实现该类的作用 桨=桨(画布,“蓝色”)#调用拍的类给对象桨用 球=球(帆布、桨、“绿色”)#调用球的类给对象球用 而真正:#要注意而语句以防止死循环,先设置为真 如果球。hit_bottom==False: #没有碰到底部的话执行下面的语句 ball.draw() #调用球对象的函数画() paddle.draw() #调用桨对象的函数画() tk.update_idletasks () tk.update() #更新框架 time . sleep(0.01) #睡眠0.01秒 elif球。hit_bottom==True: #要是小球接触了底部 画布。create_text(200100年,文本='啊哈,你失去了它,\ nHow尝试再次# 63;”,字体=(“*”,22))#在(200100)坐标处创建文本“…”,字号22号 tk.update() #更新内容python3.6使用tkinter实现弹跳小球游戏