在完成窗口的绘制和背景颜色的设置后,接下来的任务就相对困难些了。 我在学习中也遇到不少问题,以后都会在文章中慢慢提到。
在接下来的游戏制作中,需要加载各种‘人物’,为了使主程序看起来简介、美观、易懂,我们创建一些类来存储这些设置。(同时,在此可以复习一下怎么创建类和类的使用)
下面举个简答的例子
#存储游戏所有设置的类
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