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
这里写图片描述

这里写图片描述

阅读全文
0 0
原创粉丝点击