python - 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。这工作正常。
如果那个位置已经被占用,我怎样才能让它拒绝输入?我试过设置它,如果列表元素不是数字,那么它会拒绝它,但它对我没有用。
解决方案
只需检查 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/
推荐阅读
- flutter - 如何将我的后台通知添加到 Hive 框中?如何在静态方法中初始化 Hive 框?
- python - 整数子类哈希
- python - C++(libtorch)中的Python数组切片是否有类比?
- apache-flink - 在 flink 中如何验证给定窗口中是否没有收到相同的用户数据?
- flutter - 以下 UI 的 GridView 问题
- r - R 无法从 github 下载 websockets 包
- asp.net-mvc - 多态模型绑定/复杂模型
- c++ - 视觉 C++。LNK2011:未链接的预编译对象。但我链接
- python - 如何对搜索栏的结果进行分页并避免破坏 Flask?
- google-cloud-dataflow - GCP Pub/Sub 订阅者未在 Apache Dataflow 管道中接收消息