前言

事件函数部分最后总结了一下,实际上我们能需要调用的函数也就这几个:

  • check_events:检查键鼠事件
  • update_bullets:子弹更新
  • update_aliens:外星人更新
  • update_screen:屏幕更新

主函数

首先上面的我们都需要,不需要写它干什么, 然后我们在主函数中添加一个飞船更新即可,至于记分牌和按钮则是在屏幕更新中实现。
只不过我们需要注意一下,子弹、外星人和飞船更新都是在游戏状态为开始时才需要更新。

    # 开始游戏的主循环 while True: gf.check_events(ai_setting,screen,stats,sb,play_button,Ship,aliens,bullets)if stats.game_active:Ship.update()#先更新子弹再更新外星人,目的是判断是否能装撞上gf.update_bullets(ai_setting,screen,stats,sb,Ship,aliens,bullets)gf.update_aliens(ai_setting,stats,screen,sb,Ship,aliens,bullets)gf.update_screen(ai_setting,screen,stats,sb,Ship,aliens,bullets,play_button)

另外我们需要对写好的类进行创建,以及创建屏幕这样的问题:

    # 初始化游戏并创建一个屏幕对象 pygame.init() screen = pygame.display.set_mode((ai_setting.screen_width, ai_setting.screen_height))#参数是一个元组,宽度&高度pygame.display.set_caption("Alien Invasion") #创建设置类ai_setting = setting()#创建一个按钮play_button = Button(ai_setting,screen,"Play")#创建一个用于存储游戏统计信息的实例stats = GameStats(ai_setting)#创建记分牌sb = Scoreboard(ai_setting,screen,stats)#创建一个飞船Ship = ship(ai_setting,screen)#创建子弹编组bullets = Group()#创建一个外星人编组aliens = Group()#创建外星人,因为最开始我们没法通过其他函数调用create_fleetgf.create_fleet(ai_setting,stats,screen,Ship,aliens)

然后再加上开始的文件导入,主函数就成了:

import pygame               #负责建立游戏
from pygame.sprite import Group
from setting import setting #屏幕对象设置
from ship import ship       #飞船的类
from alien import Alien     #外星人的类
from game_stats import GameStats
from button import Button
from Scoreboard import Scoreboard
import game_functions as gf #控制退出等操作
def run_game():                                                                                                                                                                                                               # 初始化游戏并创建一个屏幕对象 pygame.init() ai_setting = setting()screen = pygame.display.set_mode((ai_setting.screen_width, ai_setting.screen_height))#参数是一个元组,宽度&高度pygame.display.set_caption("Alien Invasion") #创建一个按钮play_button = Button(ai_setting,screen,"Play")#创建一个用于存储游戏统计信息的实例stats = GameStats(ai_setting)#创建记分牌sb = Scoreboard(ai_setting,screen,stats)#创建一个飞船Ship = ship(ai_setting,screen)#创建子弹编组bullets = Group()#创建一个外星人编组aliens = Group()#创建外星人gf.create_fleet(ai_setting,stats,screen,Ship,aliens)# 开始游戏的主循环 while True: gf.check_events(ai_setting,screen,stats,sb,play_button,Ship,aliens,bullets)if stats.game_active:Ship.update()#先更新子弹再更新外星人,目的是判断是否能装撞上gf.update_bullets(ai_setting,screen,stats,sb,Ship,aliens,bullets)gf.update_aliens(ai_setting,stats,screen,sb,Ship,aliens,bullets)gf.update_screen(ai_setting,screen,stats,sb,Ship,aliens,bullets,play_button)run_game()

不过在这时,却显示了一个报错,找不到图像文件,所以没办法我将相对路径改为绝对路径
如果有这个问题的小伙伴也可以改一下,问题就能解决了。

结束了?

目前我已经将外星人游戏项目整体讲解了一遍,加深了整体的印象。
对于多个文件的py项目,我得到了以下的几个重点:

  1. 对于游戏中的元素,我们应当创建类,同时类中的方法应当为针对单一类的方法。比如alien类要创建多个对象,我们就不应该将多个对象的方法写在这里;子弹和外星人的碰撞事件也不应该在这里
  2. 对于游戏的事件部分,每一个函数应当实现一个功能就行了,重构对于后期的二次开发是很重要的。
  3. 大型项目(虽然这个还不算大)一定要想明白有什么东西,然后在开始写;开始只写一个简单的功能,然后不断往上叠加,不能好高骛远,想着一遍成。(另一个系列的Verilog小游戏,当时就想着一遍成,然后有一个模块重写了无数遍,天天熬夜脱发)

