5x5棋盘游戏的python玩家运动

时间:2015-10-28 23:03:24

标签: python

def playerMove (board,player):
userInput = input("Enter a direction NSWE: ").upper()
if userInput == "N":
    if (player == 0):
        board[player] = '.'
        player += 1
        board[player] = '@'
elif userInput == "S":

    if (player(board)-1):
        board[player] = '.'
        player += 1
        board[player] = '@'
elif userInput == "E":

    if (player < len(board)-1):
        board[player] = '.'
        player += 1
        board[player] = '@'
elif userInput == "W":

    if (player['x'] > 0):
        board[player] = '.'
        player -= 1
        board[player] = '@'

这是我正在创建的游戏的示例编码,我已经编写了所有内容,当创建一个玩家时,它随机放置在5x5板上。我需要一个用户移动玩家NESW的选项,但我无法理解。这不是我的所有编码,只是我需要帮助的部分。

这是电路板编码

'def createBoard():
tempList = []
for i in range (5):
    tempList.append(".")

board = []
for i in range (5):
    board.append(["."]*5)

return board


def showBoard(board):    
    print ("---------")
    print ("|".join(board[0]))
    print ("---------")
    print("|".join(board[1]))
    print ("---------")
    print("|".join(board[2]))
    print ("---------")
    print("|".join(board[3]))
    print ("---------")
    print("|".join(board[4]))
    print ("---------")

def placePlayer(board,player):
    len(board[0])
    row = random.randint(0, len(board) -1)
    col = random.randint(0, len(board[0])-1)
    board[row][col] = '@' 
    return board, row, col

2 个答案:

答案 0 :(得分:0)

您的播放器似乎没有被一个整数值引用,而是一行和一个col

您应该更新代码以传递元组或传入行和col值,如下面的代码段所示:

def playerMove (board,playerRow, playerCol):
    if userInput == "N":
        if (playerRow > 0):
            board[playerRow][playerCol] = '.'
            playerRow -= 1
            board[playerRow][playerCol] = '@'

注意:上面的代码假定您的电路板被拆分为多维数组。就像目前一样,您需要操作数组中的字符串,因为字符串不允许您直接修改内容。

答案 1 :(得分:0)

<强> 1) 首先,在您的电路板生成代码中:

board = []
for i in range (5):
    board.append(["."]*5)

return board

在该代码中,没有必要使用return board,因为它不在函数中。返回语句主要用于函数:

def square(x):
    return x*x

2)您的董事会将按照以下列表中的列表进行组织:

board = [
    ['.', '.', '.', '.', '.'],
    ['.', '.', '.', '.', '.'],
    ['.', '.', '.', '.', '.'],
    ['.', '.', '.', '.', '.'],
    ['.', '.', '.', '.', '.']
    ]

要在电路板上查找一个点,您将使用以下语法:

board[row][col]

[row]指向电路板列表中的列表,而[col]指向该列表中的项目。因此,要在网格上找到一个点,您需要行和列。

要将棋盘中的一个向上移动,您将使用以下内容:

board[row][col] = '.' #reset last position to '.'
board[row][col-1] = '@' #set the coordinate above to '@'

要将播放器向右移动一下,您将使用以下内容:

board[row][col] = '.' #reset last position '.'
board[row+1][col] = '@' #set the coordinate to the right to '@'