pygame入门小游戏(外星人入侵(3))

在完成窗口的绘制和背景颜色的设置后,接下来的任务就相对困难些了。 我在学习中也遇到不少问题,以后都会在文章中慢慢提到。

在接下来的游戏制作中,需要加载各种‘人物’,为了使主程序看起来简介、美观、易懂,我们创建一些类来存储这些设置。(同时,在此可以复习一下怎么创建类和类的使用)

下面举个简答的例子

#存储游戏所有设置的类
class Settings():

    #初始化游戏设置
    def __init__(self):

        #屏幕设置
        self.screen_width = 800
        self.screen_height = 600
        self.bg_color = (230, 230, 230)

为了访问settings(),我们需要对主程序做些小小的改动
修改后的主程序如下

import pygame
from sys import exit
#导入Settings()类

from settings import Settings



def run_game():
    #初始化屏幕,并创建一个屏幕对象
    pygame.init()
    my_setting = Settings()
    screen = pygame.display.set_mode((my_setting.screen_width, my_setting.screen_height))
    pygame.display.set_caption('外星人入侵')



    #开始游戏的主循环
    while True:


        #监视键盘和鼠标事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()

        screen.fill(my_setting.bg_color)

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


run_game()

这样。如果需要修改游戏,只需要修改settings.py中的一些参数值就好。

接下来,我们再创建一个飞船的类,方便今后加载飞船

#首先导入pygame模块
import pygame
class Ship():
    #初始化飞船
    def __init__(self, screen):

        self.screen = screen

        #加载飞船图像
        self.image = pygame.image.load('images\ship.bmp')
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        #把飞船放到屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom
    #在指定位置画出飞船
    def blit_ship(self):
        self.screen.blit(self.image, self.rect)

其中,加载飞船图片我们调用了pygame.image.load()
get_rect()用来获取图片相应属性,处理rect 对象时,可使用矩形四角和中心的 x 和 y 坐标。可通过设置这些值来指定矩形的位置。要将游戏元素居中,可设置相应rect 对象的属性center 、centerx 或centery 。要让游戏元素与屏幕边缘对齐,可使用属性top 、bottom 、left 或right ;要调整游戏元素的水平或垂直位置,可使用属性x 和y ,它们分别是相应矩形左上角的 x 和 y 坐标。
在Pygame中,原点(0, 0)位于屏幕左上角,向右下方移动时,坐标值将增大。

此外,主程序中我们还需要导入Ship()

import pygame
from sys import exit
#导入Settings()类
from settings import Settings
from ship import Ship

def run_game():
    #初始化屏幕,并创建一个屏幕对象
    pygame.init()
    my_setting = Settings()
    screen = pygame.display.set_mode((my_setting.screen_width, my_setting.screen_height))
    pygame.display.set_caption('外星人入侵')

    #创建飞船
    ship = Ship(screen)




    #开始游戏的主循环
    while True:


        #监视键盘和鼠标事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()

        screen.fill(my_setting.bg_color)
        ship.blit_ship()

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


run_game()

此时,运行主程序,会看到屏幕下面的飞船
如下
这里写图片描述

图片源文件可在此下载链接:http://pan.baidu.com/s/1pK76JgB 密码:201q

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值