2017-06-16 60 views
2

我一直在嘗試重置井字棋遊戲上的標記圖像,並且無法確定如何在設置後更改個人「方塊」。我已經完成了搜索,我似乎無法找到任何有關它的信息。Swift - 如何重置例如「遊戲板」?

我使用一個動作按鈕爲整個董事會與9標記圖像正方形(每個正方形)。它們都與同一個IBAction相關聯。當我按下一個方塊時,會出現交叉或無圖像顯示。然後我想要一個單獨的動作按鈕,在那裏我可以重置棋盤並再次玩。我如何將廣場恢復到原始狀態(即不顯示任何內容)?

let nought = UIImage(named: "nought.png") as UIImage! 
let cross = UIImage(named: "cross") as UIImage! 
var noughtArray = [false, false, false, false, false, false, false, false, false] 
var crossArray = [false, false, false, false, false, false, false, false, false] 
var whichPlayer = true 

@IBAction func button(_ sender: Any) { 

    guard let button = sender as? UIButton else { 
      return 
     } 

    if !crossArray[button.tag] && !noughtArray[button.tag] { 

     if whichPlayer { 

      button.setImage(nought, for: .normal) 

      print("Button \(button.tag + 1) pressed!") 

      noughtArray[button.tag] = true 

      if winningCombination(array: noughtArray) { 

       labelWinner.text = "Winner is Noughts!" 

       animateWinning() 

      } 

      whichPlayer = false 

     } else { 

      button.setImage(cross, for: .normal) 

      print("Button \(button.tag + 1) pressed!") 

      crossArray[button.tag] = true 

      if winningCombination(array: crossArray) { 

       labelWinner.text = "Winner is Crosses!" 

       animateWinning() 

      } 

      whichPlayer = true 

     } 

    } 

} 

任何幫助真的很感激!

回答

2

您需要訪問您的reset功能中的所有按鈕。要做到這一點,你需要創建一個@IBOutlet集合:在

@IBOutlet var buttons: [UIButton]! 
  • 連接所有的按鈕來此@IBOutlet集合:

    1. 創建@IBOutlet集合持有引用到你的按鈕故事板由控制 - 從每個按鈕輪流拖動到步驟1中的代碼行。

    2. 在你的復位功能,遍歷所有的按鈕,並設置其形象nil

      @IBAction func reset(_ sender: UIButton) { 
          for button in buttons { 
           button.setImage(nil, for: .normal) 
          } 
      
          // Reset other variables to starting conditions 
          naughtArray = Array(repeating: false, count: 9) 
          crossArray = naughtArray 
          whichPlayer = true 
      } 
      
  • +0

    輝煌的感謝!所以你基本上和main函數做同樣的事情,但是有一個循環。使總體感......現在:) – Aecasorg

    +0

    是的。順便說一句,如果您更改爲'@IBAction func按鈕(_ sender:UIButton)',則可以消除'guard'語句。 – vacawama

    +0

    呵呵......不知道。使它更清潔。再次,謝謝!非常感謝! – Aecasorg