亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python面向?qū)ο缶毩?xí)-通過pygame改良烏龜吃魚

jk_v1 / 1115人閱讀

摘要:先看看最后效果圖片的話是從網(wǎng)上小魚兒那個案例里面拿的,實現(xiàn)的功能如下是通過方向鍵操作烏龜,進(jìn)行吃魚吃魚的時候根據(jù)烏龜?shù)淖鴺?biāo)和魚的進(jìn)行檢測,在碰撞區(qū)域則干掉這條魚背景音樂和吃魚音樂的播放分?jǐn)?shù)累積魚的平滑游動控制幀頻實現(xiàn)代碼導(dǎo)入一些常用的函數(shù)烏

先看看最后效果

圖片的話是從網(wǎng)上小魚兒那個案例里面拿的,實現(xiàn)的功能如下:

是通過方向鍵操作烏龜,進(jìn)行吃魚

吃魚的時候根據(jù)烏龜?shù)膞,y坐標(biāo)和魚的x,y進(jìn)行檢測,在碰撞區(qū)域則干掉這條魚

背景音樂和吃魚音樂的播放

分?jǐn)?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)
#成績文字顯示
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() #創(chuàng)建一個新的Clock對象,可以用來跟蹤總共的時間
#烏龜類
class Turtle:
    def __init__(self):
        self.power=100 #體力
        #烏龜坐標(biāo)
        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:
            #不越界則移動烏龜?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:
            #不越界則移動烏龜?shù)奈恢?            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):
        #魚坐標(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                

#開始測試數(shù)據(jù)
tur=Turtle() #生成1只烏龜
fish=[] #生成10條魚
for item in range(10):
    newfish=Fish()
    fish.append(newfish) #把生成的魚放到魚缸里

#pygame有一個事件循環(huán),不斷檢查用戶在做什么。事件循環(huán)中,如何讓循環(huán)中斷下來(pygame形成的窗口中右邊的插號在未定義前是不起作用的)
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
        if event.type == KEYDOWN:   
            #通過上下左右方向鍵控制烏龜?shù)膭酉?  
            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() #魚移動
    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),這個程序就永遠(yuǎn)不會以超過每秒10幀的速度運行

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/41206.html

相關(guān)文章

  • Python面向對象練習(xí)-烏龜吃魚

    摘要:題目要求首先放上題目要求游戲編程按以下要求定義一個烏龜類和魚類并嘗試編寫游戲假設(shè)游戲場景為范圍為游戲生成只烏龜和條魚它們的移動方向均隨機烏龜?shù)淖畲笠苿幽芰樗梢噪S機選擇還是移動,魚兒的最大移動能力是當(dāng)移動到場景邊緣,自動向反方向移動烏龜初 題目要求 首先放上題目要求: 游戲編程:按以下要求定義一個烏龜類和魚類并嘗試編寫游戲 假設(shè)游戲場景為范圍(x,y)為0

    劉福 評論0 收藏0
  • python大佬養(yǎng)成計劃--面向對象

    摘要:的名字并不是規(guī)定死的因為是形參,也可以使用,但是最好還是按照約定是用。類的私有方法兩個下劃線開頭,聲明該方法為私有方法,只能在類的內(nèi)部調(diào)用,不能在類地外部調(diào)用。。 類 面向?qū)ο缶幊叹哂腥筇匦裕憾鄳B(tài)、繼承、封裝定義:是一個抽象的模板對象:類實例化屬性:這個類實例化后的對象具有的特征方法:類對象可以執(zhí)行的函數(shù) 類的定義 class 類名 class People(object): ...

    hzc 評論0 收藏0
  • 不用看網(wǎng)課就能學(xué)到python的文章(第五天)

    摘要:類其實就是由屬性和方法組成的一個抽象概念。類和對象的關(guān)系類是模板,對象是根據(jù)類這個模板創(chuàng)建出來的,應(yīng)該先有類,再有對象。使用同一個類,能夠創(chuàng)建出很多對象。不同對象對應(yīng)的屬性值也會不同。 目錄 類 對象(實例) 類中的成員 面向?qū)ο?變量 類 類是對一群具有相同 特征 或者 行為 的...

    wenzi 評論0 收藏0
  • 你的游戲開發(fā)第0課

    摘要:我發(fā)現(xiàn)網(wǎng)上的游戲開發(fā)教程大多是從某種語言或引擎的開發(fā)細(xì)節(jié)入手,而沒有一個提綱挈領(lǐng)式的整體介紹。碰撞檢測,以及碰撞后的事件響應(yīng)。網(wǎng)絡(luò)請求數(shù)據(jù)更新同步等,判定游戲得分及勝負(fù)。這是游戲開發(fā)不可或缺的三個部分。 電子游戲是許多人喜愛甚至沉迷的事情。尤其對于程序員來說,開發(fā)游戲是不少人最初學(xué)習(xí)編程的動力。在之前,我發(fā)過一些游戲開發(fā)的教程和案例: 爆款游戲《貪吃蛇大作戰(zhàn)》的 Python 實現(xiàn) ...

    williamwen1986 評論0 收藏0
  • Java編程基礎(chǔ)10——面向對象_多態(tài)&抽象類&接口

    摘要:案例演示抽象類的成員特點抽象類的成員方法特性抽象方法強制要求子類做的事情。抽象類中定義的是該繼承體系的共性功能。 1.多態(tài)的概述及其成員訪問特點代碼體現(xiàn) A:多態(tài)(polymorphic)概述 事物存在的多種形態(tài) B:多態(tài)前提- 1.要有繼承關(guān)系 2.要有方法重寫 3.要有父類引用指向子類對象。 C:多態(tài)中的成員訪問特點之 成員變量:編譯和運行都看父類。 成員方法:編...

    dunizb 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<