今天大年初一,在這裡祝大家新年快樂、龍年行大運!這次用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()