当前课程知识点:Python 交互式程序设计导论 > 第4周 > 本周项目:“桌上冰球”游戏 > 编码步骤
返回《Python 交互式程序设计导论》慕课在线视频课程列表
我们已经为该小项目提供了一个基本模板,我们建议“桌上冰球”游戏的开发策略为:
1、仔细观察我们建议的一些存储游戏状态的全局变量。你的程序可以直接使用这些变量,如果你不喜欢这些变量,当然你也可以使用自己定义的全局变量。
2、为了能够直接地观察到后续代码的运行效果,建议首先编写绘制画布函数draw(canvas),先在draw函数中添加代码来绘制可以在球桌中运动的冰球,编写冰球位置更新代码。(参见“对象移动”课程视频)
3、在spawn_puck(direction)函数中添加代码使其能在球桌中央生成一个速度暂时固定的冰球,先不要考虑direction参数。
4、在new_game()函数中增加对spawn_puck函数的调用代码来启动桌上冰球游戏。注意项目模板包含对new_game函数的调用以初始化游戏。
5、在check_collision()函数中添加代码来检测冰球是否和球桌的四个边发生碰撞,如果发生碰撞,冰球应当产生反射。请调整冰球的速度(角度)来测试你的代码。
6、在spawn_puck(direction)函数中实现冰球初始速度的随机化功能。如果direction== 'LEFT ',冰球应当向左方移动,如果direction== 'RIGHT ',冰球应当向右方移动。冰球的水平和垂直速度应当由random.randrange()函数生成,对于水平速度,建议范围为random.randrange(120, 240)像素每秒,而垂直速度建议为random.randrange(60, 180)像素每秒。请注意速度的正负号很重要,必须正确设置。
7、在draw函数中添加代码来绘制左侧球槌,左侧球槌由计算机自动控制其运动模式,该球槌应当沿着左侧球门弧线匀速来回移动,注意它不能运动到球桌之外。(参见“对象移动”课程视频)
8、在check_collision()函数中添加代码来检测冰球是否和左侧的球槌发生碰撞,如果发生碰撞,冰球应当产生反射,请按弹性碰撞的物理原理计算碰撞后冰球的运动方向及速度。
9、在draw函数中添加代码来绘制右侧球槌,右侧球槌由玩家控制其运动模式。
10、在key_down键盘事件的处理函数中添加代码来控制右侧球槌的运动。当玩家按住上箭头键时,球槌沿着球门弧线向上运动,当玩家按住下箭头键时,球槌沿着球门弧线向下运动,注意它不能运动到球桌之外。
11、在key_up键盘事件的处理函数中添加代码以实现释放按键时右侧球槌停止运动的功能。
12、在check_collision()函数中添加代码来检测冰球是否和右侧的球槌发生碰撞,如果发生碰撞,冰球应当产生反射,请按弹性碰撞的物理原理计算碰撞后冰球的运动方向及速度。
13、在check_collision()函数中添加代码来检测冰球是否进入球门,如果计算机一方将冰球射入右侧球门,计算机得1分,如果玩家将冰球射入左侧球门,玩家得1分。此时应当调用spawn_puck函数由得分方重新发球。
14、完善draw_score(canvas, score1, score2)函数来绘制比分。
15、在draw函数的合适位置调用draw_score来绘制比分。
16、在draw函数中检测双方的得分,任何一方得分达到7分时比赛结束,一场比赛结束后,应当在画布中央显示输赢结果。
17、完善new_game()函数来重新初始化比分等全局变量,然后调用spawn_puck函数生成一个冰球。在控制面板添加“重新开始”按钮,将该按钮的事件处理函数设置为new_game()以初始化游戏。
18、对碰撞、进球、比赛结束等重要状态添加音效。
-课程简介
--课程简介
-A 课程视频(算数操作符及表达式)
--绪论
-B 课程视频(变量及赋值)
--变量
--项目提交
-C 辅助视频(计算机结构、Python开发环境安装)
-D 辅助视频(如何提交项目)
--项目提交
-第0周--小测验
-本周项目:"我喜欢Python"
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
--项目提交
-A 课程视频(函数)
--函数
--其它操作符
--随机函数
-B 课程视频(逻辑及表达式)
--逻辑值和比较
--条件
--编程技巧
-第1周--小测验
-本周项目:“老虎杠子鸡虫”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(Python交互式应用)
--事件驱动编程
--按钮
-B 课程视频(输入框、全局变量)
--输入框
--编程技巧
-第2周--小测验A
-第2周--小测验B
-本周项目:猫咪藏在哪个房间
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(画布绘图)
--画布和图形绘制
--字符串处理
--图片和音效
-B 课程视频(计时器)
--计时器
--交互式绘图
--“神奇时钟”游戏
--编程技巧
-第3周--小测验A
-第3周--小测验B
-本周项目:“神奇时钟”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(列表)
--列表
--键盘输入
--碰撞和反射
-B 课程视频(键盘控制)
--速度控制
--运动
--编程技巧
--“桌上冰球”游戏
-第4周--小测验A
-第4周--小测验B
-本周项目:“桌上冰球”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(鼠标输入、列表进阶)
--鼠标输入
--Video
--Video
--Video
-B 课程视频(字典和图片)
--Video
--Video
--Video
--Video
-第5周--小测验A
-第5周--小测验B
-本周项目:“世界杯八强连连看”
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类)
--华容道中的类
-B 课程视频(平铺图片)
--平铺图片
--理解对象
--编程技巧
--“华容道”游戏
-第6周--小测验A
-第6周--小测验B
-本周项目:“华容道”游戏
--游戏说明
--程序说明
--编码步骤
--评分标准
--项目模板
-A 课程视频(类进阶及文件操作)
--集合
--文件操作
--文字块类
--处理停止的文字块
-B 课程视频(游戏状态控制)
--游戏记分规则
--编程技巧
-第7周--小测验A
-第7周--小测验B
-本周项目:决战三字经
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板
-A、课程视屏(精灵集合)
--Video
--精灵类
--战士类
--编程技巧
-B、课程视屏(动画)
--精灵碰撞
--精灵动画
--编程技巧
--保卫家园游戏
-第8周--小测验
-本周项目:守卫家园
--游戏说明
--程序说明
--编程步骤
--评分标准
--项目模板