帮我用Python写一个贪吃蛇的游戏?

bluesky1年前 ⋅ 725 阅读
下面是一个使用Python编写的贪吃蛇游戏:

import random

# 贪吃蛇游戏参数
ROWS = 10       # 游戏板的行数
COLS = 10      # 游戏板的列数
INIT_SNAKE_LEN = 3  # 初始蛇的长度

# 定义一些常量表示方向
UP = (0, -1)
DOWN = (0, 1)
LEFT = (-1, 0)
RIGHT = (1, 0)

# 初始化游戏板
game_board = []
for i in range(ROWS):
    row = []
    for j in range(COLS):
        row.append(' ')
    game_board.append(row)

# 定义贪吃蛇的类
class Snake:
    def __init__(self):
        self.body = [(0, 0), (1, 0), (2, 0)]    # 蛇的初始位置
        self.direction = RIGHT   # 初始方向

    # 移动蛇的头
    def move(self, direction):
        head = self.body[0]
        x = head[0] + direction[0]
        y = head[1] + direction[1]
        self.body.insert(0, (x, y))

    # 删除蛇最后一节身体
    def trim(self):
        self.body.pop()

    # 重绘蛇
    def draw(self):
        for pos in self.body:
            x = pos[0]
            y = pos[1]
            game_board[x][y] = '*'

# 实例化贪吃蛇
snake = Snake()

# 随机生成食物
def makeFood():
    food = (random.randint(0, ROWS - 1), random.randint(0, COLS - 1))
    game_board[food[0]][food[1]] = '@'
    return food

# 游戏主逻辑
def main():
    food = makeFood()   # 初始化食物
    while True:
        # 用户输入方向
        dir = input("请输入方向:")
        if dir == 'w':
            snake.direction = UP
        elif dir == 'a':
            snake.direction = LEFT
        elif dir == 's':
            snake.direction = DOWN
        elif dir == 'd':
            snake.direction = RIGHT

        snake.draw()    # 绘制贪吃蛇
        snake.move(snake.direction)   # 移动贪吃蛇

        # 检查是否吃到食物
        head = snake.body[0]
        if head == food:
            food = makeFood()   # 重新生成食物
        else:
            snake.trim()    # 如果没有吃到食物,就删除最后一节身体

        # 检查是否游戏结束:
        # 1. 撞到墙壁
        if head[0] < 0 or head[0] >= ROWS or head[1] < 0 or head[1] >= COLS:
            print("Game Over!")
            break
        # 2. 咬到自己
        if head in snake.body[1:]:
            print("
游戏的大部分逻辑代码都写完了,但是因为限制了最大长度1024,所以最后一点没写完

全部评论: 0

    相关推荐