前往
大廳
主題

使用Gemini Pro(原Google Bard)寫Python貪食蛇遊戲

劍心san | 2024-02-10 11:13:36 | 巴幣 0 | 人氣 153

今天大年初一,在這裡祝大家新年快樂、龍年行大運!這次用Gemini Pro 模型寫了一個Python貪食蛇遊戲,連同Bug都用Gemini Pro除完了,可直接運行暢玩,以下是它的Code內容:

import turtle
import random
import time

# 定義遊戲參數
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600
SNAKE_SIZE = 10
FOOD_SIZE = 10

# 定義蛇的類別
class Snake:
    def __init__(self):
        self.body = [(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)]
        self.direction = "right"

    def move(self):
        # 根據方向移動蛇頭
        if self.direction == "right":
            self.body.insert(0, (self.body[0][0] + SNAKE_SIZE, self.body[0][1]))
        elif self.direction == "left":
            self.body.insert(0, (self.body[0][0] - SNAKE_SIZE, self.body[0][1]))
        elif self.direction == "up":
            self.body.insert(0, (self.body[0][0], self.body[0][1] - SNAKE_SIZE))
        elif self.direction == "down":
            self.body.insert(0, (self.body[0][0], self.body[0][1] + SNAKE_SIZE))

        # 刪除蛇尾
        self.body.pop()

    def grow(self):
        # 蛇身變長
        self.body.append(self.body[-1])

    def is_dead(self):
        # 判斷蛇是否死亡
        head = self.body[0]
        if head in self.body[1:]:
            return True
        if head[0] < 0 or head[0] >= SCREEN_WIDTH or head[1] < 0 or head[1] >= SCREEN_HEIGHT:
            return True
        return False

# 定義食物的類別
class Food:
    def __init__(self):
        self.x = random.randint(0, SCREEN_WIDTH // FOOD_SIZE - 1) * FOOD_SIZE
        self.y = random.randint(0, SCREEN_HEIGHT // FOOD_SIZE - 1) * FOOD_SIZE
        self.stamp_id = None

# 定義遊戲主函數
def main():
    # 初始化遊戲
    snake = Snake()
    food = Food()

    # 創建遊戲視窗
    screen = turtle.Screen()
    screen.setup(SCREEN_WIDTH, SCREEN_HEIGHT)
    screen.title("貪食蛇")
    screen.tracer(0)

    # 繪製遊戲背景
    screen.bgcolor("black")

    # 創建一個turtle對象來繪製蛇和食物
    t = turtle.Turtle()
    t.penup()

    # 繪製蛇
    for segment in snake.body:
        t.goto(segment)
        t.shape("square")
        t.color("green")
        t.stamp()

    # 繪製食物
    t.goto(food.x, food.y)
    t.shape("circle")
    t.color("red")
    food.stamp_id = t.stamp()

    # 設定鍵盤控制
    screen.listen()
    screen.onkey(lambda: setattr(snake, 'direction', 'up'), "Up")
    screen.onkey(lambda: setattr(snake, 'direction', 'down'), "Down")
    screen.onkey(lambda: setattr(snake, 'direction', 'left'), "Left")
    screen.onkey(lambda: setattr(snake, 'direction', 'right'), "Right")

    # 遊戲迴圈
    while not snake.is_dead():
        # 移動蛇
        snake.move()

        # 檢查蛇是否吃到食物
        if snake.body[0] == (food.x, food.y):
            snake.grow()
            t.clearstamp(food.stamp_id)
            food = Food()
            t.goto(food.x, food.y)
            food.stamp_id = t.stamp()

        # 繪製蛇
        t.clearstamps()
        for segment in snake.body:
            t.goto(segment)
            t.stamp()

        # 更新畫面
        screen.update()
        time.sleep(0.1)

    # 遊戲結束
    print("遊戲結束!")
    screen.bye()

# 呼叫遊戲主函數
if __name__ == "__main__":
    main()

送禮物贊助創作者 !
0
留言

創作回應

相關創作

更多創作