python alien_invasion(外星人入侵)项目笔记

Hayley ·
更新时间:2024-11-15
· 834 次阅读

python alien_invasion(外星人入侵)项目笔记游戏效果项目规划游戏描述开发阶段第一阶段:飞船、子弹第二阶段:外星人第三阶段:计分文件目录结构函数类数据编程框架总结主函数子函数集类使用到的模块
项目来源:《Python编程:从入门到实践》 游戏效果

在这里插入图片描述

项目规划 游戏描述 在游戏《外星人入侵》中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家 可以使用箭头键左右移动飞船,还可使用空格键进行射击。游戏开始时,一群外星人出 现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星 人都消灭干净后,将出现一群新的外星人,他们移动的速度更快。只要有外星人撞到了 玩家的飞船或到达了屏幕底部,玩家就损失一艘飞船。玩家损失三艘飞船后,游戏结束。 开发阶段 第一阶段:飞船、子弹 创建一艘可左右移动的飞船,这艘飞船在用户按空格键时能够开火

小结

- 游戏开发计划的制定 - 使用Pygame编写的游戏的基本结构 - 如何设置背景色,以及如何将设置存储在可供游戏的各个部分访问的独立类中 - 如何在屏幕上绘制图像,以及如何让玩家控制游戏元素的移动 - 如何创建自动移动的元素,如在屏幕中向上飞驰的子弹,以及如何删除不再需要的对象 - 如何定期重构项目的代码,为后续开发提供便利 第二阶段:外星人 创建一群外星人,并编写外星人与子弹之间的关系

小结

- 如何在游戏中添加大量相同的元素,如创建一群外星人 - 如何使用嵌 套循环来创建元素网格,还通过调用每个元素的方法update()移动了大量的元素 - 如何控制对象 在屏幕上移动的方向,以及如何响应事件,如有外星人到达屏幕边缘 - 如何检测和响应子弹和外星人碰撞以及外星人和飞船碰撞 - 如何在游戏中跟踪统计信息,以及如何使用标志game_active来判断游戏是否结束了 第三阶段:计分 play按键、计分系统

小结

- 如何创建用于开始新游戏的Play按钮,如何检测鼠标事件,以及在游戏 处于活动状态时如何隐藏光标 - 如何随游戏的进行调整其节奏,如何实现记分系统,以及如何以文 本和非文本方式显示信息 文件目录结构 函数

alien_invasion(主函数)

初始化背景设置 创建一个名为screen的显示窗口 创建Play按钮 创建存储游戏统计信息的实例,并创建记分牌 创建一艘飞船 创建一个用于存储子弹的编组 创建外星人群 开始游戏的主循环 捕捉事件(鼠标+按键) 如果游戏处于活动状态 更新飞船 更新子弹 更新外星人 屏幕展示结果

game_functions(子函数集)

响应按键和鼠标事件 鼠标退出按钮 退出(系统函数) 按键按下 响应按键(子函数) pygame.K_RIGHT 右移标志改为true pygame.K_LEFT 左移标志改为true pygame.K_SPACE 如果还没有到达限制,就发射一颗子弹(子函数) pygame.K_q 退出(系统函数) 按键松开 响应松开(子函数) pygame.K_RIGHT 右移标志改为false pygame.K_LEFT 左移标志改为false 鼠标按钮按下 获取鼠标坐标(pygame函数) 玩家单击Play按钮时开始新游戏 重置游戏设置 隐藏光标 重置游戏统计信息 重置记分牌图像 清空外星人列表和子弹列表 创建外星人群(子函数) 创建一个外星人,并计算每行可容纳多少个外星人(1 计算每行可容纳多少个外星人(子函数) 2 计算屏幕可容纳多少行外星人(子函数)) 创建外星人群(循环调用:创建一个外星人并将其放在当前行(子函数)) 飞船居中 更新子弹的位置,并删除已消失的子弹 更新子弹的位置 删除已消失的子弹 响应子弹和外星人的碰撞(子函数) 删除发生碰撞的子弹和外星人 更新现有得分和最高得分 更新现有得分 检查是否诞生了新的最高得分(子函数) 如果外星人为0 删除现有的所有子弹 提高速度设置和外星人点数 提高等级 创建外星人群(子函数) 检查是否有外星人位于屏幕边缘,并更新整群外星人的位置 有外星人到达边缘时采取相应的措施 如果检测到边缘后,就改变外星人飞行方向(将整群外星人下移,并改变它们的方向(子函数)) 更新外星人 如果检测到外星人和飞船之间碰撞 响应被外星人撞到的飞船(子函数) 检查是否有外星人到达了屏幕底端 如果到达底端 响应被外星人撞到的飞船(子函数) 更新屏幕上的图像,并切换到新屏幕 settings button game_stats scoreboard ship bullet alien 数据 images ship.bmp alien.bmp 编程框架总结 主函数 初始化部分: 初始化参数:用一个Settings类,给各参数一个初始值 创建对象:用参数初始值,对用到的类进行例化 循环体部分: 捕捉事件(鼠标+按键),并做出响应 某一对象有限状态:改变标志位 某类对象集合添加:直接添加对象 如果游戏处于活动状态 根据上面的标志位,在游戏规则的限定下,做出相应的响应 对更新后的结果进行屏幕展示 子函数集 所有的子函数放在一个文件里 函数之间的调用都采用参数传递的方式,未使用全局变量可能是一个缺点 主要描述了不同类之间的关系(方法) 每个类都独自写成一个文件 类中包括属性和方法: 属性:自身属性,根据背景参数和特定设置作为初始参数 方法:子包含类本身一些属性的修改 使用到的模块 sys -->玩家退出 pygame -->开发游戏所需功能
作者:qq_42816434



外星人 外星人入侵 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号