我正在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)
我需要蛇吃东西的时候变得更长
你做到了
if head == food: food = None
,但你还需要添加一些东西让蛇的尾巴更长。