2016-11-18 4 views
1

Так я сделал сетку, используя следующий код:Перемещение игрока вокруг доски

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 в списке «доска []», но я не могу заставить его работать.

+0

'board [y] [x] =" Hello World! "' – furas

+0

@furas Что вы подразумеваете под этим? – mrzippy01

+1

, если вам нужен пользователь на месте '(x, y)', тогда используйте 'board [y] [x] =" user_symbol "'. – furas

ответ

0

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

Но он использует специальный символ 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, чтобы сделать ее реальной интерактивной. Возможно, см. Модуль urwid или ncurses.

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

1

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