python pygame模塊 打飛機遊戲
阿新 • • 發佈:2017-08-30
機器 con wid 初始化 imp convert turn 每次 調整
settings.py用於設置屏幕的基本設置
# -*- coding: gbk -*- __author__ = ‘HZQ‘ import pygame class Settings(): ‘‘‘ 存儲所有設置 ‘‘‘ def __init__(self): #屏幕大小設置 self.screen_width = 600 self.screen_height = 400 #屏幕背景 self.pwd=‘E:\\Python35\\images\\bg.jpg‘ #飛船速度設置 self.ship_speed_factor = 1.5 def bg(self): background = pygame.image.load(self.pwd).convert() return background
Update_Screen.py設置屏幕背景
# -*- coding: gbk -*- __author__ = ‘HZQ‘ import pygame class Update_Screen(): def __init__(self): self.pwd=‘E:\\Python35\\images\\bg.jpg‘ def up_sc(self): background = pygame.image.load(self.pwd).convert()
ship.py設置飛機機器位置屬性
# -*- coding: gbk -*- __author__ = ‘HZQ‘ import pygame class Ship(): def __init__(self,ai_settings,screen): """初始化飛機並設置位子""" self.screen = screen self.ai_settings= ai_settings # 加載飛船圖像並獲取其外接矩形 self.image = pygame.image.load(‘E:\\Python35\\images\\hero.gif‘) 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 #在飛船的屬性center中存儲小數值 self.center = float(self.rect.centerx) self.bottom =float(self.rect.bottom) #移動標誌 self.moving_right =False self.moving_left =False self.moving_up =False self.moving_down =False def update(self): """根據移動標誌調整飛船,不得超出屏幕""" if self.moving_right and self.rect.right < self.screen_rect.right: self.center += self.ai_settings.ship_speed_factor if self.moving_left and self.rect.left > 0: self.center -= self.ai_settings.ship_speed_factor if self.moving_up and self.rect.top > 0: self.bottom -= self.ai_settings.ship_speed_factor if self.moving_down and self.rect.bottom < 600: self.bottom += self.ai_settings.ship_speed_factor #根據self.center/bottom跟新rect self.rect.centerx=self.center self.rect.bottom=self.bottom def blitme(self): """在指定位置繪制飛船""" self.screen.blit(self.image,self.rect)
game_funtions.py 遊戲主功能設置
# -*- coding: gbk -*- __author__ = ‘HZQ‘ import sys import pygame def check_keydown_events(event,ship): if event.key == pygame.K_RIGHT: ship.moving_right=True elif event.key == pygame.K_LEFT: ship.moving_left=True elif event.key == pygame.K_UP: ship.moving_up=True elif event.key == pygame.K_DOWN: ship.moving_down=True def check_keyup_events(event,ship): if event.key == pygame.K_RIGHT: ship.moving_right=False elif event.key == pygame.K_LEFT: ship.moving_left=False elif event.key == pygame.K_UP: ship.moving_up=False elif event.key == pygame.K_DOWN: ship.moving_down=False def check_events(ship): """響應按鍵和鼠標事件""" for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: check_keydown_events(event,ship) elif event.type == pygame.KEYUP: check_keyup_events(event,ship) def update_screen(ai_settings,screen,ship): """更新屏幕上的圖像,並切換到新屏幕""" # 每次循環時都重繪屏幕 #screen.fill(ai_settings.bg_color) ship.blitme() #讓最近繪制屏幕可見 pygame.display.flip() pygame.display.update()
alien_invasion.py 遊戲執行
# -*- coding: gbk -*- __author__ = ‘HZQ‘ import sys import pygame from settings import Settings from ship import Ship import game_functions as gf from update_screen import Update_Screen def run_game(): # 初始化遊戲並創建一個屏幕對象 pygame.init() #創建實例 ai_settings =Settings() screen = pygame.display.set_mode((ai_settings.screen_height, ai_settings.screen_width)) pygame.display.set_caption("星際爭霸") #設置背景顏色 #bg_color =(230,230,230) #創建飛船 ship=Ship(ai_settings,screen) #設置背景圖片 #background = pygame.image.load(ai_settings.pwd).convert() # 開始遊戲的主循環 while True: #監視鍵盤鼠標事件 gf.check_events(ship) ship.update() #每次循環都重繪屏幕 #將背景畫上去 screen.blit(ai_settings.bg(),(0,0)) #讓最近的屏幕可見 gf.update_screen(ai_settings,screen,ship) run_game()
當前實現屏幕繪制,飛機鍵盤按鍵控制上下左右,馬克,待續
python pygame模塊 打飛機遊戲