在这之前学习了:游戏开发计划的制定;使用Pygame编写的游戏的基本结构;如何设置背景色,以及如何将设置存储在可供游戏的各个部分访问的独立类中;如何在屏幕上 绘制图像,以及如何让玩家控制游戏元素的移动;如何创建自动移动的元素,如在屏幕中向上飞驰的子弹,以及如何删除不再需要的对象;如何定期重构项目的代码,为后续开 发提供便利。
在本章中,我们将在游戏《外星人入侵》中添加外星人。首先,我们在屏幕上边缘附近添加一个外星人,然后生成一群外星人。我们让这群外星人向两边和下面移 动,并删除被子弹击中的外星人。最后,我们将显示玩家拥有的飞船数量,并在玩家的飞船用完后结束游戏。
通过阅读本章,你将更深入地了解Pygame和大型项目的管理。你还将学习如何检测游戏对象之间的碰撞,如子弹和外星人之间的碰撞。检测碰撞有助于你定义游戏元 素之间的交互:可以将角色限定在迷宫墙壁之内或在两个角色之间传球。我们将时不时地查看游戏开发计划,以确保编程工作不偏离轨道。
着手编写在屏幕上添加一群外星人的代码前,先来回顾一下这个项目,并更新开发计划。
回顾项目:
开发较大的项目时,进入每个开发阶段前回顾一下开发计划,搞清楚接下来要通过编写代码来完成哪些任务都是不错的主意。本章涉及以下内容。
研究既有代码,确定实现新功能前是否要进行重构。
在屏幕左上角添加一个外星人,并指定合适的边距。
根据第一个外星人的边距和屏幕尺寸计算屏幕上可容纳多少个外星人。我们将编写一个循环来创建一系列外星人,这些外星人填满了屏幕的上半部分。
让外星人群向两边和下方移动,直到外星人被全部击落,有外星人撞到飞船,或有外星人抵达屏幕底端。如果整群外星人都被击落,我们将再创建一群外星人。如果有外星 人撞到了飞船或抵达屏幕底端,我们将销毁飞船并再创建一群外星人。
限制玩家可用的飞船数量,配给的飞船用完后,游戏结束。
我们将在实现功能的同时完善这个计划,但就目前而言,该计划已足够详尽。在给项目添加新功能前,还应审核既有代码。每进入一个新阶段,通常项目都会更复杂,因此最好对混乱或低效的代码进行清理。
我们在开发的同时一直不断地重构,因此当前需要做的清理工作不多,但每次为测试新功能而运行这个游戏时,都必须使用鼠标来关闭它,这太讨厌了。下面来添加一个结束游 戏的快捷键Q:

20_外星人游戏项目03——相关推荐

  1. python实现外星人入侵——4.主函数部分

    前言 事件函数部分最后总结了一下,实际上我们能需要调用的函数也就这几个: check_events:检查键鼠事件 update_bullets:子弹更新 update_aliens:外星人更新 upd ...

  2. uniapp 仿网易云音乐播放器 微信小程序

    效果视频: uniapp 仿照网易云播放器功能 效果截图: 上代码: <template><view class=""><scroll-view :s ...

  3. pygame里显示中文文本是框框问题

    依然是python学习书里,飞船射击外星人游戏项目-- 其中添加play按钮,我想添加中文的'开始游戏',但是显示出来是框框 解决办法: step1-- 将一个中文字体文件,如宋体的字体文件(从电脑C ...

  4. python及pygame雷霆战机游戏项目实战03 碰撞检测

    在这个系列中,将制作一个雷霆战机游戏. 碰撞 碰撞是游戏开发的基本部分. 碰撞检测意味着您要检测游戏世界中的一个对象是否正在触碰另一个对象. 碰撞反应决定了碰撞发生时你想要做什么 - 马里奥拿起硬币, ...

  5. 外星人装深度linux,17xR4深度拆机教程、加装MSATA固态硬盘及评测

    本帖最后由 wellsyue 于 2012-6-20 20:45 编辑 看到其他板块在三代IVY推出后,陆续发布了很多加装MSATA的帖子,发现外星人板块还没有17R4加装MSATA的帖子, 在此,发 ...

  6. 2021.03.17 pokémon小游戏开发记录与周总结

    2021.03.17 pokémon小游戏开发记录与周总结 此篇仅包含部分项目代码,只是个人的学习总结. 文章目录 2021.03.17 pokémon小游戏开发记录与周总结 前言 一.前期准备 二. ...

  7. 外星人跑深度学习_外星人带你搞基?这部12年的动画绝了

    (资源已经搜集好啦,大家回复"JFX "就能看啦) 论拯救世界,没有人能比日本人更擅长了. 遍历各种ACG作品,日本人不仅在拯救世界的次数上成绩斐然,在拯救的方法上更是花样百出. ...

  8. 手把手讲解超详细python入门游戏项目‘打外星飞船’(四)

    手把手讲解超详细python入门游戏项目'打外星飞船'(四) 在经过创立屏幕.飞船移动和设置子弹,我们这里开始设置外形人的创建和移动.我们这里主要的任务是:创建一众外星人让它们充满屏幕,让他们向下和两 ...

  9. 手把手讲解超详细python入门游戏项目‘打外星飞船’(五)

    手把手讲解超详细python入门游戏项目'打外星飞船'(五) 这是最后一个项目了,前面我们讲了整个游戏页面的控制.飞船.子弹.外星人的创建,这里我们讨论一下子弹射杀外星人和整个游戏的结束,我们这里的文 ...

最新文章

  1. 22课时、19大主题,CS 231n进阶版课程视频上线
  2. java ui调试_如何使用 IBM i System Debugger 调试 Java 程序
  3. 必须采用初始化列表一共有三种情况
  4. 04 | 负载均衡:Ribbon 如何保证微服务的高可用
  5. postgresql数据库备份与还原
  6. 前端学习(3031):vue+element今日头条管理-暂时当前登录用户信息
  7. python简单笔记
  8. oracle的分支语句,oracle中的分支与循环语句
  9. 设计模式(17) 访问者模式(VISITOR) C++实现
  10. Js将字符串转数字的方式
  11. linux操作系统_Linux 操作系统内存分布
  12. java 并发容器类实验_Java多线程并发编程中并发容器第二篇之List的并发类讲解...
  13. SPFA算法判断负环
  14. oracle分析函数——rollup和cube
  15. 将txt文件编码改为utf-8格式
  16. 并网光伏发电系统(simulink仿真)
  17. 怎么设置计算机桌面字体大小,Win7桌面字体大小怎么调?Win7系统电脑桌面字体大小设置方法...
  18. android hdmi拔插广播,Android_8.1插拔hdmi后,音量会变到最大
  19. 建群网培PMP每日一练2020-7-17
  20. numeric scale mysql_MySQL基础教程1 — 数据类型之数值类型 - numeric

热门文章

  1. 学习英文-学以致用【场景:吃饭与家务】
  2. C++(Qt) 和 Word、Excel、PDF 交互总结
  3. Python笔记【八】
  4. scsi中DPO和FUA 是什么
  5. 字符串匹配KMP算法的理解(详细)
  6. 使用ffmpeg下载m3u8并转化为MP4视频格式
  7. Java实现简单的递归操作
  8. 鬼吹灯之牧野诡事(四维bfs)
  9. 新乡市牧野区开展2021年国家网络安全宣传周活动
  10. 数组(5):Arrays工具类的实用功能