前言
在看一本Python书,正好有一个弹球游戏。书中的代码可以跑,就是有一个问题。若球遇到边界,就不弹回。正好发现一篇文章,解决了书中代码的问题。
游戏玩法
有一个小球(颜色程序自定)在有限屏幕里随机移动,碰到边缘就反弹。有一块木板在屏幕中只能左右移动,接到球,球反弹。反之,结束游戏。
程序设计
思路
设计一个类名为Ball,存放游戏中球的设计与运动动作程序化内容。比如说,球大小颜色、运行边界等。再设计一个paddle类,存放木板的设计与运动动作程序化内容。
问题修改
我认为源代码逻辑中,球只能识别界面左边边界,右边边界不能识别。
问题代码展示
def draw(self):
self.canvas.move(self.id, self.x, self.y)
pos = self.canvas.coords(self.id)
if pos[1] <= 0:
self.y = 3
if pos[3] >= self.canvas_height:
self.hit_bottom = True
if self.hit_paddle(pos):
self.y = -3
if pos[0] <= 0:
self.x = 3
if pos[2] >= self.canvas_width:
self.y = -3
修改后代码展示
starts = [-3, -2, -1, 1, 2, 3]
if pos[1] <= 0:
self.y = abs(starts[random.randrange<