这是我的代码,但我想问题主要出在我的python中
import random
import curses
screen=curses.initscr()
# Initialize curses
screen = curses.initscr()
curses.curs_set(0)
screen_height,screen_width= screen.getmaxyx()
window=curses.newwin(screen_height,screen_width,0,0)
window.keypad(1) #allow window to take input
window.timeout(100)
snk_x=screen_width//4
snk_y=screen_height//2
snake=[
[snk_y,snk_x],
[snk_y,snk_x-1],
[snk_y,snk_x-2],
]
food=[screen_width//2,screen_height//2]
window.addch(food[0],food[1],curses.ACS_PI)
key=curses.KEY_RIGHT
while True:
next_key=window.getch()
key=key if next_key==-1 else next_key
if snake[0][0]in [screen_height,0] or snake[0][1] in [screen_width,0] or snake[0] in snake[1:]:
break
new_head=[snake[0][0],snake[0][1]]
if key==curses.KEY_UP:
new_head[0]-= 1
if key==curses.KEY_DOWN:
new_head[0]+= 1
if key==curses.KEY_RIGHT:
new_head[1]+= 1
if key==curses.KEY_LEFT:
new_head[1]-= 1
snake.insert(0,new_head)
if snake[0]==food:
food=None
while food==None:
new_food=[
random.randint(1,screen_width-1),
random.randint(1,screen_height-1)
]
food=new_food if new_food not in snake else None
window.addch(food[0],food[1],curses.ACS_PI)
else:
tail=snake.pop()
window.addch(tail[0],tail[1],' ')
window.addch(snake[0][0],snake[0][1],curses.ACS_CKBOARD)
curses.endwin()
quit()
我尝试从终端安装curses,并再次尝试安装python,但它不起作用,我也达到了它运行良好的地步,但停在了addch函数处
我更正了你的一些代码。 如果您在 pycharm 或 vscode 中工作,那么您需要不是通过编译器界面运行代码,而是通过控制台运行代码。为此,启动终端并指定 .py 文件的路径。看一下例子
import random
import curses
# The duplicate line has been removed
screen = curses.initscr()
curses.curs_set(0)
screen_height, screen_width = screen.getmaxyx()
window = curses.newwin(screen_height, screen_width, 0, 0)
window.keypad(1) # Allow window to take input
window.timeout(100)
snk_x = screen_width // 4
snk_y = screen_height // 2
snake = [
[snk_y, snk_x],
[snk_y, snk_x - 1],
[snk_y, snk_x - 2],
]
food = [screen_height // 2, screen_width // 2]
window.addch(food[0], food[1], curses.ACS_PI)
key = curses.KEY_RIGHT
while True:
next_key = window.getch()
key = key if next_key == -1 else next_key
# worth avoiding long lines
if (
snake[0][0] in [0, screen_height] or
snake[0][1] in [0, screen_width] or
snake[0] in snake[1:]
):
break
new_head = [snake[0][0], snake[0][1]]
if key == curses.KEY_UP:
new_head[0] -= 1
if key == curses.KEY_DOWN:
new_head[0] += 1
if key == curses.KEY_RIGHT:
new_head[1] += 1
if key == curses.KEY_LEFT:
new_head[1] -= 1
snake.insert(0, new_head)
if snake[0] == food:
food = None
while food is None:
new_food = [
random.randint(1, screen_height - 1),
random.randint(1, screen_width - 1)]
food = new_food if new_food not in snake else None
window.addch(food[0], food[1], curses.ACS_PI)
else:
tail = snake.pop()
window.addch(tail[0], tail[1], ' ')
window.addch(snake[0][0], snake[0][1], curses.ACS_CKBOARD)
curses.endwin()
quit()