Перемещение игрока вокруг доски

Итак, я сделал сетку, используя следующий код:

board = []
x = choice_size
y = x
for row in range(0,x):
    board.append(["()"]*y)

def print_board(board):
    for row in board:
        print(" ".join(row))
print_board(board)

Мне нужно дать пользователю варианты ввода ввода (например, "Left 10 Up 2"), а затем переместить их в соответствующую позицию на доске. Я пытался возиться с добавлением их чисел к переменным, чтобы затем получить координаты x и y в списке "board[]", но я не могу заставить его работать.

2 ответа

Это пример того, как переместить игрока на доску

Но он использует специальный символ Linux для очистки терминала / консоли перед перерисовкой платы.

import time

# --- constants --- (UPPER_CASE names)

SIZE_X = 10
SIZE_Y = 5

SYMBOL_EMPTY  = '( )'
SYMBOL_PLAYER = '(@)'
#SYMBOL_DANGER = '(!)'

# --- functions --- (lower_case names)

def print_board(board):
    print('\33c') # clear terminal on Linux

    for row in board:
        print("".join(row))


def move_player(new_x, new_y):
    global player_x
    global player_y

    # remove in old place
    board[player_y][player_x] = SYMBOL_EMPTY

    # put in new place
    player_x = new_x
    player_y = new_y
    board[player_y][player_x] = SYMBOL_PLAYER

# --- main --- (lower_case names)

# creat board

board = [ ]

for row in range(SIZE_Y):
    board.append([SYMBOL_EMPTY] * SIZE_X)

# display empty board

print_board(board)
time.sleep(0.5)

# set player position and symbol

player_x = player_y = 0

board[player_y][player_x] = SYMBOL_PLAYER

# display board with player    

print_board(board)
time.sleep(0.5)

# move player

# move left
for new_x in range(SIZE_X):
    move_player(new_x, player_y)

    # redraw
    print_board(board)
    time.sleep(0.5)

# move down
for new_y in range(SIZE_Y):
    move_player(player_x, new_y)

    # redraw
    print_board(board)
    time.sleep(0.5)

Реальная программа может быть более сложной.

В консоли могут быть проблемы с очисткой экрана для перерисовки доски и с получением события key/mouse, чтобы сделать его по-настоящему интерактивным. Может быть, увидеть Урвид или ncurses модуль.

Или попробуйте графические модули, такие как PyGame, Pyglet

Попробуйте подумать об изменении значения x/y, добавляя или вычитая число, в зависимости от того, в каком направлении игрок хочет двигаться.

Другие вопросы по тегам