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()
- python实战游戏开发——重构:模块game_functions
- python实战游戏开发——射击
- python实战游戏开发——开始游戏项目
- python实战游戏开发——安装pygame
- python实战游戏开发——添加飞船图像
- python实战游戏开发——驾驶飞船
- python实战游戏开发——创建一群外星人
- Maven实战(三)——多模块项目的POM重构
- Maven实战(三)——多模块项目的POM重构
- Maven实战(三)——多模块项目的POM重构
- 许晓斌_Maven实战(三)——多模块项目的POM重构
- Maven实战(三)——多模块项目的POM重构
- Maven实战(三)——多模块项目的POM重构
- Maven实战(三)——多模块项目的POM重构(转)
- Maven实战(三)——多模块项目的POM重构
- 学习笔记——Maven实战(三)多模块项目的POM重构
- HTML5吃豆豆游戏开发实战(三)2d碰撞检测、重构
- HTML5吃豆豆游戏开发实战(四)2d碰撞检测、重构-第二篇
- C++一本通题库1006
- webApp开发
- Java core 卷1 第四章对象与类
- Android Studio下,gradle project sync failed 错误
- 远程从Mongodb 数据库中 导出数据为Excel 文件
- python实战游戏开发——重构:模块game_functions
- iOS lldb调试Chisel增强插件安装过程
- leetcode 006 ZigZag Conversion
- 23种设计模式之二
- 学做Ubuntu内核 *.deb包
- 语义识别(一):隐性马尔可夫模型
- FTPrep, 98 Validate Binary Search Tree
- javaWeb-servlet的执行流程详解
- SSH工程整理