战舰游戏:如何检查用户输入是否在列表中?

2024-09-27 17:45:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个类似战舰的游戏,在这里我必须检查用户是否击中了一艘船,我试图检查一个输入是否是8艘船(战舰)的x,y坐标列表的一部分。 我的大名单是:

 ships = [ship1][ship2][ship3] and so on (6 ships).  

每艘船的清单是:

^{pr2}$

等等。在

到目前为止,我使用的是:

if input[0] ==ship1[0] and input[1] == ship1[1]    

这是目前为止我所做的唯一一件事,但是现在我意识到很难把它推广到所有的船和所有的坐标上。在

我也尝试过将输入作为一个字符串并检查它是否是ships,但它总是返回false。任何帮助都将不胜感激!在


Tags: and游戏列表inputifsoon检查用户
3条回答

我知道这可能不是你想要的答案,但我可能会设置一点不同的方式来帮助你自己。我将ships设置为一个字典,其中每艘船作为一个键,坐标是touple的列表。它看起来像这样:

ships = {"ship1": [("7", "6"), ("2", "5"), ("3", "8")], "ship2": [and so on]}
guess = raw_input("What is your guess? ")

现在,在不放弃太多游戏的情况下,下一步将是在字典中遍历每艘船,并检查猜测的坐标是否与任何一艘船的值匹配。在

我希望这有帮助。在

假设您可以使用列表:

ship1 = [(1,1),(1,2),(1,3)]
ship2 = [(3,4),(3,5),(3,6)]
...

ships = [ship1, ship2, ... ]

shot = (3,5)

for ship in ships: 
  if shot in ship:
    hit...
    break

但正如其他人所提到的,口述可能会更整洁。在

我建议使用NumPy2D数组。在

你可以将你的电路板初始化为一个零矩阵,然后在适当的行和列中标记每艘船的编号。然后检查用户点击了哪艘船是非常简单的。在

小例子:

import numpy as np
# create board
board = np.zeros((8,8))
board[2:5,4] = 1
board[6,5:7] = 2
print(board)
# check shot
input = (2,4)
ship_num = board[input]
if ship_num != 0:
   print("hit!")

相关问题 更多 >

    热门问题