|
楼主 |
发表于 7-15-2025 20:36:57
|
显示全部楼层
ppball V1.0
V0.9~1.0,增加的是碰撞处理,具体在方法函数ball.collide的if中添加
在这个函数中,self就是ball
所以是两个矩形之间的“是否互相碰上”的判断:
self.x, self.y, self.w, self.h
pad.x, pad.y, pad.w, pad.h
矩形4元组(x,y,w,h)的含义分别是:左上角坐标(x,y), 矩形宽度w,矩形高度h
注意计算机坐标系左上角(0,0), y轴向下。
但是具体做游戏的时候,要考虑到ball的spdX,因为比如spdX = 2, 那么上一秒还有距离1,下一秒又重叠了1,永远没有“紧挨着”的状态。
考虑到实现“球拍击球”功能后,如果没有接住球,还要增加“新开一局”功能,都在V1.0中实现。
具体代码:

注意增加了碰撞精度ACCURACY变量,意思是:如果ball的右侧与pad的左侧具体在ACCURACY之内,就算打到。碰撞暂定为2,这个数值与spdX的最大值有关。
函数set_new_ball在没接住球,“死球”后调用。

ball.collide中的碰撞检测,坐标判断,注意考虑了ACCURACY

键盘event处理,增加“空格键重玩”。
这样ppball V1.0就OK啦!
|
|