当前课程知识点:Python 交互式程序设计导论 >  第8周 >  本周项目:守卫家园 >  编程步骤

返回《Python 交互式程序设计导论》慕课在线视频课程列表

编程步骤资料文件与下载

编程步骤

我们已经为该小项目提供了一个基本模板,请仔细阅读模板提供的代码,读懂这些代码有助于你顺利完成本项目。

建议“守卫家园”游戏的编码步骤为:

1、编写计算两点距离的辅助函数distance(p,q),参数pq为平面坐标点,该函数将用于检测两个对象是否发生碰撞。

2、编写游戏初始化辅助函数init(),在该函数中对全局变量进行初始化,应当通过Soldier类创建一个战士对象、通过Sprite类创建4个城堡对象并存储到castle_group集合中,还应当开启背景音乐。

3、完善class Soldier(战士类),该类的set_angle(self, angle)方法、get_pos(self)方法、set_shooting(self,is_shooting)方法、set_vel(self, new_vel)均非常直观。

shoot (self)方法的功能是发射弓箭,首先应当计算弓箭的初始位置坐标,然后计算弓箭的速度,接着通过Sprite类创建一个弓箭对象并将其存储到arrow_group集合中。

draw(self, canvas)将调用draw_image 并以恰当的私有属性为参数在画布绘制战士,应当根据shooting属性绘制平铺图片中的不同图像来实现射箭的动画效果。

update(self) 方法将用self.vel更新self.pos,如果战士的位置移出画布,应当在画布对面出现。

collide(self, other)则根据self.move_direction的取值计算是否和另一个静止的棋子发生碰撞,如果发生碰撞或到达棋盘边界则返回True,否则返回False

4、完善class Sprite(精灵类),该类的get_radius(self)方法、get_pos(self)方法均非常直观。

collide(self, other)用来计算是否和另一个对象发生碰撞,如果发生碰撞则返回True,否则返回False

draw(self, canvas)将调用draw_image 并以恰当的私有属性为参数在画布绘制精灵,应当根据animated属性绘制平铺图片中的不同图像来实现动画效果。

update(self) 方法将用self.vel更新self.pos,同时要判断age(年龄)是否小于lifespan(寿命),如果小于则返回True,否则返回False。其它函数将更加该方法的返回值决定是否要销毁对象。

5、编写时间事件处理函数enemy_spawner()用来定期产生敌人,请注意在事件处理函数注册部分我们有timer = timer = gui.create_timer(1000, enemy_spawner)语句,这表明游戏程序每1秒会调用enemy_spawner ()函数1次,即每1秒会产生一个敌人。如果game_overgame_success的值为False,首先随机生成敌人的垂直位置,新产生敌人的水平位置总是画布的最右侧,然后随机生成敌人的水平移动速度,接着将敌人的角度设置为0(表示图片不旋转),最后通过Sprite类创建一个敌人对象并将其存储到enemy_group集合中。

6、编写辅助函数process_sprite_group(sprites,canvas)来处理一组精灵,用for循环遍历sprites的一个副本并调用每个精灵的draw方法完成对sprites集合所有精灵的绘制,根据游戏的状态(game_overgame_success)决定是否调用每个精灵的update方法更新精灵,并更加update方法方法返回的值决定是否销毁该精灵。

7、编写辅助函数enemy_escape_check()来检查越过左边界敌人,用for循环遍历enemy_group的一个副本并调用判断每个敌人是否越过左边界,如果越过,增加全局变量enemy_escaped的值以记录逃脱敌人的总数。

8、编写辅助函数group_collide(group,other_object) 检测一组对象和另一个对象是否发生碰撞,用for循环遍历group的一个副本并调用每个对象collide(other_object)方法完成对集合所有对象的检测,如果发生碰撞,通过Sprite类创建一个爆炸对象并将其存储到explosion_group集合并销毁发生碰撞的对象。

9、编写辅助函数group_group_collide(group1, group2) 来检测一组对象和另一个对象发生碰撞的情况,用for循环遍历group1的一个副本并group_collide函数完成两组对象的碰撞检测,如果发生碰撞,累计发生碰撞的次数,通过Sprite类创建一个爆炸对象并将其存储到explosion_group集合并销毁发生碰撞的对象,函数返回碰撞次数。

10、编写屏幕刷新事件处理函数(主后绘制函数)draw(canvas),该函数应进行一下操作:

