哪有做建筑设计的网站/搜索引擎排名优化包括哪些方面
12-3 飞船:编写一个游戏,开始屏幕中央有一个火箭,而玩家可使用四个方向上下左右移动飞船。请务必保证飞创不会移到屏幕外面。
alien_invasion.py
import sys
import pygame #引入pygame
from settings import Settings #从settings.py引入 Settings类
from ship import Ship
import game_function as gf
def run_game(): #定义一个运行游戏界面的界面#初始化游戏并且创建一个屏幕对象pygame.init() #初始化pygameai_settings=Settings()screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height)) #设置pygame窗口的分别率 1200*800 #screen=pygame.display.set_mode(1200,800)pygame.display.set_caption("Alien Invasion") #游戏运行窗口的标题ship=Ship(ai_settings,screen)#开始游戏的主循环bg_color=(230,230,230)while True:gf.check_event(ship)ship.update()gf.update_screen(ai_settings,screen,ship)
run_game()
game_function.py
import sys
import pygame
def check_event(ship):# 监视键盘和鼠标事件for event in pygame.event.get(): # 用来检测 做吹相应的反应if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:#检测到按键按下的事件check_keydown_events(event, ship)# if event.key == pygame.K_UP:# # 向右移动飞船# ship.rect.centery -= 1# if event.key == pygame.K_DOWN:# # 向右移动飞船# ship.rect.centery += 1elif event.type == pygame.KEYUP:check_keyup_events(event, ship)
def check_keydown_events(event,ship):if event.key == pygame.K_RIGHT: # 然后判断按下的是不是右键# 向右移动飞船ship.moving_right = True # 是的话就让飞船数值持续+1elif event.key == pygame.K_LEFT:# 向右移动飞船ship.moving_left = Trueelif event.key == pygame.K_UP:# 向右移动飞船ship.moving_up = Trueelif event.key == pygame.K_DOWN:# 向右移动飞船ship.moving_down = Truedef check_keyup_events(event,ship):if event.key == pygame.K_RIGHT:ship.moving_right = Falseelif event.key == pygame.K_LEFT:ship.moving_left = Falseelif event.key == pygame.K_UP:# 向右移动飞船ship.moving_up = Falseelif event.key == pygame.K_DOWN:# 向右移动飞船ship.moving_down = Falsedef update_screen(ai_settings,screen,ship):screen.fill(ai_settings.bg_color) # 利用背景色填充屏幕ship.blitme() #在指定的位置绘制飞船pygame.display.flip() # 让最近绘制的屏幕可见
ship.py
import pygame
class Ship():def __init__(self,ai_settings,screen):""""初始化飞船并设置其初始位置"""self.screen=screenself.ai_settings=ai_settings#加载飞船图像并获取其外接矩形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.centerxself.rect.centery = self.screen_rect.centeryself.rect.bottom=self.screen_rect.bottom# 在飞船的属性center中存储小数值self.center=float(self.rect.centerx)self.centery = float(self.rect.centery)#移动标志位self.moving_right = Falseself.moving_left = Falseself.moving_up = Falseself.moving_down = Falsedef update(self):if self.moving_right and self.rect.right<self.screen_rect.right:self.center += self.ai_settings.ship_speed_factorif self.moving_left and self.rect.left> 0:self.center -= self.ai_settings.ship_speed_factorif self.moving_up and self.rect.top>0:self.centery -= self.ai_settings.ship_speed_factorif self.moving_down and self.rect.bottom<self.screen_rect.bottom:self.centery += self.ai_settings.ship_speed_factorself.rect.centerx=self.centerself.rect.centery = self.centerydef blitme(self):""""在指定的位置绘制飞船"""self.screen.blit(self.image,self.rect)
settings.py
class Settings():""""存储(外星人入侵)的所有设置的类"""def __init__(self):"""" 初始化游戏的设置"""#屏幕设置self.screen_width=1200self.screen_height=800self.bg_color=(230,230,230)#飞船的设置self.ship_speed_factor=1.5
虽然通过了自己修改例程,解决其中的错误,达到了题目的效果,但是至此有一部分程序还没完全掌握,记录下来,继续学习,等着几天后再返回来重写,记录到此的程序,也分享出来,初学水平不足。,有可以更好改进的地方还望提出。