上次将开始按钮“GO”设置好了,现在要发挥其功效了,当玩家点击按钮时开始游戏:
在game_functions.py中定义新的事件MOUSEBUTTONDOWN,也就是鼠标点击事件,
在check_events()中添加:
 elif event.type==pygame.MOUSEBUTTONDOWN:#检测鼠标点击事件mouse_x,mouse_y=pygame.mouse.get_pos() #get_pos()返回一个单击时鼠标的xy坐标check_play(button_go,sta,mouse_x,mouse_y)
check_play()方法检查开始按钮:
def check_play(button_go,sta,mouse_x,mouse_y):  #点击按钮开始游戏if button_go.rect.collidepoint(mouse_x,mouse_y):#该方法检测鼠标点击的位置是否在按钮的rect内sta.game_active=True
最后在主程序中调用该函数:
 while True:gf.check_events(ship,ai_settings,screen,bullets,button_go,sta) #更改事件监听函数

当游戏结束时,game_active为False,并重新显示开始按钮,但此时再点击则没有效果(其实也有一点效果,每次点击外星人移动一点点),大家还记得之前那个方法嘛。。

def ship_col(ai_settings,aliens,screen,ship,bullets,sta):if sta.ship_counts>0:  sta.ship_counts-=1  #每次检测到撞击飞船数量减少1aliens.empty()bullets.empty()  #清空外星人和当前的子弹creat_aliens(ai_settings,screen,aliens,ship)  #创建一批新的外星人ship.ship_center()  #将飞船重新放到屏幕中央sleep(1)  #睡眠1秒钟else:sta.game_active=False
当游戏结束后ship_counts已经等于零了,则以下的更新操作都不能执行了,此时转取else中将game_active改为False,于是乎又停止了。。下一次将修改这一漏洞……
最后附上游戏结束时的场景:

Pygame实战之外星人入侵NO.12——点击按钮开始游戏相关推荐

  1. Pygame实战之外星人入侵NO.11——设置开始按钮

    目前的状态是当我们打开游戏时便自动运行了,这样显然不符合逻辑,那我们就设置一个开始按钮,当我们点击它是游戏才开始,这次我们先将这个开始按钮搞出来,后续操作下篇见-- 首先我们要将游戏的初始状态设置为非 ...

  2. Pygame实战之外星人入侵NO.9——消灭外星人

    万事俱备,只欠子弹和外星人同归于尽-- 我们将使用sprite.groupcollide()来检测子弹和外星人的碰撞,也就是查看二者是否重叠在一起~~ 在game_functions.py中的upda ...

  3. Pygame实战之外星人入侵NO.6——外星人登场

    飞船和子弹都整好了,外星人该登场了,首先建一个表示外星人的模块alien.py: import pygame from pygame.sprite import Sprite class Alien( ...

  4. 【Vue实战】使用vue实现点击按钮,改变被点击按钮的样式。

    1. 实现思路 为每个按钮设置一个index: 为按钮设置点击事件 获取到按钮点击事件以后,判断index,进而动态修改按钮的class 2. 代码实现 2.1 代码 <template> ...

  5. Python-项目实战-《外星人入侵》Pygame小游戏-阶段二:外星人来了

    来源于<Python编程从入门到实践>的13章外星人来了. 此为第二阶段: Python-项目实战-<外星人入侵>Pygame小游戏-阶段一:武装飞船(含教程)_Kox233的 ...

  6. Pygame 实战(行动代号(单机版)):(二). 游戏编程

    当前系列历史文章: Pygame 实战(行动代号(单机版)):(一). 游戏简介 这一部分就开始讲实现的代码啦!因为之前写代码的时候没什么经验,所以可能有不少冗余的部分和可以简化的地方命名也不是很规范 ...

  7. Pygame实战:利用Python实现智能五子棋,实现之后发现我玩不赢它。

    导语 前段时间不是制作了一款升级版本五子棋的嘛! 但是居然有粉丝私信我说: "准备拿到代码玩一下ok过去了!太难了准备放收藏夹落灰q@q~" 所噶,今天先放一个简易版本的五子棋给大 ...

  8. 【Pygame实战】经典的坦克大战游戏,勾起童年无限回忆《坦克大战小霸王版》

    导语 哈喽!哈喽--我是木木子 今天来升级下之前写的坦克大战游戏嘛,哈哈哈 其实也不算是修改,就是稍微的调试一下!​​ 因为之前写的界面都是英文的 ,有的小伙伴儿英文一点儿都不会的可能看着别扭,今天来 ...

  9. mysql表分区join_​实战:Flink 1.12 维表 Join Hive 最新分区功能体验

    ​实战:Flink 1.12 维表 Join Hive 最新分区功能体验 余东@哗啦啦 Flink 中文社区 我们生产常有将实时数据流与 Hive 维表 join 来丰富数据的需求,其中 Hive 表 ...

  10. 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)

    最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...

最新文章

  1. 木桶排序算法_【生信常识】二代测序的比对算法浅析
  2. pycharm专业版使用jupyter notebook并且进行调试
  3. PHP随机字符串生成器
  4. 我用nagios-check_http check Checker
  5. 【Java代码】未分页数据根据参数进行分页(粘贴可用)
  6. 学习 WCF (4)--学会使用配置文件
  7. kmd缅甸计算机学校,缅甸福星孔子课堂博睿国际学校分课堂举行2017年春节联欢会...
  8. java最常见的runtime_Java常见runtime exception
  9. java中的public,protected,package-private和private之间有什么区别?
  10. 大数据之-Hadoop3.x_MapReduce_shuffle机制---大数据之hadoop3.x工作笔记0110
  11. Ubuntu 图形桌面死机重启(机器不重启)
  12. mac版CAD 2021/CAD 2022许可检出超时怎么解决?
  13. vue-router 定义三级路由,路由跳转了,页面没出来
  14. 消逝的光芒 Dying Light for Mac 跑酷僵尸游戏 动作生存游戏
  15. android6.0在状态栏添加一键截屏
  16. 吸血鬼素数 C/C++
  17. webview加载网页,tel协议不会调出拨号盘?该如何处理
  18. 智能化变电站辅助系统与生产系统结合的未来发展方向
  19. Advanced Installer轻松带你入门
  20. SQL Server从入门到精通(四)

热门文章

  1. 支付宝推出信用租房 醉翁之意不在酒?
  2. php html转ubb,PHP HTML转UBB函数
  3. python版问答聚合采集工具源代码+反编译完美还原
  4. TCP连接关闭—close和shutdown
  5. 第一篇,嵌入式ubantu系统安装及常见ubantu命令,C语言数据类型和变量的定义
  6. LVGL 8.2图片缩放及旋转
  7. 如何通过KRPano全景资源下载助手来批量下载720yun的全景图
  8. Filebeat自定义index和fields
  9. Result类的写法
  10. Error: L6218E: Undefined symbol