Python11_项目一 :外星人入侵游戏02(增加了类)

在上一个《外星人》的基础上,我们增加了两个自写类,分别为settings和ship。

其中,settings类的作用是初始化游戏的一些参数,像窗口大小、背景颜色等。

ship类的作用是将飞船绘制到屏幕上。

在ship类中有个小小的坑需要注意:在写图片的路径时,一定要英文路径,并且,双反斜杠去填充

self.img = pygame.image.load('D:\\python\\PyCharm 2016.3.2\\project\\alien\\fei.bmp')

下面附上做到这里的代码:

alien_invasion.py代码如下

import sys
import pygame
from alien.settings import Setting
from alien.ship import Ship


def run_game():          # 初始化游戏,并且创建一个屏幕对象
    pygame.init()        # 初始化背景设置,让Pygame能够正确地工作
    # screen = pygame.display.set_mode((1200, 800))     # 创建一个名为screen 的显示窗口,括号里是元组!!!
    #                                                   # 这个游戏的所有图形元素都将在其中绘制
    ai_set = Setting()                                  # 因为导入类而做了代码替换
    screen = pygame.display.set_mode(
        (ai_set.screen_width,ai_set.screen_height)
    )
    # bg_color = (230,230,230)         # 设置背景颜色

    pygame.display.set_caption('外星人入侵')
    # 创建一艘飞船
    ship = Ship(screen)

    # 为让程序响应事件,我们编写一个事件循环,以侦听事件,并根据发生的事件执行相应的任务。
    while True:  # 游戏的主循环
        for event in pygame.event.get():    # 监视键盘和鼠标
            if event.type == pygame.QUIT:   #编写一系列的if 语句来检测并响应特定的事件
                sys.exit()                  # 我们调用sys.exit() 来退出游戏
        # screen.fill(bg_color)             # 每次循环都重绘屏幕
        screen.fill(ai_set.bg_color)
        ship.blitme()                       # 调用blitme函数,使飞船出现

        pygame.display.flip()       # 让最近绘制的屏幕可见


run_game()

ship.py代码如下

import pygame
class Ship():
    def __init__(self,screen):         # 初始化飞船,并设置初始位置
        self.screen = screen

        # 加载飞船图像并获取其外接矩形
        self.img = pygame.image.load('D:\\python\\PyCharm 2016.3.2\\project\\alien\\fei.bmp')
        self.rect = self.img.get_rect()         # 我们使用get_rect() 获取相应surface的属性rect
        self.screen_rect = self.screen.get_rect()

        # 将每艘新飞船放在屏幕底部中央
        # 要将游戏元素居中,可设置相应rect 对象的属性center 、centerx 或centery 。
        self.rect.centerx = self.screen_rect.centerx
        # 要让游戏元素与屏幕边缘对齐,可使用属性top 、bottom 、left 或right ;
        # 要调整游戏元素的水平或垂直位置,可使用属性x 和y ,它们分别是相应矩形左上角的 x 和 y 坐标。
        self.rect.bottom = self.screen_rect.bottom

    # 我们定义了方法blitme() ,它根据self.rect 指定的位置将图像绘制到屏幕上
    def blitme(self):                           # 在指定位置绘制飞船
        self.screen.blit(self.img,self.rect)    # 把img这个surface对象贴到rect的位置

settings.py代码如下

class Setting():            # 存储《外星人入侵》中所有的设置类
    def __init__(self):     # 初始化游戏设置
        self.screen_width = 1200        # 屏幕设置
        self.screen_height = 800
        self.bg_color = (230,230,230)

猜你喜欢

转载自blog.csdn.net/qq_35069382/article/details/81208104