手講解超詳細python入門游戲專案‘打外星飛船’手把(一)
由于內容比較多,這里會分為五篇文章來講解,從頁面的創建、飛船控制、射擊、外星人創建、射殺外星人五片來展開,
做一個視窗和設定回應用戶
import sys
import pygame
''' '''
""" 我們先創建一個新的檔案,保存的名字就叫做主函式吧,main.py,首先我們應該匯入兩個模塊sys和pygame,pygame是用來開發游戲所需要的功能的,sys是我們退出的時候,我們需要用到的 """"
from settings import Settings
#這個是我們在后面創建一個settings用來管理設定,后年會補充
class AlienInvasion:
"""我們先創建一個類,用它來管理游戲資源和行為的類,"""
def __init__(self):
"""這個我們開始游戲的主回圈"""
pygame.init()
#在這個類中,我們先定義一個函式,呼叫函式pygame.init()初始化背景設定,讓他能夠正常的作業
self.settings = Settings()
self.screen = pygame.display.set_mode(
(self.settings.screen_width, self.settings.screen_height))
#在主程式檔案中打入settings類呼叫pygames in it(),創建一個settings實力并付給self.settings,這個時候我們把它的屬性寬度和高度復給主函式
pygame.display.set_caption("Alien Invasion")
def run_game(self):
"""開始游戲的主回圈了,在這個回圈中,我們不斷的進行一個回圈,并且管理螢屏更新的代碼,比如說按鍵或移動滑鼠的時候就是要回應一次,作為一次回應事件,就是一個回圈,
"""
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
#在回圈中,如果我們檢測到了退出的指令,我們就用 sys.exit()來退出
self.screen.fill(self.settings.bg_color)
#呼叫方法fill(),用這種背景色填充螢屏,方法fill()用于處理surface只接受一個實參一種顏色
pygame.display.flip()
# 讓最近繪制的螢屏可見,在這里我們通過不斷的回圈都會繪制一個空的螢屏,并且插去就的螢屏,所以讓新的螢屏可見就行,成了影片
if __name__ == '__main__':
# 創建游戲實體,并且開始運行游戲
ai = AlienInvasion()
ai.run_game()
這里重新建立一個檔案,可以命名為settings.py
class Settings:
"""我們開始撰寫一個名為settings的模塊,在這個模塊中,所有的設定都儲存在這里,以免在代碼中到處添加設定,創建另外一個檔案,命名為settings.py,
"""
def __init__(self):
"""這里我們建立一個函式"""
# 如果只是一個默認的螢屏,就太沒有意思了,在現在我們把螢屏的顏色改成白色
顏色是由RGB指定的,比如說255,0,0表示紅色;0,255,0表示綠色;這里我們把背景色設為白色
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (230, 230, 230)
這里重新建立一個檔案,可以命名為ship.py,我們在這里會先創立一ship的模塊.,我們用這個模塊來管理飛船的大部分行為,
import pygame
class Ship:
"""管理飛船的類"""
def __init__(self, ai_game):
"""初始化飛船并且初始化的他的位置"""
self.screen = ai_game.screen
#在定義這個類之前,我要匯入模塊pygame
在一處的話,將螢屏付給了sheep的一個屬性,方便這個類的所有方法后面的輕松訪問
self.screen_rect = ai_game.screen.get_rect()
# 加載飛船影像
self.image = pygame.image.load('images/ship.bmp')
#在這里我們需要把飛船的影像添加進去,一般來說,影像的格式都是JPG和GIF多一點在這里我們用的是bmp的格式. 我把飛船的圖片放在下面,注意在你建立檔案的時候,一定要把圖片放在一個名為images的檔案夾下,并且我其他專案是同一個檔案夾,
self.rect = self.image.get_rect()
self.rect.midbottom = self.screen_rect.midbottom
#我們都把它放在螢屏底部的中央因為這里我們要把非常放在底部的中央,所以我們應該用的屬性叫做 midbottom
def blitme(self):
self.screen.blit(self.image, self.rect)
#現在我們要把這個飛船的影像呼叫出來,括號里面的是非常的位置
這個是我們要匯入的圖片

這個是我們最終建立好的游戲界面

參考文獻
python從入門到實踐–埃里克.馬瑟斯
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/254834.html
標籤:其他
上一篇:Educational Codeforces Round 103 (Rated for Div. 2) D Journey
