1. 程式人生 > >python pygame模塊 打飛機遊戲

python pygame模塊 打飛機遊戲

機器 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模塊 打飛機遊戲