python实战游戏开发——添加飞船图像

1、创建Ship类

import pygame
# -*- coding: utf-8 -*-
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 blitme(self):
          #在指定位置绘制飞船
          self.screen.blit(self.image,self.rect)
1)使用函数pygame.image.load()返回一个表示飞船的surface

2)使用get_rec()获取相应surface的属性rect

注:pygame能够像处理矩形(rect对象)一样处理游戏元素,即便他们的形状并非矩形。

3)处理rect对象时,可使用矩形四角和中心的x和y坐标。可通过这些值来指定矩形的位置。

要使游戏元素居中,可设置相应的rect对象的属性center、centerx或centery。要让游戏元素与屏幕边缘对齐,可使用属性top、bottom、left或right;要调整游戏元素的水平或垂直位置,可使用属性x和y,它们分别是相应矩形左上角的x和y坐标。

注:在pygame中,原点(0,0)位于屏幕左上角,向右下方移动时,坐标将增大。

4)首先将表示屏幕的矩形存储在self.screen_rect中,再将self.rect.centerx(飞船中心的x坐标)设置为表示屏幕的矩形的属性centerx,并将self.rect.bottom(飞船下边缘的y坐标)设置为表示屏幕的矩形的属性bottom。pygame将使用这些rect属性来放置飞船图像,使其与屏幕下边缘对齐并居中。

5)方法blitme(),它根据self.rect指定的位置将图像绘制到屏幕上。

2、在屏幕上绘制飞船

#alien_invasion.py
# -*- coding: utf-8 -*-
import sys
from settings import Settings
from ship import Ship
import pygame

def run_game():
    #初始化游戏并创建一个屏幕对象
    pygame.init()
    ai_settings=Settings()
    screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    #设置游戏背景色
    bg_color=(230,230,230)
   
    #创建一艘飞船
    ship=Ship(screen)

    #开始游戏主循环
    while True:
       
          #监视键盘和鼠标事件
          for event in pygame.event.get():
              if event.type==pygame.QUIT:
                 sys.exit()
          
          #每次循环时都会重绘屏幕
          screen.fill(ai_settings.bg_color)
          ship.blitme()

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

run_game()


在创建屏幕后创建了一个ship实例。必须在while循环前创建该实例,避免每次循环时都要创建一艘飞船。填充背景后,调用ship.blitme()将飞船绘制到屏幕上,务必确保它出现在背景前面。

你可能感兴趣的:(python,python实战游戏开发)