Python|蟒蛇书《外星人入侵》项目学习记录|添加飞船与子弹

一.创建pygame窗口与用户响应

按照书上的提示,我们创建一个名为alien_invasion.py的文件,在其中存放游戏的主要逻辑的代码。其主要逻辑为:首先创建一个Pygame窗口,然后通过一个死循环不断监视键盘和鼠标事件,随后对这些事件做出响应,然后更新整个待显示的surface对象,将其更在屏幕上。

更新surface对象需要用到pygame.display.flip(),其作用是更新整个待显示的surface对象到屏幕上。它会在每次执行while循环时擦去旧屏幕,绘制新屏幕,以此达到不断更新屏幕的目的。

监视键盘和鼠标发出的事件我们使用pygame.event.get()函数,这是pygame提供的一种便捷的方式。它可以获取用户当前所做动作的事件列表,这意味着用户可以在同一时间做很多事情。

随后,我们需要在同一文件夹中创建一个名为settings.py的文件,在其中保存游戏所需要用到的设置,比如:屏幕尺寸、背景颜色等等。这样,当我们需要访问设置时,只需要使用一个设置对象,同时这也会使得修改游戏参数时更加方便。

至此,代码的具体实现如下:

import sys
import pygame
from settings import Settings

class AlienInvasion:
        '''管理游戏资源和行为的类'''
        def __init__(self):
            pygame.init()
            self.settings = Settings()
            self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_height))
           
            pygame.display.set_caption("Alien Invasion")
            self.background_color = self.settings.background_color

        def run_game(self):
            """开始游戏的主循环"""
            while True:
                self._check_events()
                self._update_screen()
        
        def _check_events(self):
            """监视事件的方法"""
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                elif event.type == pygame.KEYDOWN:
                    # 按下移动按键
                    self._check_keydown_events(event)
                elif event.type == pygame.KEYUP:
                    # 松开移动按键
                    self._check_keyup_events(event)

        def _check_keydown_events(self,event):
            if event.key == pygame.K_RIGHT:
                # 按下键盘右箭头键
                self.ship.moving_right = True
            elif event.key == pygame.K_LEFT:
                # 按下键盘右箭头键
                self.ship.moving_left = True
            elif event.key == pygame.K_UP:
                # 按下键盘上箭
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值