成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

jk_v1 / 1014人閱讀

摘要:先看看最后效果圖片的話是從網(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

相關(guān)文章

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

    摘要:題目要求首先放上題目要求游戲編程按以下要求定義一個(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

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

    摘要:的名字并不是規(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): ...

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

    摘要:類其實(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ì)一群具有相同 特征 或者 行為 的...

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

    摘要:我發(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) ...

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

    摘要:案例演示抽象類的成員特點(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)行都看父類。 成員方法:編...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<