摘要:先看看最后效果圖片的話是從網上小魚兒那個案例里面拿的,實現的功能如下是通過方向鍵操作烏龜,進行吃魚吃魚的時候根據烏龜的坐標和魚的進行檢測,在碰撞區域則干掉這條魚背景音樂和吃魚音樂的播放分數累積魚的平滑游動控制幀頻實現代碼導入一些常用的函數烏
先看看最后效果
圖片的話是從網上小魚兒那個案例里面拿的,實現的功能如下:
是通過方向鍵操作烏龜,進行吃魚
吃魚的時候根據烏龜的x,y坐標和魚的x,y進行檢測,在碰撞區域則干掉這條魚
背景音樂和吃魚音樂的播放
分數累積
魚的平滑游動(控制幀頻)
實現代碼import random import pygame import sys from pygame.locals import * #導入一些常用的函數 pygame.init() screen=pygame.display.set_mode([640,480]) pygame.display.set_caption("烏龜吃魚") #定義窗口的標題為"烏龜吃魚" background = pygame.image.load("C:UsersAdministratorDesktopgameimageshaidi.jpg").convert() fishImg = pygame.image.load("C:UsersAdministratorDesktopgameimagesfish.png").convert_alpha() wuguiImg = pygame.image.load("C:UsersAdministratorDesktopgameimages urtle.png").convert_alpha() #烏龜吃掉小魚的音樂 mp3格式的不行,wav格式的 eatsound = pygame.mixer.Sound("C:UsersAdministratorDesktopachievement.wav") #背景音樂 pygame.mixer.music.load("C:UsersAdministratorDesktopgame_music.mp3") pygame.mixer.music.play(loops=0, start=0.0) #成績文字顯示 count=0 font =pygame.font.SysFont("arial", 40) score = font.render("score %d"%count, True, (255, 255, 255)) w_width = wuguiImg.get_width()-5 #得到烏龜圖片的寬度,后面留著吃魚的時候用 w_height = wuguiImg.get_height()-5 #得到烏龜圖片的高度 y_width = fishImg.get_width()-5 #得到魚圖片的寬度 y_height = fishImg.get_height()-5 #得到魚圖片的高度 fpsClock=pygame.time.Clock() #創建一個新的Clock對象,可以用來跟蹤總共的時間 #烏龜類 class Turtle: def __init__(self): self.power=100 #體力 #烏龜坐標 self.x=random.randint(0,500) self.y=random.randint(0,400) #烏龜移動的方法:移動方向均隨機 第四條 def move(self,new_x,new_y): #判斷移動后是否超出邊界 if new_x<0: self.x=0-new_x elif new_x>640: self.x=640-(new_x-640) else: #不越界則移動烏龜的位置 self.x=new_x if new_y<0: self.y=0-new_y elif new_y>480: self.y=480-(new_y-480) else: #不越界則移動烏龜的位置 self.y=new_y self.power-=1 #烏龜每移動一次,體力消耗1 def eat(self): self.power+=20 #烏龜吃掉魚,烏龜體力增加20 if self.power>100: self.power=100 #烏龜體力100(上限) #魚類 class Fish: def __init__(self): #魚坐標 self.x=random.randint(0,500) self.y=random.randint(0,400) def move(self): new_x=self.x+random.choice([-10]) if new_x<0: self.x=650 else: self.x=new_x #開始測試數據 tur=Turtle() #生成1只烏龜 fish=[] #生成10條魚 for item in range(10): newfish=Fish() fish.append(newfish) #把生成的魚放到魚缸里 #pygame有一個事件循環,不斷檢查用戶在做什么。事件循環中,如何讓循環中斷下來(pygame形成的窗口中右邊的插號在未定義前是不起作用的) while True: for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit() if event.type == KEYDOWN: #通過上下左右方向鍵控制烏龜的動向 if event.key==pygame.K_LEFT: tur.move(tur.x-10,tur.y) if event.key==pygame.K_RIGHT: tur.move(tur.x+10,tur.y) if event.key==pygame.K_UP: tur.move(tur.x,tur.y-10) if event.key==pygame.K_DOWN: tur.move(tur.x,tur.y+10) screen.blit(background, (0, 0)) #繪制背景圖片 screen.blit(score,(500,20))#繪制分數 #繪制魚 for item in fish: screen.blit(fishImg, (item.x, item.y)) # pygame.time.delay(100) item.move() #魚移動 screen.blit(wuguiImg, (tur.x, tur.y)) #繪制烏龜 #判斷游戲是否結束:當烏龜體力值為0(掛掉)或者魚兒的數量為0游戲結束 if tur.power<0 or len(fish)==0: print("Game Over ~") sys.exit() for item in fish: # print("魚",item.x,item.y,y_width,y_height) # print("烏龜",tur.x,tur.y,w_width,w_height) if ((tur.x < item.x + y_width) and (tur.x + w_width > item.x) and (tur.y < item.y + y_height) and (w_height + tur.y > item.y)) : tur.eat() #烏龜吃魚的方法 fish.remove(item) #魚死掉 #吃魚音樂 eatsound.play() count=count+1 #累加 score = font.render("score %d"%count, True, (255, 255, 255)) print("死了一只魚") print("烏龜最新體力值為 %d"%tur.power) pygame.display.update() #更新到游戲窗口 fpsClock.tick(10) #通過每幀調用一次fpsClock.tick(10),這個程序就永遠不會以超過每秒10幀的速度運行
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41206.html
摘要:題目要求首先放上題目要求游戲編程按以下要求定義一個烏龜類和魚類并嘗試編寫游戲假設游戲場景為范圍為游戲生成只烏龜和條魚它們的移動方向均隨機烏龜的最大移動能力為它可以隨機選擇還是移動,魚兒的最大移動能力是當移動到場景邊緣,自動向反方向移動烏龜初 題目要求 首先放上題目要求: 游戲編程:按以下要求定義一個烏龜類和魚類并嘗試編寫游戲 假設游戲場景為范圍(x,y)為0
摘要:的名字并不是規定死的因為是形參,也可以使用,但是最好還是按照約定是用。類的私有方法兩個下劃線開頭,聲明該方法為私有方法,只能在類的內部調用,不能在類地外部調用。。 類 面向對象編程具有三大特性:多態、繼承、封裝定義:是一個抽象的模板對象:類實例化屬性:這個類實例化后的對象具有的特征方法:類對象可以執行的函數 類的定義 class 類名 class People(object): ...
摘要:類其實就是由屬性和方法組成的一個抽象概念。類和對象的關系類是模板,對象是根據類這個模板創建出來的,應該先有類,再有對象。使用同一個類,能夠創建出很多對象。不同對象對應的屬性值也會不同。 目錄 類 對象(實例) 類中的成員 面向對象 變量 類 類是對一群具有相同 特征 或者 行為 的...
摘要:我發現網上的游戲開發教程大多是從某種語言或引擎的開發細節入手,而沒有一個提綱挈領式的整體介紹。碰撞檢測,以及碰撞后的事件響應。網絡請求數據更新同步等,判定游戲得分及勝負。這是游戲開發不可或缺的三個部分。 電子游戲是許多人喜愛甚至沉迷的事情。尤其對于程序員來說,開發游戲是不少人最初學習編程的動力。在之前,我發過一些游戲開發的教程和案例: 爆款游戲《貪吃蛇大作戰》的 Python 實現 ...
摘要:案例演示抽象類的成員特點抽象類的成員方法特性抽象方法強制要求子類做的事情。抽象類中定義的是該繼承體系的共性功能。 1.多態的概述及其成員訪問特點代碼體現 A:多態(polymorphic)概述 事物存在的多種形態 B:多態前提- 1.要有繼承關系 2.要有方法重寫 3.要有父類引用指向子類對象。 C:多態中的成員訪問特點之 成員變量:編譯和運行都看父類。 成員方法:編...
閱讀 1904·2021-11-09 09:46
閱讀 2486·2019-08-30 15:52
閱讀 2445·2019-08-30 15:47
閱讀 1320·2019-08-29 17:11
閱讀 1745·2019-08-29 15:24
閱讀 3500·2019-08-29 14:02
閱讀 2441·2019-08-29 13:27
閱讀 1198·2019-08-29 12:32