战舰中如何让玩家能够选择网格?

问题描述 投票:0回答:1

我正在从头开始制作一个战舰项目。有什么方法可以识别地图上的特定点,并让您选择它,然后打印出所选的网格,并将“#”替换为“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()
python list
1个回答
0
投票

您最好以不同的方式设置您的板。到目前为止,您已经有了一个独特的列表

row
,您可以打印十次来模拟一块板。这会让您难以按照您的意愿跟踪更改。使用二维列表代替:

board = [[" # ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# "],
       [" # ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# ", "# "],
       ...
       ]

当然,你可以自动生成这个板:

board = [["#" for _ in range(10)] for _ in range(10)]

然后你可以要求两个整数作为输入,称它们为

i
j
,并设置
board[i][j] = "X"
。这将产生所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.