摘要:先看看最后效果圖片的話是從網(wǎng)上小魚兒那個(gè)案例里面拿的,實(shí)現(xiàn)的功能如下是通過方向鍵操作烏龜,進(jìn)行吃魚吃魚的時(shí)候根據(jù)烏龜?shù)淖鴺?biāo)和魚的進(jìn)行檢測(cè),在碰撞區(qū)域則干掉這條魚背景音樂和吃魚音樂的播放分?jǐn)?shù)累積魚的平滑游動(dòng)控制幀頻實(shí)現(xiàn)代碼導(dǎo)入一些常用的函數(shù)烏
先看看最后效果
圖片的話是從網(wǎng)上小魚兒那個(gè)案例里面拿的,實(shí)現(xiàn)的功能如下:
是通過方向鍵操作烏龜,進(jìn)行吃魚
吃魚的時(shí)候根據(jù)烏龜?shù)膞,y坐標(biāo)和魚的x,y進(jìn)行檢測(cè),在碰撞區(qū)域則干掉這條魚
背景音樂和吃魚音樂的播放
分?jǐn)?shù)累積
魚的平滑游動(dòng)(控制幀頻)
實(shí)現(xiàn)代碼import random import pygame import sys from pygame.locals import * #導(dǎo)入一些常用的函數(shù) pygame.init() screen=pygame.display.set_mode([640,480]) pygame.display.set_caption("烏龜吃魚") #定義窗口的標(biāo)題為"烏龜吃魚" 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) #成績(jī)文字顯示 count=0 font =pygame.font.SysFont("arial", 40) score = font.render("score %d"%count, True, (255, 255, 255)) w_width = wuguiImg.get_width()-5 #得到烏龜圖片的寬度,后面留著吃魚的時(shí)候用 w_height = wuguiImg.get_height()-5 #得到烏龜圖片的高度 y_width = fishImg.get_width()-5 #得到魚圖片的寬度 y_height = fishImg.get_height()-5 #得到魚圖片的高度 fpsClock=pygame.time.Clock() #創(chuàng)建一個(gè)新的Clock對(duì)象,可以用來跟蹤總共的時(shí)間 #烏龜類 class Turtle: def __init__(self): self.power=100 #體力 #烏龜坐標(biāo) self.x=random.randint(0,500) self.y=random.randint(0,400) #烏龜移動(dòng)的方法:移動(dòng)方向均隨機(jī) 第四條 def move(self,new_x,new_y): #判斷移動(dòng)后是否超出邊界 if new_x<0: self.x=0-new_x elif new_x>640: self.x=640-(new_x-640) else: #不越界則移動(dòng)烏龜?shù)奈恢? self.x=new_x if new_y<0: self.y=0-new_y elif new_y>480: self.y=480-(new_y-480) else: #不越界則移動(dòng)烏龜?shù)奈恢? self.y=new_y self.power-=1 #烏龜每移動(dòng)一次,體力消耗1 def eat(self): self.power+=20 #烏龜吃掉魚,烏龜體力增加20 if self.power>100: self.power=100 #烏龜體力100(上限) #魚類 class Fish: def __init__(self): #魚坐標(biāo) 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 #開始測(cè)試數(shù)據(jù) tur=Turtle() #生成1只烏龜 fish=[] #生成10條魚 for item in range(10): newfish=Fish() fish.append(newfish) #把生成的魚放到魚缸里 #pygame有一個(gè)事件循環(huán),不斷檢查用戶在做什么。事件循環(huán)中,如何讓循環(huán)中斷下來(pygame形成的窗口中右邊的插號(hào)在未定義前是不起作用的) while True: for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit() if event.type == KEYDOWN: #通過上下左右方向鍵控制烏龜?shù)膭?dòng)向 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))#繪制分?jǐn)?shù) #繪制魚 for item in fish: screen.blit(fishImg, (item.x, item.y)) # pygame.time.delay(100) item.move() #魚移動(dòng) screen.blit(wuguiImg, (tur.x, tur.y)) #繪制烏龜 #判斷游戲是否結(jié)束:當(dāng)烏龜體力值為0(掛掉)或者魚兒的數(shù)量為0游戲結(jié)束 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) #通過每幀調(diào)用一次fpsClock.tick(10),這個(gè)程序就永遠(yuǎn)不會(huì)以超過每秒10幀的速度運(yùn)行
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41206.html
摘要:題目要求首先放上題目要求游戲編程按以下要求定義一個(gè)烏龜類和魚類并嘗試編寫游戲假設(shè)游戲場(chǎng)景為范圍為游戲生成只烏龜和條魚它們的移動(dòng)方向均隨機(jī)烏龜?shù)淖畲笠苿?dòng)能力為它可以隨機(jī)選擇還是移動(dòng),魚兒的最大移動(dòng)能力是當(dāng)移動(dòng)到場(chǎng)景邊緣,自動(dòng)向反方向移動(dòng)烏龜初 題目要求 首先放上題目要求: 游戲編程:按以下要求定義一個(gè)烏龜類和魚類并嘗試編寫游戲 假設(shè)游戲場(chǎng)景為范圍(x,y)為0
摘要:的名字并不是規(guī)定死的因?yàn)槭切螀?,也可以使用,但是最好還是按照約定是用。類的私有方法兩個(gè)下劃線開頭,聲明該方法為私有方法,只能在類的內(nèi)部調(diào)用,不能在類地外部調(diào)用。。 類 面向?qū)ο缶幊叹哂腥筇匦裕憾鄳B(tài)、繼承、封裝定義:是一個(gè)抽象的模板對(duì)象:類實(shí)例化屬性:這個(gè)類實(shí)例化后的對(duì)象具有的特征方法:類對(duì)象可以執(zhí)行的函數(shù) 類的定義 class 類名 class People(object): ...
摘要:類其實(shí)就是由屬性和方法組成的一個(gè)抽象概念。類和對(duì)象的關(guān)系類是模板,對(duì)象是根據(jù)類這個(gè)模板創(chuàng)建出來的,應(yīng)該先有類,再有對(duì)象。使用同一個(gè)類,能夠創(chuàng)建出很多對(duì)象。不同對(duì)象對(duì)應(yīng)的屬性值也會(huì)不同。 目錄 類 對(duì)象(實(shí)例) 類中的成員 面向?qū)ο?變量 類 類是對(duì)一群具有相同 特征 或者 行為 的...
摘要:我發(fā)現(xiàn)網(wǎng)上的游戲開發(fā)教程大多是從某種語(yǔ)言或引擎的開發(fā)細(xì)節(jié)入手,而沒有一個(gè)提綱挈領(lǐng)式的整體介紹。碰撞檢測(cè),以及碰撞后的事件響應(yīng)。網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)更新同步等,判定游戲得分及勝負(fù)。這是游戲開發(fā)不可或缺的三個(gè)部分。 電子游戲是許多人喜愛甚至沉迷的事情。尤其對(duì)于程序員來說,開發(fā)游戲是不少人最初學(xué)習(xí)編程的動(dòng)力。在之前,我發(fā)過一些游戲開發(fā)的教程和案例: 爆款游戲《貪吃蛇大作戰(zhàn)》的 Python 實(shí)現(xiàn) ...
摘要:案例演示抽象類的成員特點(diǎn)抽象類的成員方法特性抽象方法強(qiáng)制要求子類做的事情。抽象類中定義的是該繼承體系的共性功能。 1.多態(tài)的概述及其成員訪問特點(diǎn)代碼體現(xiàn) A:多態(tài)(polymorphic)概述 事物存在的多種形態(tài) B:多態(tài)前提- 1.要有繼承關(guān)系 2.要有方法重寫 3.要有父類引用指向子類對(duì)象。 C:多態(tài)中的成員訪問特點(diǎn)之 成員變量:編譯和運(yùn)行都看父類。 成員方法:編...
閱讀 1922·2021-11-09 09:46
閱讀 2496·2019-08-30 15:52
閱讀 2461·2019-08-30 15:47
閱讀 1327·2019-08-29 17:11
閱讀 1752·2019-08-29 15:24
閱讀 3512·2019-08-29 14:02
閱讀 2450·2019-08-29 13:27
閱讀 1212·2019-08-29 12:32