成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

jk_v1 / 1091人閱讀

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

先看看最后效果

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

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

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

背景音樂(lè)和吃魚(yú)音樂(lè)的播放

分?jǐn)?shù)累積

魚(yú)的平滑游動(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("烏龜吃魚(yú)") #定義窗口的標(biāo)題為"烏龜吃魚(yú)"
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()

#烏龜吃掉小魚(yú)的音樂(lè)  mp3格式的不行,wav格式的
eatsound = pygame.mixer.Sound("C:UsersAdministratorDesktopachievement.wav")
#背景音樂(lè)
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 #得到烏龜圖片的寬度,后面留著吃魚(yú)的時(shí)候用
w_height = wuguiImg.get_height()-5 #得到烏龜圖片的高度

y_width = fishImg.get_width()-5 #得到魚(yú)圖片的寬度
y_height = fishImg.get_height()-5 #得到魚(yú)圖片的高度

fpsClock=pygame.time.Clock() #創(chuàng)建一個(gè)新的Clock對(duì)象,可以用來(lái)跟蹤總共的時(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 #烏龜吃掉魚(yú),烏龜體力增加20
        if self.power>100:
            self.power=100 #烏龜體力100(上限)
#魚(yú)類
class Fish:
    def __init__(self):
        #魚(yú)坐標(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                

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

#pygame有一個(gè)事件循環(huán),不斷檢查用戶在做什么。事件循環(huán)中,如何讓循環(huán)中斷下來(lái)(pygame形成的窗口中右邊的插號(hào)在未定義前是不起作用的)
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
        if event.type == KEYDOWN:   
            #通過(guò)上下左右方向鍵控制烏龜?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ù)
    #繪制魚(yú)
    for item in fish:
        screen.blit(fishImg, (item.x, item.y))
        # pygame.time.delay(100)
        item.move() #魚(yú)移動(dòng)
    screen.blit(wuguiImg, (tur.x, tur.y)) #繪制烏龜
    #判斷游戲是否結(jié)束:當(dāng)烏龜體力值為0(掛掉)或者魚(yú)兒的數(shù)量為0游戲結(jié)束
    if tur.power<0 or len(fish)==0:
        print("Game Over ~")
        sys.exit()
    for item in fish:
        # print("魚(yú)",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() #烏龜吃魚(yú)的方法
            fish.remove(item) #魚(yú)死掉
            #吃魚(yú)音樂(lè)
            eatsound.play()
            count=count+1 #累加
            score = font.render("score %d"%count, True, (255, 255, 255))
            print("死了一只魚(yú)")
            print("烏龜最新體力值為 %d"%tur.power)

    pygame.display.update() #更新到游戲窗口
    fpsClock.tick(10) #通過(guò)每幀調(diào)用一次fpsClock.tick(10),這個(gè)程序就永遠(yuǎn)不會(huì)以超過(guò)每秒10幀的速度運(yùn)行

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41206.html

相關(guān)文章

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

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

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

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

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

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

    wenzi 評(píng)論0 收藏0
  • 你的游戲開(kāi)發(fā)第0課

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

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

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

    dunizb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<