通俗易懂的文章
结尾有完整代码
1,创建游戏窗口
game.mainloop()的作用是保持窗口不结束,只有我们自己想结束的时候才可以关闭
bgcolor 创建背景颜色
2,创建第一个球拍speed(0)让球拍快速移动
shape 控制形状
goto 让球拍到达指定坐标
结果如图所示3,让球拍动起来
先定义两个向上移动,向下移动的函数
y=xm.ycor() 获取当前球拍位置
y=y+5 每按一次w 向上走5
y=y-5 每按一次s 向下走5
到此球拍就可以移动了
4,创建第二个球拍
和第一个球拍一样的方法
结果如图所示5,创建乒乓球
和创建球拍大同小异
但省去了隐藏的步骤
同时形状设为圆形
6,让乒乓球动起来
通过while循环让乒乓球一直动起来,直到程序被我们结束
pp.dx pp.dy 为乒乓球的运动速度,可以动过改变数值来控制快慢
7,防止乒乓球出界
上一步乒乓球会直接出界,现在就要让他可以反弹
如果乒乓球碰到上下边界,则会改变y坐标方向的运动速度,
具体代码如图所示
8.使乒乓球更加流畅
game.tracer(0)
使游戏不在后台刷新;
game.update()
将此代码放在while循环中,从而达到流畅的效果
更改后的代码如图所示
9,让球拍接球
根据所设定的球拍大小,及乒乓球大小,来找对对应的边界值
通过if判断来实现拍碰球,球反弹
pp.setx(369)是为了防止球与拍发生粘连问题
10,判断球左右出界,并加分
添加xm和rh得分的变量
球若出界则加分11,添加分数
使用turtle创建一个画笔,并将其隐藏
注:这里使用write_score()是为了在一开始就显示分数0 :0
定义write_score()函数,来记录分数
pen.clear()是为了清除上一次分数的笔迹
score_text = "xm:{} rh:{}".format(xm_score, rh_score)
将xm,rh当作变量,将xm_score, rh_score填充进{}中;;;;
每一次出界都要进行一次write_score()操作
到这里游戏已经基本完成
但我们发现每次运行完之后都会出现报错
我们可以做一些更改
并将最后面的 game.mainloop() 注释掉就OK啦
接下来是最终代码