首页 > 解决方案 > Python Tic-Tac-Toe Spot 已被占用

问题描述

我正在努力在 2 名人类玩家之间用 Python 制作井字游戏,但我在让我的代码意识到某个位置已经被占用时遇到了问题。

我做了2个清单:

board = [1, 2, 3,
         4, 5, 6,
         7, 8, 9]
PLAYER_NAMES = ["Nobody", "X", "O"]

现在我正在努力定义一个允许玩家移动的功能,但对于我的生活,如果它已经被占用,我无法让它拒绝一个位置

    if next_player(player) == 2:
        print("Current Player: X")
    else:
        print("Current Player: O")
    response = input("Enter a number between 1 and 9: ")
    if response.isnumeric():
        input_response = int(response)
        if input_response == 0 or input_response > 9:
            print("That number is not valid")
        elif 1 <= input_response <= 9:
            for i in range(len(board)):
                if input_response == int(i + 1):
                    board[i] = player
    if not response.isnumeric():
        print("Please Enter a Valid Input!")
        pass

到目前为止,我拥有它,以便玩家输入需要等于网格中数字的索引位置(因此 1 将是 0 + 1,因为它显然是索引位置 0)才能替换它。然后它将根据哪个玩家进行输入切换到 X 或 O。这工作正常。

如果那个位置已经被占用,我怎样才能让它拒绝输入?我试过设置它,如果列表元素不是数字,那么它会拒绝它,但它对我没有用。

标签: python

解决方案


只需检查 board[i] 的值是否不是 X 或 O(即未被占用)

if board[i] == "Nobody":
    board[i] = player
else:
    print("Spot already occupied!")

不过,我建议您使用二维数组而不是一维数组来表示网格。以下是一些可能对您有所帮助的链接

https://www.tutorialspoint.com/python_data_structure/python_2darray.htm

https://snakify.org/en/lessons/two_dimensional_lists_arrays/


推荐阅读