中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么實現大魚吃小魚游戲

發布時間:2022-04-01 11:14:43 來源:億速云 閱讀:541 作者:iii 欄目:開發技術

這篇文章主要介紹“Python怎么實現大魚吃小魚游戲”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python怎么實現大魚吃小魚游戲”文章能幫助大家解決問題。

一.游戲畫面

Python怎么實現大魚吃小魚游戲

二.游戲素材

Python怎么實現大魚吃小魚游戲

Python怎么實現大魚吃小魚游戲

Python怎么實現大魚吃小魚游戲

Python怎么實現大魚吃小魚游戲

Python怎么實現大魚吃小魚游戲

Python怎么實現大魚吃小魚游戲

Python怎么實現大魚吃小魚游戲

三.程序介紹

大魚吃小魚.py

注意程序的mouth對象,它并不是"隱藏"的,雖然它看不見。

小魚碰到mouth會被“吃掉”。如果把mouth用hide命令設為隱藏,那么是無法獲取到mouth的綁定盒,從而碰撞檢測失效。

四.游戲代碼

1.精靈對象。這個函數計算矩形下右角的一個坐標并返回它

from sprites import *

def calculate_pos(obj):
    """obj:精靈對象。這個函數計算矩形下右角的一個坐標并返回它。

    """    
    x,y = obj.position()              # 角色的坐標
    mx,my = mouse_position()          # 鼠標指針的坐標
    k = 1 if mx > x else -1           # 在右則為1,否則為-1
    left,top,right,bottom = obj.bbox()# 獲取綁定盒
    w = right-left                    # 大魚的寬度
    h = top - bottom                  # 大魚的高度
    x0 = x + k * w//2.5               # 嘴巴大概的x坐標
    y0 = y - h//12                    # 嘴巴大概的y坐標
    return x0,y0

2.設置游戲屬性

width,height = 480,360                
screen = Screen()                     # 新建寬高
screen.setup(width,height)            # 設置寬高 
screen.bgpic('res/underwater.png')    # 設背景圖
screen.title("圖靈大海之大魚吃小魚")

3.游戲對象

fish_group = Group(tag='fish')        # 新建組,標簽為fish
fishes = ['res/fish2.png','res/fish3.png','res/fish4.png','res/crab-b.png']
# 由于下面的魚的標簽都是fish,所以會自動加入到fish_group中
for x in range(10):
     x = random.randint(-200,200)
     y = random.randint(-140,140)
     f = Sprite(shape=random.choice(fishes),tag='fish',pos=(x,y))
     f.scale(0.5)
[fish.setheading(random.randint(1,360)) for fish in fish_group]
 
m1 = Mouse(1)                        # 鼠標左鍵
fish = Sprite('res/fish2-a.png')     # 實例化大魚
fish.rotatemode(1)                   # 左右翻轉 
fishscale= 0.6
fish.scale(fishscale)
mouth = Sprite(shape='circle')       # 實例化嘴巴,用于碰撞檢測
mouthscale = 0.4
mouth.scale(mouthscale)              # 縮放嘴巴大小
mouth.setalpha(0)                    # 把它設為透明,改為非0它會顯示出來
clock = Clock()                      # 新建時鐘對象

4.游戲動態效果

while True:
    for f in fish_group:
        if f.isvisible():f.fd(1)     # 在可見的情況下才移動
        # 小魚碰到嘴巴及單擊鼠標則被吃掉,大魚長大
        if f.collide(mouth,0.5) and m1.down() :
            fishscale += 0.01
            fish.scale(fishscale)     # 大魚長大
            mouthscale += 0.01
            mouth.scale(mouthscale)   # 嘴巴跟著加大
            x = random.randint(-200,200)
            y = random.randint(-140,140)
            # 注意這里調用了reborn后,魚會立即隱藏,3后后出現
            # 在3秒內碰撞檢測無效,所以魚不能動
            f.reborn(x,y,delay=3)
            f.shape(random.choice(fishes))            
        f.bounce_on_edge()
        
    fish.heading(mouse_pos())        # 大魚跟隨鼠標指針
    x0,y0 = calculate_pos(fish)      # 計算嘴巴的大概坐標
    mouth.goto(x0,y0)                # 嘴巴大這個坐標 
    md =  fish.distance(mouse_pos()) # 計算魚到鼠標指針距離
    if md > 50:fish.fd(min(md,4))    # 如果距離大于50則游

    # 張嘴與合嘴
    if m1.down():
        fish.shape('res/fish2-a.png')
    else:
        fish.shape('res/fish2-b.png')
    screen.update()
    clock.tick(60)
  fish.shape('res/fish2-a.png')
    else:
        fish.shape('res/fish2-b.png')
    screen.update()
    clock.tick(60)

關于“Python怎么實現大魚吃小魚游戲”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开封县| 涞水县| 漠河县| 宁强县| 泽州县| 建宁县| 桐庐县| 长宁区| 溧水县| 顺义区| 靖远县| 时尚| 织金县| 墨竹工卡县| 安义县| 永和县| 奇台县| 韶关市| 岳西县| 宁南县| 海宁市| 佛山市| 买车| 勃利县| 珠海市| 贺兰县| 孟村| 柳河县| 赤城县| 康保县| 密山市| 磐石市| 榆社县| 霍城县| 廊坊市| 吐鲁番市| 临夏县| 冕宁县| 寿宁县| 灌云县| 哈密市|