pygame入门小游戏(外星人入侵(7) )
来源:互联网 发布:淘宝店铺标志尺寸 编辑:程序博客网 时间:2024/05/02 02:28
我们来移动外星飞船,思想是飞船左右移动,碰到屏幕边缘后,然后会向下移动
在alien.py中添加方法update()
def update(self): #向右移动外星飞船 self.x += 1 self.rect.x = self.x
然后在主循环中更新外星人的位置
ck.update_aliens(aliens)
在g_fun.py末端添加update_aliens()
def update_aliens(aliens): aliens.update()
运行程序,发现飞船向右移动,直至消失
下面我们让飞船碰到屏幕边缘后向下移动一段距离
alien.py
def check_edge(self): screen_rect = self.screen.get_rect() if self.rect.right >= screen_rect.right: return True elif self.rect.left <= 0: return True def update(self): #向右移动外星飞船 self.x += (1 * self.my_setting.fleet_dir) self.rect.x = self.x
别忘记在setting.py中添加self.fleet_dir = 1
g_fun.py
def check_fleet_edge(my_setting, aliens): for alien in aliens.sprites(): if alien.check_edge(): change_fleet_dir(my_setting, aliens) breakdef change_fleet_dir(my_setting, aliens): for alien in aliens.sprites(): alien.rect.y += 10 my_setting.fleet_dir *= -1def update_aliens(my_setting, aliens): check_fleet_edge(my_setting, aliens) aliens.update()
运行程序,看到外星飞船左右移动,碰到边缘后会向下移动
接下来,检测外星飞船与子弹的碰撞
修改update_bullets()函数如下
def update_bullets(aliens, bullets): bullets.update() #删除消失的子弹 for bullet in bullets.copy(): if bullet.rect.bottom <= 0: bullets.remove(bullet) collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)
sprite.groupcollide()来检测两个编组成员的碰撞,若两个成员碰撞,就删除他们,(若把第一个True改为False,子弹不会被删除,会继续击落下一个飞船)
对了,此时,主程序中的update_bulleta()还需要传递实参aliens
ck.update_bullets(aliens, bullets)
运行程序,结果如下
那么,当我们把外星飞船击毁后,我们需要生成新的外星飞船,
g_fun.py
def update_bullets(my_setting, screen, ship, aliens, bullets):....................................... collisions = pygame.sprite.groupcollide(bullets, aliens, True, True) if len(aliens) == 0: bullets.empty() alien_fleet(my_setting, screen, aliens, ship)
main.py中
ck.update_bullets(my_setting, screen, ship, aliens, bullets)
运行程序,会发现当外星飞船被击落后,会出现新的一批
为了使程序运行流畅,我们重构下update_bullets(),把处理外星人碰撞和处理子弹的程序再创建一个新的函数,
这是目前所有代码集合链接:链接:http://pan.baidu.com/s/1nuO6lTJ 密码:srjj
阅读全文
0 0
- pygame入门小游戏(外星人入侵(7) )
- pygame入门小游戏(外星人入侵(3))
- pygame入门小游戏(外星人入侵(4))
- pygame入门小游戏(外星人入侵(5))
- pygame入门小游戏(外星人入侵(8) )
- pygame入门小游戏(外星人入侵(9) )
- pygame入门小游戏(外星人入侵(10) 添加得分)
- pygame入门小游戏(外星人入侵(1)窗口的创建)
- pygame入门小游戏(外星人入侵(2)设置背景颜色和添加背景图)
- pygame入门小游戏(外星人入侵(6) 外星飞船来啦!)
- pygame入门小游戏(外星人入侵(6) 外星飞船来啦!【二】)
- 外星人入侵游戏(Python3)
- 《Python编程:从入门到实践》中外星人项目pygame安装(Ubuntu)
- [Python]《Python编程:从入门到实践》外星人入侵(一)
- PyGame---入门(1)
- 外星人入侵问题(黑白帽子报颜色)
- Python(Pygame)入门程序
- 外星人入侵 (Standard IO)
- 综合练习之--2、MainActivity | Fragment 显示XLV 和 侧滑 vp效果的代码
- angularjs 自定义过滤器 改变敏感字
- 关于游戏中参数导出调整的实现_PlayerPrefs方式实现
- windows socket编程入门示例1
- hive笔记
- pygame入门小游戏(外星人入侵(7) )
- 根据URI实战nginx7层代理网站动静分离实战
- 游戏《孢子》的思考 —— Metaball的逻辑,实现及对应思考
- hibernate映射文件详解
- 大数据WEB阶段(六)MySql 下载、安装、卸载与配置
- 网络远程连接
- python文件的写入write()
- H2数据库入门Demo(一)
- OOP,重写与重载,异常处理机制,多线程,集合框架,IO流 -- Java基础复习