Python实现王思聪吃热狗
功能描述
本游戲要完成開始界面和游戲界面的實現和切換。實現熱狗、王思聰和玩家飛機的碰撞檢測檢測。為消失的王思聰添加爆炸效果為消失的飛機添加爆炸效果。
首先得在網上找到王思聰圖像和飛機、熱狗、背景圖,音效,首先要創建窗口和并插入背景圖片,實現背景圖像的無縫交替,判斷是否飛機和王思聰是否移出屏幕,指定飛機和王思聰的初始位置、初始速度和初始血量,響應按鍵實現玩家飛機發射子彈,碰撞檢測實現熱狗消滅王思聰。
系統功能概況
(1)搭建Pygame開發環境;
(2)實現開始界面,設置游戲聲音和背景;
(3)實現游戲界面;
(4)實現玩家飛機的顯示和銷毀,控制移動;
(5)實現王思聰的隨機顯示和銷毀;
(6)實現熱狗的顯示和銷毀、移動;
(7)實現界面的實時刷新;
(8)實現玩家分數記錄;
(9)實現王思聰被擊中后的爆炸效果;
(10)實現背景音樂。
開始界面
??? 首先創建一個開始界面類,在這個類中創建它的構造函數。實現開始界面圖片集合,定義屏幕窗口大小:
screen=pygame.display.set_mode((480,750))
?????? 實現背景圖片:將加載到內存的圖片繪制到屏幕指定的位置, 將背景圖片繪制到屏幕,繪制就調用屏幕對象的blit方法,刷新屏幕顯示,否則繪制的圖片無法顯示,添加文字顯示游戲名稱和制作人信息,實現開始按鈕圖片,判斷鼠標是否在按鈕范圍,區域檢測,如果玩家鼠標點擊按鈕,進入游戲界面,即調用游戲界面類的Show()方法,并讓isPlay置位True。
?
創建游戲界面類,并實現其構造函數,當玩家鼠標點擊開始界面中的開始游戲按鈕,調用游戲界面
實現背景圖片的無縫銜接:
self.rect1=self.rect1.move(0,self.speed)
self.rect2=self.rect2.move(0,self.speed)
if self.rect1.y>=720:
???? self.rect1.y=self.rect2.y-768
? if self.rect2.y>=720:
????? self.rect2.y=self.rect1.y-768
self.screen.blit(self.image1,self.rect1)
self.screen.blit(self.image2,self.rect2)
?????? 設置字體并在屏幕左上角顯示玩家分數和血量:
myFont=pygame.font.Font("font/Marker Felt.ttf",30)
創建玩家飛機
?????? 創建玩家飛機類,并實現其構造函數,顯示玩家飛機圖片,指定玩家飛機初始位置為屏幕的下側中間的位置、初始速度為1和初始血量為1,初始分數為1,當熱狗擊中王思聰時,分數加10。
??? 監聽用戶做的各種操作,響應按鍵實現玩家飛機移動:當玩家按下鍵盤上的a鍵,飛機向左移動;當玩家按下鍵盤上的d鍵,飛機向右移動;當玩家按下鍵盤上的w鍵,飛機向上移動;當玩家按下鍵盤上的s鍵,飛機向下移動:
if i.type==pygame.KEYDOWN:
?????? if i.key==pygame.K_a:
??????? Hero.left=True
?????? ......
?????? 發射熱狗,即調用熱狗類的Show()方法。
?????? 碰撞檢測,當玩家飛機碰到王思聰時。銷毀玩家飛機,返回開始界面。
創建王思聰
??? 創建王思聰類,并實現其構造函數,顯示王思聰圖片,使用隨機函數random()指定王思聰隨機位置和出現頻率,并設置初始速度為1和初始血量為1,如圖3-5所示:
圖3-5 王思聰
?????? 實現碰撞檢測,當熱狗擊中王思聰時,讓王思聰血量減一,即執行死亡動畫,動畫就是將多張靜止的圖片快速的播放,這里就涉及到幀數的問題,一般每秒60刷新60次就能制作高品質的動畫。這里我將王思聰圖像緩慢替換為死亡圖片,并銷毀王思聰和熱狗:
self.screen.blit(self.imgs[self.deadIndex],self.rect)
self.deadAdd+=1
if self.deadAdd==30:
???? self.deadIndex+=1
if self.deadIndex==len(self.imgs):
????? sounds[0].play()
????? heroObj.score+=10 # 加分
????? if self in enemyList:
?????? enemyList.remove(self)
? self.deadAdd=0
如圖所示:
?
創建熱狗
?????? 創建熱狗類,并實現其構造函數,獲取玩家飛機位置,在玩家飛機的上面出現,并向上移動,當熱狗擊中王思聰時,將王思聰圖像緩慢替換為死亡圖片,并銷毀熱狗:
if self.rect.y<=-20:
???? if self in bulletList:
????????? bulletList.remove(self)
self.screen.blit(self.image,self.rect)
如圖所示:
?
?????? 最終效果如圖3-7所示:
總結
以上是生活随笔為你收集整理的Python实现王思聪吃热狗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eplan2.7 安装教程
- 下一篇: 51单片机倒计时蜂鸣器c语言,基于51单