我正在从头开始制作一个战舰项目。有什么方法可以识别地图上的特定点,并让您选择它,然后打印出所选的网格,并将“#”替换为“X”等其他内容?
这是代码:
turns = 10
alphabet = ["A","B","C","D","E","F","G","H","I","J","a","b","c","d","e","f","g","h","i","j"]
def StartScreen():
print("Welcome to Battleship!")
print('''
1. Start
2. Exit
''')
choice = int(input("Enter your number: "))
if choice == 1:
GameScreen()
elif choice == 2:
exit()
else:
print("Please choose a valid number.")
StartScreen()
def GameScreen():
print("\n")
print(" A B C D E F G H I J")
row = [" # ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# "]
i = -1
while i != 9:
print(i+1, row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9])
i = i + 1
print("\n")
rowx = input("Choose a letter(A-J): ")
rowy = int(input("Enter a number(0-9): "))
if rowx in alphabet and rowy in range(0,10):
print(f'you chose {rowx.upper()}{rowy}')
else:
print("Please choose a valid point(A-J/0-9)\n")
StartScreen()
您最好以不同的方式设置您的板。到目前为止,您已经有了一个独特的列表
row
,您可以打印十次来模拟一块板。这会让您难以按照您的意愿跟踪更改。使用二维列表代替:
board = [[" # ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# "],
[" # ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# "],
...
]
当然,你可以自动生成这个板:
board = [["#" for _ in range(10)] for _ in range(10)]
然后你可以要求两个整数作为输入,称它们为
i
和j
,并设置board[i][j] = "X"
。这将产生所需的结果。