我有一个用 Python 设置的战舰游戏,但是我设置的网格介于 0 和 5 之间。这意味着战舰的第一行和第一列将是 (0,0) 但是我不想这样,因为任何受困的用户都可能从 1 开始计数,因此他们将输入 (1,1) 或 (1,2) 值 0 将不是他们想要输入的值。我怎样才能使我的程序以 1,1 是开始列和行而不是第二列的方式反射(reflect)这一点。由于用户只能输入 0 到 4 之间的值,因此 5 表示为无效值,表示它不在网格上。
所以唯一可能的组合是这些:
行:0、1、2、3、4、 列:0、1、2、3、4
我希望它是:
行:1、2、3、4、5 第 1、2、3、4、5 列
这是我的代码:
import random
Battleship_Board = []
for x in range(0,5):
Battleship_Board.append(["O"] * 5)
def print_Battleship_Board(Battleship_Board):
for row in Battleship_Board:
print (" ".join(row))
print ("Let's play a game of Battleships!")
print_Battleship_Board(Battleship_Board)
def Random_Battleship_Board_Row(Battleship_Board):
return random.randint(0, len(Battleship_Board)-1)
def Random_Battleship_Board_Column(Battleship_Board):
return random.randint(0, len(Battleship_Board[0])-1)
Battleship_Board_Row = Random_Battleship_Board_Row(Battleship_Board)
Battleship_Board_Column = Random_Battleship_Board_Column(Battleship_Board)
print (Battleship_Board_Row)
print (Battleship_Board_Column)
for turn in range(5):
Guess_Battleship_Board_Row = int(input("Guess the X coordinate:"))
Guess_Battleship_Board_Column = int(input("Guess the Y coordinate:"))
if Guess_Battleship_Board_Row == Battleship_Board_Row and Guess_Battleship_Board_Column == Battleship_Board_Column:
print ("You sunk the battleship!")
print ("My ship was here: [" + str(Battleship_Board_Row) + "][" + str(Battleship_Board_Column) + "]")
break
else:
if turn + 1 == 5:
Battleship_Board[Guess_Battleship_Board_Row][Guess_Battleship_Board_Column] = "X"
print_Battleship_Board(Battleship_Board)
print ("Game Over")
print ("My ship was here: [" + str(Battleship_Board_Row) + "][" + str(Battleship_Board_Column) + "]")
if (Guess_Battleship_Board_Row < 0 or Guess_Battleship_Board_Row > 4) or (Guess_Battleship_Board_Column < 0 or Guess_Battleship_Board_Column > 4):
print ("The inserted value is not on the grid.")
elif(Battleship_Board[Guess_Battleship_Board_Row ][Guess_Battleship_Board_Column] == "X"):
print ("You already inserted this combination")
else:
print ("You missed my battleship")
Battleship_Board[Guess_Battleship_Board_Row][Guess_Battleship_Board_Column] = "X"
print ("Number of turns:", turn + 1,"out of 5")
print_Battleship_Board(Battleship_Board)
请您参考如下方法:
您可以只从用户的猜测中减去一个,并添加一个注释来说明这些数字不是从零开始的。请记住检查有效输入!
Guess_Battleship_Board_Row = int(input("Guess the X coordinate:")) - 1
Guess_Battleship_Board_Column = int(input("Guess the Y coordinate:")) - 1
