pygame入门小游戏(外星人入侵(4))
来源:互联网 发布:膛线无缝管淘宝有售吗 编辑:程序博客网 时间:2024/05/02 00:04
python之禅里面有几句话是这样说的:“Beautiful is better than ugly”“Simple is better than complex ”……的确,python语句追求的就是简单,漂亮。
(在解释器里面输入import this就可以看到python之禅的全文)
因此,为了使主程序看起来简单易懂,我们可以在添加新代码前重构既有代码。它可以简化主程序代码结构,使其容易扩展。
我们可以把监视键盘和鼠标事件的代码与绘制屏幕的代码放到一个函数中。
import sysimport pygamedef check_events(): #监视键盘和鼠标事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit()def update_screen(my_setting, screen, ship): screen.fill(my_setting.bg_color) ship.blit_ship() #让最近绘制的屏幕可见 pygame.display.flip()
这样,主程序中就减少了大量代码。 然后我们在主程序中导入上面模块就OK了。
#g_fun是上面模块的名称(下载链接链接:http://pan.baidu.com/s/1c26N4OS 密码:5ljd)import g_fun as ck--snip--#然后在游戏主循环下调用while True: ck.check_events() ck.update_screen(my_setting, screen, ship)--snip--
这样,while循环就简答多了,便于以后的工作。
接下来我们编写能让飞机移动的代码。
可以有两种方法来实现,一个是键盘控制,另一个可以用鼠标来控制。
这里先介绍键盘控制的
我们还使用pygame.event.get()来获取事件
移动飞船的代码如下
--snip--if event.type == pygame.QUIT: pygame.quit() exit()elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: #飞船向右移动 ship.rect.centerx += 1
此时游戏主循环中需要调用
ck.check_events(ship)
只不过每次按下右键,飞船向右移动一个单位,我们需要一个高效的方法来控制飞船移动—按住右键不放时,飞船会一直移动,直到飞出屏幕 。。。。喔噢T-T 所以我们还要限制飞船的活动范围
向左移动可以类比着向右移动编写代码,这里不再介绍。
下面我们来限制飞船的移动范围
我们只需要保证飞船的外接矩形的x坐标在游戏窗口里面就行
修改ship类中的代码如下:
if self.moving_right and self.rect.right < self.screen_rect.right: self.rect.centerx += 1if self.moving_left and self.rect.left > 0: self.rect.centerx -= 1
(比较操作符优先级大于逻辑运算符)
self.rect.right 用来返回飞船外接矩形的右边缘x坐标,如果它小于self.screen_rect.right的值,就说明没接触屏幕右边缘。左边同理。
这是目前所有程序的链接链接:http://pan.baidu.com/s/1c2bF2t6 密码:yg5z
- pygame入门小游戏(外星人入侵(4))
- pygame入门小游戏(外星人入侵(3))
- pygame入门小游戏(外星人入侵(5))
- pygame入门小游戏(外星人入侵(7) )
- 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)
- mysql事务和锁InnoDB
- 随机获取礼物活动总结(抽奖算法)
- SpringBoot 面向切面编程AOP
- centos7 yum安装maven
- vux scroller上拉加载如何停止加载更多
- pygame入门小游戏(外星人入侵(4))
- void 无类型
- CentOS7防火墙配置
- java定时任务 timer
- android apk使用framework中usb接口范例(应用RtkGps分析)
- 最通俗易懂的JavaScript知识,应有尽有。
- Ajax的使用
- 关于webstorage的使用
- 应用层--计算机网络自顶向下笔记(二)