我在Python中遇到了“curses”库的问题

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

这是我的代码,但我想问题主要出在我的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函数处

python visual-studio-code libraries
1个回答
0
投票

我更正了你的一些代码。 如果您在 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()
© www.soinside.com 2019 - 2024. All rights reserved.