簡體   English   中英

Python 嵌套 while 循環問題

[英]Python nested while loop issues

我對編碼比較陌生,我正在做一個項目,我制作一個類似於戰艦的游戲,例如 2 個玩家將 10 艘船放在一個“板上”,我為每個玩家制作了一個 2d 數組,其中 0 = 無船和 1 =船。 我已經做到了,所以第一個玩家必須為每艘船從 0-7 輸入一個 x 和 y 值,如果他們沒有從 0-7 輸入,它處於一個 while 循環中,所以它一直要求他們輸入一個值0-7。 我還想這樣做,如果一組坐標已經有一艘船在上面,那么它會要求玩家輸入一組新的坐標。 但是,我在使用嵌套的 while 循環時遇到了問題。

問題:

當我運行它並輸入兩個相同的坐標時,它會重復“您已經在這里放置了一個坦克。請輸入另一組坐標。”。 我認為當它通過外循環時,它可能也會跳過內循環?

p1Board = [[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0]]
flag3 = True
flag4 = True
var1 = True

#Player 1 Tank 2 
while var1 == True:
  while flag3 == True:
    p1XCoordTank2 = int(input("\nOn which x-coordinate would you like to place your second tank? "))
    flag3 = False
    if p1XCoordTank2 < 0 or p1XCoordTank2 > 7:
      print("Please choose an x-coordinate that is in the range 0-7. ")
      flag3 = True
  while flag4 == True:
    p1YCoordTank2 = int(input("On which y-coordinate would you like to place your second tank? "))
    flag4 = False
    if p1YCoordTank2 < 0 or p1YCoordTank2 > 7:
      print("Please choose an y-coordinate that is in the range 0-7. ")
      flag4 = True
  if p1Board[p1XCoordTank2][p1YCoordTank2] == 1:
    print("You already have a tank placed here. Please input another set of coordinates. ")
    var1 = True

不知道如何修復它。 請讓我得到一些幫助。

我無法在以下消息中重現您的錯誤:

You already have a tank placed here. Please input another set of coordinates.

輸入相同的坐標時打印(fe p1XCoordTank2 = 0,p1YCoordTank2 = 0)。

但是,要阻止您 while 循環運行,您必須在某處將 var1 設置為 False:

flag3 = True
flag4 = True
var1 = True

#Player 1 Tank 2 
while var1 == True:
  while flag3 == True:
    p1XCoordTank2 = int(input("\nOn which x-coordinate would you like to place your second tank? "))
    flag3 = False
    if p1XCoordTank2 < 0 or p1XCoordTank2 > 7:
      print("Please choose an x-coordinate that is in the range 0-7. ")
      flag3 = True
  while flag4 == True:
    p1YCoordTank2 = int(input("On which y-coordinate would you like to place your second tank? "))
    flag4 = False
    if p1YCoordTank2 < 0 or p1YCoordTank2 > 7:
      print("Please choose an y-coordinate that is in the range 0-7. ")
      flag4 = True
  if p1Board[p1XCoordTank2][p1YCoordTank2] == 1:
    print("You already have a tank placed here. Please input another set of coordinates. ")
    var1 = True
  else:
    p1Board[p1XCoordTank2][p1YCoordTank2] = 1 #place the tank
    var1 = False #stop the while loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM