亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

python學習之烏龜吃魚and思聰吃熱狗游戲

發布時間:2020-05-09 18:23:45 來源:網絡 閱讀:320 作者:霍金181 欄目:編程語言

烏龜吃魚游戲
游戲規則:
1). 假設游戲場景為范圍(x,y)為0<=x<=10,0<=y<=10
2). 游戲生成1只烏龜和10條魚, 它們的移動方向均隨機
3). 烏龜的最大移動能力為2(它可以隨機選擇1還是2移動),
魚兒的最大移動能力是1當移動到場景邊緣,自動向反方向移動
4). 烏龜初始化體力為100(上限), 烏龜每移動一次,體力消耗1
當烏龜和魚坐標重疊,烏龜吃掉魚,烏龜體力增加20, 魚暫不計算體力
5). 當烏龜體力值為0(掛掉)或者魚兒的數量為0游戲結束

01_turtle_fish.py


import random

class Turtle(object):
    """
    烏龜類
        屬性: (x,y), power
        方法: move(), eat()
    """

    def __init__(self):
        self.x = random.randint(0, 10)
        self.y = random.randint(0, 10)
        self.power = 100

    def move(self):
        """烏龜移動的方法"""
        #烏龜的最大移動能力是2當移動到場景邊緣,
        move_skills = [-2, -1, 1, 2]
        #計算魚最新的x軸坐標;()
        new_x = self.x + random.choice(move_skills)
        new_y = self.y + random.choice(move_skills)
        #當移動到場景邊緣如何處理?
        #(10, 0)   ----   (11, 1)    ----- (1, 1)
        #(10, 0)     ---   (9, -1)    -----(9, 9)
        self.x = new_x % 10
        self.y = new_y % 10

    def eat(self):
        """烏龜吃魚"""
        self.power += 20
        print("烏龜吃魚, 能量+20!")

class Fish(object):
    """
    魚類
        屬性: (x,y)
        方法: move()
    """

    def __init__(self):
        self.x = random.randint(0, 10)
        self.y = random.randint(0, 10)

    def move(self):
        """
           魚兒的最大移動能力是1當移動到場景邊緣,
        """
        #魚兒的最大移動能力是1當移動到場景邊緣,
        move_skills = [-1, 1]
        #計算魚最新的x軸坐標;()
        new_x = self.x + random.choice(move_skills)
        new_y = self.y + random.choice(move_skills)
        #當移動到場景邊緣如何處理?
        self.x = new_x % 10
        self.y = new_y % 10

if __name__ == '__main__':
    # 游戲生成1只烏龜和10條魚, 它們的移動方向均隨機.
    tur = Turtle()
    fishes = [Fish() for item in range(10)]"""

01_turtle_fish.py

import random
class BaseAnimal(object):
    def __init__(self):
        self.x = random.randint(0, 10)
        self.y = random.randint(0, 10)
    def move(self, move_skills=(-1, 1)):
        new_x = self.x + random.choice(move_skills)
        new_y = self.y + random.choice(move_skills)
        #當移動到場景邊緣如何處理?
        #(10, 0)   ----   (11, 1)    ----- (1, 1)
        #(10, 0)     ---   (9, -1)    -----(9, 9)
        self.x = new_x % 10
        self.y = new_y % 10

class Turtle(BaseAnimal):
    """
    烏龜類
        屬性: (x,y), power
        方法: move(), eat()
    """
    def __init__(self):
        super(Turtle, self).__init__()
        self.power = 100
    def eat(self):
        """烏龜吃魚"""
        self.power += 20
        print("烏龜吃魚, 能量+20!")
class Fish(BaseAnimal):
    pass
if __name__ == '__main__':
    # 游戲生成1只烏龜和10條魚, 它們的移動方向均隨機.
    tur = Turtle()
    fishes = [Fish() for item in range(10)]"""

03_pygame游戲基本操作.py


import pygame

#1). 初始化pygame
pygame.init()

#2). 顯示游戲界面
pygame.display.set_mode((800, 800))
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            print("游戲結束......")
            exit(0)
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                print("UP")
            elif event.key == pygame.K_DOWN:
                print('DOWN')"""

04_game.py #同理思聰吃熱狗游戲

import random
import pygame

class SiCong(object):
    """
    思聰類
        屬性: (x,y), power
        方法: move(), eat()
    """

    def __init__(self):
        self.x = random.randint(50, width - 50)
        self.y = random.randint(50, height - 50)
        self.power = 100

    def move(self, new_x, new_y):
        """思聰移動的方法"""
        self.x = new_x % width
        self.y = new_y % height

    def eat(self):
        """思聰吃熱狗"""
        self.power += 20
        print("思聰吃熱狗, 能量+20!")

class HotDog(object):
    """
    熱狗類
        屬性: (x,y)
        方法: move()
    """

    def __init__(self):
        self.x = random.randint(50, width - 50)
        self.y = random.randint(50, height - 50)

    def move(self):
        """
           魚兒的最大移動能力是1當移動到場景邊緣,
        """
        #魚兒的最大移動能力是1當移動到場景邊緣,
        move_skills = [-10]
        #計算魚最新的x軸坐標;()
        new_x = self.x + random.choice(move_skills)
        #當移動到場景邊緣如何處理?
        self.x = new_x % width

def main():
    pygame.init()
    #顯示游戲界面
    screen = pygame.display.set_mode((width, height))
    #設置界面標題
    pygame.display.set_caption("吃熱狗游戲")

    #加載游戲中需要的圖片
    bg = pygame.image.load('./img/bigger_bg1.jpg').convert()
    hotdogImg = pygame.image.load('./img/hot-dog.png').convert_alpha()
    sicongImg = pygame.image.load('./img/sicong.png').convert_alpha()

    hd_width, hd_height = hotdogImg.get_width(), hotdogImg.get_height()
    sc_width, sc_height = sicongImg.get_width(), sicongImg.get_height()

    #加載游戲音樂(背景音樂和吃掉熱狗的音樂)
    pygame.mixer.music.load('./img/game_music.mp3')
    pygame.mixer.music.play(loops=0, start=0.0)  # 播放設置, 不循環且從0.0s開始播放

    #設置分數顯示參數信息(顯示位置、字體顏色、字體大小)
    scoreCount = 0
    font = pygame.font.SysFont('arial', 20)  # 系統設置字體的類型和大小
    #顏色表示法: RGB  (255, 0, 0)-紅色  (255, 255, 255)-白色  (0, 0, 0)-黑色
    score = font.render("Score: %s" % (scoreCount), True, (0, 0, 0))

    #創建一個Clock對象,跟蹤游戲運行時間
    fpsClock = pygame.time.Clock()

    #創建一個思聰和10個熱狗
    sicong = SiCong()
    hotdogs = [HotDog() for item in range(10)]

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                print("游戲結束......")
                exit(0)
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    # 移動人物向上多少個像素
                    sicong.move(sicong.x, sicong.y - 10)
                elif event.key == pygame.K_DOWN:
                    sicong.move(sicong.x, sicong.y + 10)
                if event.key == pygame.K_LEFT:
                    # 移動人物向上多少個像素
                    sicong.move(sicong.x - 10, sicong.y)
                elif event.key == pygame.K_RIGHT:
                    sicong.move(sicong.x + 10, sicong.y)

        #繪制背景和分數
        screen.blit(bg, (0, 0))
        screen.blit(score, (200, 20))
        #繪制熱狗,并實現熱狗的移動
        for hd in hotdogs:
            screen.blit(hotdogImg, (hd.x, hd.y))
            hd.move()

        #繪制sicong
        screen.blit(sicongImg, (sicong.x, sicong.y))
        #判斷游戲是否結束: 當人物體力值為0(掛掉)或者熱狗的數量為0游戲結束
        if sicong.power == 0:
            print("Game Over: Sicong Poer is 0")
            exit(1)
        if len(hotdogs) == 0:
            print("Game Over: hot-dog count is 0")
            exit(2)
        #判斷人物是否吃到熱狗:人物和熱狗的坐標值相同, 則認為吃掉
        for hd in hotdogs:
            if 0 < sicong.x - hd.x < 50 and 0 < sicong.y - hd.y < 50:
                # 增加人物的能量值
                sicong.eat()
                #移除被吃掉的熱狗
                hotdogs.remove(hd)
                #增加得分
                scoreCount += 10
                #重新設置得分信息
                score = font.render("Score: %s" % (scoreCount), True, (0, 0, 0))
        #更新內容到游戲窗口
        pygame.display.update()
        fpsClock.tick(10)  # 每秒更新10幀

if __name__ == '__main__':
    width =1000
    height = 666
    main()

05_烏龜吃魚游戲.py

import random
import time

import pygame
import sys
from pygame.locals import *  # 導入一些常用的函數

width = 474
height = 233

pygame.init()
screen = pygame.display.set_mode([width, height])
pygame.display.set_caption('烏龜吃魚')  # 定義窗口的標題為'烏龜吃魚'
background = pygame.image.load("./img/bg.jpg").convert()
fishImg = pygame.image.load("./img/hot-dog.png").convert_alpha()
wuguiImg = pygame.image.load("./img/sicong.png").convert_alpha()

#烏龜吃掉小魚的音樂  mp3格式的不行,wav格式的
#eatsound = pygame.mixer.Sound("achievement.wav")

#背景音樂
pygame.mixer.music.load("./img/game_music.mp3")
pygame.mixer.music.play(loops=0, start=0.0)

#成績文字顯示
count = 0
font = pygame.font.SysFont("arial", 20)
score = font.render("score %d" % count, True, (255, 255, 255))
#顯示游戲狀態
status = font.render("Gaming", 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()  # 創建一個新的Clock對象,可以用來跟蹤總共的時間

#烏龜類
class Turtle:
    def __init__(self):
        self.power = 100  # 體力
        #烏龜坐標
        self.x = random.randint(0, width - w_width)
        self.y = random.randint(0, height - w_height)

    #烏龜移動的方法:移動方向均隨機 第四條
    def move(self, new_x, new_y):
        self.x = new_x % width
        self.y = new_y % height
        self.power -= 1  # 烏龜每移動一次,體力消耗1

    def eat(self):
        self.power += 20  # 烏龜吃掉魚,烏龜體力增加20
        if self.power > 100:
            self.power = 100  # 烏龜體力100(上限)

#魚類
class Fish:
    def __init__(self):
        # 魚坐標
        self.x = random.randint(0, width - y_width)
        self.y = random.randint(0, height - y_height)

    def move(self):
        new_x = self.x + random.choice([-10])
        self.x = new_x % width

tur = Turtle()  # 生成1只烏龜
fish = []  # 生成10條魚
for item in range(10):
    newfish = Fish()
    fish.append(newfish)  # 把生成的魚放到魚缸里

#pygame有一個事件循環,不斷檢查用戶在做什么。事件循環中,如何讓循環中斷下來(pygame形成的窗口中右邊的插號在未定義前是不起作用的)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            # 通過上下左右方向鍵控制烏龜的動向
            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, (400, 20))  # 繪制分數
    screen.blit(status, (0, 20))  # 繪制分數
    #繪制魚
    for item in fish:
        screen.blit(fishImg, (item.x, item.y))
        #pygame.time.delay(100)
        item.move()  # 魚移動
    screen.blit(wuguiImg, (tur.x, tur.y))  # 繪制烏龜
    #判斷游戲是否結束:當烏龜體力值為0(掛掉)或者魚兒的數量為0游戲結束
    if tur.power < 0:
        print("Game Over: Turtle power is 0")
        #顯示游戲狀態
        status = font.render("Game Over: Turtle power is 0", True, (255, 255, 255))
        pygame.display.update()  # 更新到游戲窗口
        time.sleep(1)
        sys.exit(0)
    elif len(fish) == 0:
        status = font.render("Game Over: Fish is empty", True, (255, 255, 255))
        pygame.display.update()  # 更新到游戲窗口
        sys.exit(0)
    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)):
            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)  # 通過每幀調用一次fpsClock.tick(10),這個程序就永遠不會以超過每秒10幀的速度運行
向AI問一下細節

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

AI

巍山| 根河市| 琼结县| 五大连池市| 宣威市| 内丘县| 塔河县| 噶尔县| 舟曲县| 叙永县| 罗甸县| 襄城县| 高平市| 田林县| 穆棱市| 石棉县| 突泉县| 漯河市| 靖远县| 南充市| 定西市| 巴林左旗| 潢川县| 奇台县| 滁州市| 砚山县| 和平区| 沙坪坝区| 井冈山市| 龙山县| 盐边县| 原阳县| 会理县| 连州市| 疏附县| 子长县| 精河县| 淄博市| 巴马| 东兴市| 闸北区|