找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 51|回复: 5

中A项目:ppball

[复制链接]

33

主题

97

回帖

3628

积分

超级版主

积分
3628
发表于 昨天 10:35 | 显示全部楼层 |阅读模式
Pong是人类最早的电子游戏,是Nolan Bushnell于1972年设计的(软件加硬件)
Pong就说美式英语乒乓球,英国人说table tennis,显然我们翻译的美语哈哈






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

33

主题

97

回帖

3628

积分

超级版主

积分
3628
 楼主| 发表于 昨天 10:36 | 显示全部楼层


这个公司的第40名员工是上图这位先生

后来他拉着他的好伙伴做了Pong的升级版:打砖块(上图)

再后来和这位好伙伴Stephen Gary Wozniak创办了苹果公司


我们中A的核心项目ppball,就是向经典致敬的一款游戏

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

33

主题

97

回帖

3628

积分

超级版主

积分
3628
 楼主| 发表于 昨天 10:38 | 显示全部楼层







V0.9OK啦

然后就可以向V1.0进发啦
V1.0算正式版,那就一定可以接球

请自己想办法完成:就写好ball.collide函数里的if语句即可

当前这个if语句里还没写具体条件,永远都是False,条件永远不成立,当然就永远接不到球......
所以,请认真理解ppt中的内容,理解”游戏里的各种判断,主要就是对坐标的计算和判断”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

33

主题

97

回帖

3628

积分

超级版主

积分
3628
 楼主| 发表于 昨天 16:05 | 显示全部楼层
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啦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

33

主题

97

回帖

3628

积分

超级版主

积分
3628
 楼主| 发表于 昨天 16:09 | 显示全部楼层
接下来要增加功能,刚才是V1.0,我们的V1.1增加了重力引擎。
现在是做项目了,要先做好版本管理


Version Management
new folder: \ppball
copy a new file: ppball V1.1
V1.1是重力引擎版


增加的代码很少


现在运行看看,是不是ball可以打出曲线了?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

33

主题

97

回帖

3628

积分

超级版主

积分
3628
 楼主| 发表于 5 分钟前 | 显示全部楼层
下面是完整的V1.1




首先,非常重要,请再次确定,你有本项目专用的文件夹,folder \ppball
因为,每个project,都需要一个folder,就像Finger和Piano,那么ppball也不例外
以后,每一个新版本,new version,都是new file,从上一个version中增加、修改代码而来。
这样,就不会出现“我想增加功能,功能没加上,老代码也不正常了”,也不会出现“老师要增加的代码是在上一个版本基础上,但是和我现在的代码差别很大,找不到地方!”,等等情况

下载音效包pong.zip,里面有一堆音效。当然,如果你有sound.zip,音效更多!
然后去找一个font文件copy到ppbal的folder里,可以直接用Finger项目里的simkai.ttf,更欢迎用自己喜欢的font。Windows的Font folder位置是:c:\windows\fonts\,Mac的请同学自己找,文件copy过来就可以
然后就是代码啦

增加函数RT_show_txt,这个函数看着眼熟吗?就是Finger里用过的

在主程序的while True前增加声音和字体的初始化,请先确保这些文件与Python程序文件在同一个folder

在draw_filed里增加一句

在ball的类定义里,ball.move中碰到挡板用pong2声音,ball.collide中接到球用pong4声音
还有几个声音留着以后备用。


V1.1就OK啦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 2-10-2026 08:39 , Processed in 0.071404 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表