Skip to main content
 首页 » 编程设计

python之如何让这款战舰游戏在值(value)观上更加人性化

2025年05月04日15shihaiming

我有一个用 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