蛇不吃食物

问题描述 投票:0回答:1

我正在Python中使用curses开发一个简单的贪吃蛇游戏,但我遇到了蛇没有正确吃食物的问题。蛇似乎在食物上移动,但它并没有变得更长。有人可以帮我找出导致此问题的原因以及如何解决它吗?

import curses
from random import randint

def create_food(snake, box):
    food = None
    while food is None:
        food = [randint(box[0]+1, box[1]-1), randint(box[2]+1, box[3]-1)]
        if food in snake:
            food = None
    return food

def main(stdscr):
    curses.curs_set(0)
    stdscr.timeout(100)

    sh, sw = stdscr.getmaxyx()
    w = curses.newwin(sh, sw, 0, 0)
    w.keypad(1)

    box = [3, sh-3, 3, sw-3]
    snake = [
        [sh//2, sw//2],
        [sh//2, sw//2-1],
        [sh//2, sw//2-2]
    ]

    food = create_food(snake, box)

    key = curses.KEY_RIGHT

    while True:
        next_key = w.getch()
        key = key if next_key == -1 else next_key

        head = [snake[0][0], snake[0][1]]

        if key == curses.KEY_DOWN:
            head[0] += 1
        elif key == curses.KEY_UP:
            head[0] -= 1
        elif key == curses.KEY_LEFT:
            head[1] -= 1
        elif key == curses.KEY_RIGHT:
            head[1] += 1

        snake.insert(0, head)

        if head == food:
            food = None
        else:
            tail = snake.pop()

        w.addch(food[0], food[1], curses.ACS_PI)

        w.addch(tail[0], tail[1], ' ')

        w.addch(snake[0][0], snake[0][1], '*')

        if (
            snake[0][0] in [box[0], box[1]] or
            snake[0][1] in [box[2], box[3]] or
            snake[0] in snake[1:]
        ):
            break

curses.wrapper(main)

我需要蛇吃东西的时候变得更长

python
1个回答
0
投票

你做到了

if head == food: food = None
,但你还需要添加一些东西让蛇的尾巴更长。

© www.soinside.com 2019 - 2024. All rights reserved.