今天學習了一下如何寫飛船大戰
飛船大戰主檔案主要是先例項化飛船和外星人,也就遊戲的主要元素,然後重置遊戲中的主要引數,最後通過乙個迴圈,來不斷檢測
使用者的輸入和跟新飛船、外星人和子彈的狀態。
然後比較關鍵的是三個遊戲元素的類和乙個函式檔案,幾乎所有的函式細節都是由函式檔案所定義,在三個關於遊戲元素的類中,其實只定義了較為關鍵的函式。
整個過程就像是乙個金子塔結構,最上層是遊戲邏輯,中層是遊戲元素的類,最下層是各個函式實現的細節
遊戲具體細節如下:
from setting import settings
from ship import ship
from alien import alien
import game-function as gf
from pygame.sprite import group
from game-status import gamestats
def run_game ():
//建立飛船
//繪製螢幕
//例項化外星人
gf.create-fleet()//建立外星人群
//建立統計資訊例項
stats=gamestats()
while(true):
gf.check-events()
ship.update()
gf.update-bullets(bullets)
gf.update-aliens(aliens)
gf.update-screen()
class ship()//接受screen
def --init–(,screen)
//初使化引數和位置
def blitme()
//繪製飛船
def update():
//移動標誌
//管理事件
//根據move-right和move-left 進行移動
import pygame
from pygame.import s prite
class bullet(sprite):
def --init–():
//初使化子彈位置,顏色等資訊
super().–init–()//繼承sprite
def update():
//移動子彈的位置
def draw-bullet(self):
//在螢幕繪製子彈
import sys
import pygame//管理函式(function),
from bullet import bullet
def check_keydown-events(event,ship):
//響應按下
//判定是否常按,修改moving-right and moving-left
//直接呼叫函式建立子彈
def check-keyup-events(event,ship)
//響應鬆開
//判斷是否鬆開,修改moving-right and moving-lef
def fire-bullet()
//建立一顆子彈
def check-events(ship)
//判斷按鍵呼叫按下和鬆開的函式
def create-fleet()
//建立外星人
def get-number-aliens-x()
def create-alien()
def get-number-rows()
def check-fleet-edges()
//檢測碰撞邊緣
def change-fleet-direction()
//外星人下移,並改變方向
def update-aliens()
aliens.update()
def ship-het()
//檢測飛船和外星人之間的碰撞
def check-aliens-bottom()
//檢測外星人是否碰撞到螢幕底端
def update-bullets():
bullets.update()
//檢查陣列中子彈位置,如果超出螢幕則移出陣列
collision=pygame.sprite.groupcollide()
//檢測子彈和外星人的碰撞
def check-bullet-alien-collisions()
//檢測碰撞
def update-screen(ai-settings,screen,ship):
//更新影象,並切換到新螢幕
//根據中心進行移動,並檢測邊緣
//從陣列中取出子彈,並且生成子彈
//繪製外星人
class settings():
def --init–(self):
//飛船移動速度
//子彈的設定,大小顏色,數量
//加入外星人的設定,移動速度
alien類
import pygame
from pygame.sprite import sprite
class alien(sprite):
def --init–(self)
//初始化外星人的位置
def blitme(self)
//繪製外星人
def update()
//外星人移動
def check-edges()
//檢測外星人是否碰撞到邊緣
class gamestates()
def --init–()
//初始化引數
def reset-stats()
//重置時的統計資訊
Pygame 外星人入侵(7)外星人壓境
二 更加合理地移動 三 小結 在之前的博文中,實現了在螢幕上繪製一大群外星人,現在我們想讓這群外星人動起來,它們的移動遵循著一定的規律。我們首先要實現的是,如何讓一群外星人一起向螢幕右側移動。遊戲引數性質的變數統一存放在 設定模組中的設定類中 6 外星人的屬性 6。1 外星人移動的速度 self.a...
pygame應用 射擊外星人遊戲
一 遊戲功能介紹 1 點選play按鈕,遊戲開始。空格鍵傳送子彈,左右鍵可移動飛船。2 擊中外星人之後,進行得分統計。中間的得分統計顯示的是總的得分統計,不會因遊戲的結束而歸零。右上角的得分統計是一次遊戲的得分統計,點選play按鈕後則重新歸零。3 當外星人碰到飛船或螢幕底端時,遊戲重新開始,三次後...
外星人入侵
今天是乙個週末,宿舍的人全部都出去玩了,而我因為太懶乙個人留在了宿舍,連床都不起,吃飯靠的是點外賣。不過,為了好玩,我跟著書本學習打了乙個2d小遊戲,並加入了一點自己的東西。一 遊戲頁面 剛開始我把所有的遊戲螢幕設定都放在了下面 裡,這使得 看起來非常長,和雜亂,所以為了使遊戲方便擴充套件和整個 邏...