python实战游戏开发——重构:模块game_functions

来源:互联网 发布:户外拍摄技巧淘宝 编辑:程序博客网 时间:2024/06/07 16:29

1、重构旨在简化既有代码结构,使其更容易扩展。

创建模块game_functions,可避免alien_invasion.py太长,并使逻辑更容易理解。

2、

#settings.py
class Settings():
      def __init__(self):
          #屏幕设置
          self.screen_width=1200
          self.screen_height=500
          self.bg_color=(230,230,230)


#ship.py
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)


#game_functions.py
import sys
import pygame
def check_events():
    """监视键盘和鼠标事件"""
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
           sys.exit()

def update_screen(ai_settings,screen,ship):
    """更新屏幕上的图像,并切换到新屏幕"""
    #每次循环时都会重绘屏幕
    screen.fill(ai_settings.bg_color)
    ship.blitme()

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


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

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:
          gf.check_events()
          update_screen(ai_settings,screen,ship)

run_game()


阅读全文
0 0
原创粉丝点击