基本上就这样了。

结束了,再来一次

在后面的博客中,我将对一些比较好的点子进行实现,比如大子弹、声音特效,还有将一些不合适的地方进行重构。

python实现外星人入侵——4.主函数部分相关推荐

  1. python一定要有主函数_Python主函数从不调用其他函数?

    我有一个作业,创建一个基本的计算器程序,有加减,乘法和除法作为选择.Main应该调用菜单,菜单应该显示选项,并且在显示应答之后,程序应该返回菜单.在 当我运行它时,菜单会正确显示并提示我选择数学运算, ...

  2. ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串

    题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...

  3. python主函数的作用_python中main函数的用法

    原博文 2020-03-27 20:25 − **什么场景下会有main函数?** 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行. **ma ...

  4. python 主函数 输入

    python 主函数 输入 看一段主函数调用函数的小程序: 1 import sys 2 def Fuc(): 3 print 'hello' 4 5 if __name__ == '__main__ ...

  5. python主函数入口_python类 + mian()函数

    main函数 import sklearn import numpy as np print(sklearn) # print("hello") ra = np.random.ra ...

  6. Python中的主函数

    在Python代码中,我们常常看到主函数是以if __name__ == '__main__'开头的,比如 它的原理是什么呢? 首先要知道,__name__是内置变量,用于表示当前模块的名字.在一个模 ...

  7. python主函数写法

    在 Python 中,主函数的写法如下: if__name__ == '__main__': # 这里是程序的入口main() 登录后复制

  8. [1-1 main ]Python主函数及其示例:理解__main_

    Python主函数及其示例:理解__main_ 在深入研究Python编码之前,我们熟悉了Python的主要功能及其重要性. 考虑以下代码 def main():print "hello w ...

  9. python程序一定要有主函数_Python 没有main函数的原因

    毫无疑问 Python 中没有所谓的 main 入口函数,但是网上经常看到一些文章提"Python 的 main 函数"."建议写 main 函数"-- 有些人 ...

最新文章

  1. 150页书籍《PyTorch 深度学习快速入门指南》附PDF电子版
  2. python atan_Python
  3. java,获取微信分享需要的获取 signature、jsapi_ticket和access_token
  4. IE、FF脚本兼容性问题
  5. 2019年Java初级和高级部分的技术面试
  6. python输出jpg_利用python实现.dcm格式图像转为.jpg格式
  7. java程序员_Java和Python的区别 好程序员帮大家解读
  8. 95-34-035-Context-HeadContext和TailContext
  9. java用二维数组编写地图_[Java] Java二维数组写一个超级简单的扫雷游戏,适合新手...
  10. java使用io上传文件_文件传输基础——Java IO流
  11. .bin文件打开编辑
  12. 智能时代如何构建金融反欺诈体系?
  13. JAVA用cmd找不到字符_cmd中输入java找不到文件解决方法
  14. 扇形面积公式推导过程
  15. 我们为什么生病:达尔文医学的新观念
  16. Eclipse Console 乱码
  17. 什么是双因素验证 2FA,如何用 Python 实现?
  18. 1053: 正弦函数 C语言
  19. 实验一 机械臂正逆运动学
  20. MOS管的门极驱动电路知识和特性作用解析

热门文章

  1. python打开zip文件_Python ZIP 文件创建与读取
  2. openssl(CVE-2014-0160)心脏出血漏洞复现
  3. python编程基础-task4-FOR、IF以及while
  4. vscode提示:“An SSH installation couldn‘t be found”
  5. 使用HP LaserJet Pro MFP M225-M226 PCL 6打印机,双面打印文档
  6. 虚假营销、口碑下滑、产品单一,小仙炖难圆“燕窝一姐”梦
  7. vic在c语言用法,用C语言实现Ping程序功能
  8. 基于微信小程序云开(统计学生信息并导出excel)
  9. iOS与unity交互、opencv 草稿
  10. 光纤分类——多模和单模