1)绘制游戏背景

2)绘制战士

3)更新战士

4)批量绘制和更新所有城堡

5)批量绘制和更新所有敌人

6)批量绘制和更新所有箭

7)检查逃脱的敌人

8)检查所有敌人和所有箭的碰撞情况

9)检查所有敌人和所有城堡的碰撞情况

10)更新控制面板标签的显示内容

11)判断游戏的输赢结果并绘制对应的画面

11、编写鼠标点击事件的处理函数mouse_handler(pos),如果game_overgame_success的值为False,首先计算鼠标落点和战士之间形成的角度,调用战士的set_angle方法来调整其朝向,然后将战士的shooting属性设置为True,最后调用战士的shoot()方法来发射一枚弓箭。

12、编写按键事件处理函数key_down(key),使得玩家按wasd键时战士可以向上、左、下、右移动。

13、编写键盘事件处理函数key_up(key),使得玩家释放wasd中的某个按键时战士停止移动。

下一节:评分标准

返回《Python 交互式程序设计导论》慕课在线视频列表

Python 交互式程序设计导论课程列表:

第0周

-课程简介

--课程简介

-A 课程视频(算数操作符及表达式)

--绪论

--Python交互式解释器使用方法

--PyCharm集成开发环境介绍

--算数操作符及表达式

-B 课程视频(变量及赋值)

--变量

--项目提交

--“我喜欢Python”热身小项目

-C 辅助视频(计算机结构、Python开发环境安装)

--Windows平台安装Python开发环境

--Mac平台安装Python开发环境

-D 辅助视频(如何提交项目)

--项目提交

-第0周--小测验

-本周项目:"我喜欢Python"

--项目发布、完成、提交及评分流程

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

--项目提交

第1周

-A 课程视频(函数)

--函数

--其它操作符

--随机函数

-B 课程视频(逻辑及表达式)

--逻辑值和比较

--条件

--编程技巧

--“老虎杠子鸡虫”游戏

-第1周--小测验

-本周项目:“老虎杠子鸡虫”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第2周

-A 课程视频(Python交互式应用)

--事件驱动编程

--事件可视化跟踪执行

--SimpleGUITk

--按钮

-B 课程视频(输入框、全局变量)

--输入框

--局部变量和全局变量

--编程技巧

--“猫咪藏在哪个房间”游戏

-第2周--小测验A

-第2周--小测验B

-本周项目:猫咪藏在哪个房间

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第3周

-A 课程视频(画布绘图)

--画布和图形绘制

--字符串处理

--绘图和计时器可视化跟踪执行

--图片和音效

-B 课程视频(计时器)

--计时器

--交互式绘图

--“神奇时钟”游戏

--编程技巧

-第3周--小测验A

-第3周--小测验B

-本周项目:“神奇时钟”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第4周

-A 课程视频(列表)

--列表

--键盘输入

--列表及变化可视化跟踪执行

--碰撞和反射

-B 课程视频(键盘控制)

--速度控制

--运动

--编程技巧

--“桌上冰球”游戏

-第4周--小测验A

-第4周--小测验B

-本周项目:“桌上冰球”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第5周

-A 课程视频(鼠标输入、列表进阶)

--鼠标输入

--Video

--Video

--Video

-B 课程视频(字典和图片)

--Video

--Video

--Video

--Video

-第5周--小测验A

-第5周--小测验B

-本周项目:“世界杯八强连连看”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第6周

-A 课程视频(类)

--面向对象编程(类和对象入门)

--面向对象编程(类和对象进阶)

--对象可视化跟踪执行

--华容道中的类

-B 课程视频(平铺图片)

--平铺图片

--理解对象

--编程技巧

--“华容道”游戏

-第6周--小测验A

-第6周--小测验B

-本周项目:“华容道”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第7周

-A 课程视频(类进阶及文件操作)

--集合

--文件操作

--文字块类

--处理停止的文字块

-B 课程视频(游戏状态控制)

--游戏记分规则

--游戏结束的条件及处理

--编程技巧

--“决战三字经”游戏

-第7周--小测验A

-第7周--小测验B

-本周项目:决战三字经

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

第8周

-A、课程视屏(精灵集合)

--Video

--精灵类

--战士类

--编程技巧

-B、课程视屏(动画)

--精灵碰撞

--精灵动画

--编程技巧

--保卫家园游戏

-第8周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

编程步骤笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。