您好,登錄后才能下訂單哦!
python如何做出游戲?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
你有沒有想過電腦游戲是怎樣制作出來的?其實它沒有你想象的那樣復雜!
PyGame是一個Python的庫,能夠讓你更容易的寫出一個游戲。它提供的功能包括圖片處理和聲音重放的功能,并且它們能很容易的整合進你的游戲里。去官網點擊這里下載適合你的PyGame安裝包。
我們就拿打飛機來做個例子
1 .創建游戲框架以及游戲背景
#這個模塊放一些常用的工具和基礎類和精靈類 #在其他模塊調用 import pygame import random #設置游戲屏幕大小 這是一個常量 SCREEN_RECT = pygame.Rect(0,0,580,700) #敵機的定時器事件常量 CREATE_ENEMY_EVENT = pygame.USEREVENT #定制一個精靈類,需要繼承pygame提供的精靈類 #需要定義的屬性有: #image圖片 #rect坐標 #speed速度 #接下來開始寫敵機方面的內容 產生敵機 #先定義一個事件常量 CREATE_ENEMY_EVENT = pygame.USEREVENT #我們還可以定義一個事件常量(發射子彈) HERO_FIRE_EVENT = pygame.USEREVENT + 1 class GameSprite(pygame.sprite.Sprite): def __init__(self,new_image,new_speed=1): super().__init__() #圖片 self.image = pygame.image.load(new_image) #速度 self.speed = new_speed #位置 獲取圖片的寬和高 get_rect()(0,0,寬,高) self.rect = self.image.get_rect() #精靈移動的速度 包括英雄精靈 背景精靈 敵機精靈 子彈精靈 self.speed = new_speed def update(self): #默認垂直方向移動 y軸控制垂直方向 self.rect.y += self.speed #self.rect.x += 1 #以上是游戲的基礎類,接下來設置背景類 #明確背景類繼承自游戲的精靈類 class Background(GameSprite): def __init__(self,is_alt = False): #is_alt判斷是否為另一張圖像 #False表示第一張圖像 #Ture表示另外一張圖像 #兩張圖像交替循環 #傳圖片 super().__init__("/home/zhangyuan/下載/beijing.png") if is_alt: #如果是第二張圖片 初始位置為-self.rect.height self.rect.y = -self.rect.height #def __init__(self,new_image): # super().init__(new_image) def update(self): #調用父類方法 super().update() if self.rect.y >= SCREEN_RECT.height: self.rect.y = -self.rect.height
2 .創建敵機精靈
class Enemy(GameSprite): def __init__(self): super().__init__("/home/zhangyuan/images/enemy1.png") #隨機速度 self.speed = random.randint(10, 15) #設置敵機的初始位置 self.rect.left = SCREEN_RECT.width max_ = SCREEN_RECT.height -self.rect.height self.rect.bottom = random.randint(0, max_) def update(self): panduan = random.randint(0, 1) if panduan == 0: self.rect.y -= self.speed self.rect.x -= self.speed else: self.rect.y += self.speed self.rect.x -= self.speed #判斷敵機是否飛出屏幕 如果飛出屏幕將敵機從精靈組刪除 if self.rect.y >= SCREEN_RECT.height or self.rect.right <=0 or self.rect.bottom <=0: self.kill()
3 .創建英雄精靈
class Bullet(GameSprite): def __init__(self): super().__init__("/home/zhangyuan/images/bullet1.png",-5) def update(self): super().update() #判斷是否超出屏幕 如果是 從精靈組刪除 if self.rect.bottom < 0: self.kill()
5 .碰撞檢測
#第一個參數和第二個參數是要參與碰撞檢測的精靈 #第三個參數為Ture的時候 就是當碰撞的時候被碰撞的精靈從精靈組移除 pygame.sprite.groupcollide( self.enemy_group,self.hero.bullet, True, True)#子彈 #判斷列表時候有內容 if len(enemies)>0: #讓英雄犧牲 self.hero.kill() #結束游戲 PlaneGame.__game_over() @staticmethod def __game_over(): print("游戲結束") #這是pygame提供的卸載模塊功能 pygame.quit() #這是pygame本身提供的退出腳本的功能 exit() #需要先卸載pygame模塊 然后退出腳本 if __name__ == "__main__": game = PlaneGame() game.star_game()
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。