基于pygame的射击小游戏制作(一)让飞船动起来
生活随笔
收集整理的這篇文章主要介紹了
基于pygame的射击小游戏制作(一)让飞船动起来
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于pygame的射擊小游戲制作(一)讓飛船動起來
一.文件結構
二、源代碼
alien_invasion.py
import sys #退出游戲 import pygame #包含開發所需功能 from settings import Settings from ship import Ship 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")"""創建一艘飛船"""ship = Ship(ai_settings, screen)"""設置背景色"""bg_color = (230,230,230)"""游戲主循環"""while True:"""監視鍵鼠事件"""gf.check_events(ship)ship.update()gf.update_screen(ai_settings, screen, ship) run_game()game_functions.py
import sys import pygame 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 check_keydown_events(event, ship):"""響應按鍵"""if event.key == pygame.K_RIGHT:# 向右移動飛船ship.moving_right = Trueelif event.key == pygame.K_LEFT:ship.moving_left = Truedef check_keyup_events(event, ship):if event.key == pygame.K_RIGHT:ship.moving_right = Falseelif event.key == pygame.K_LEFT:ship.moving_left = 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.bottom = self.screen_rect.bottom"""在飛船的屬性center中存儲最小數值"""self.center = float(self.rect.centerx)"""#移動標志"""self.moving_right = Falseself.moving_left = Falsedef update(self):"""根據移動標志調整飛船的位置"""#更新飛船的center值,而不是rectif 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_factor#根據self.center更新rect對象self.rect.centerx = self.centerdef 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三、執行效果
總結
以上是生活随笔為你收集整理的基于pygame的射击小游戏制作(一)让飞船动起来的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php多表递归查询,使用公用表表达式的递
- 下一篇: 【Java深入理解】String str