外星人遊戲

2021-10-02 04:08:57 字數 2851 閱讀 7459

今天學習了一下如何寫飛船大戰

飛船大戰主檔案主要是先例項化飛船和外星人,也就遊戲的主要元素,然後重置遊戲中的主要引數,最後通過乙個迴圈,來不斷檢測

使用者的輸入和跟新飛船、外星人和子彈的狀態。

然後比較關鍵的是三個遊戲元素的類和乙個函式檔案,幾乎所有的函式細節都是由函式檔案所定義,在三個關於遊戲元素的類中,其實只定義了較為關鍵的函式。

整個過程就像是乙個金子塔結構,最上層是遊戲邏輯,中層是遊戲元素的類,最下層是各個函式實現的細節

遊戲具體細節如下:

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小遊戲,並加入了一點自己的東西。一 遊戲頁面 剛開始我把所有的遊戲螢幕設定都放在了下面 裡,這使得 看起來非常長,和雜亂,所以為了使遊戲方便擴充套件和整個 邏...