這段代碼不是我自己的,我跟着一個YouTube視頻linked here。開關玩家在tictactoe
我對以下代碼存在問題,並將其縮小到特定部分和問題。
首先這裏是代碼:
import UIKit
class ViewController: UIViewController {
var activePlayer = 1 // cross
var gameState = [0,0,0,0,0,0,0,0,0]
@IBAction func action(_ sender: AnyObject)
{
if (gameState[sender.tag] == 0)
{
gameState[sender.tag] = activePlayer
if (activePlayer == 1)
{
sender.setImage(UIImage(named: "Cross.png"), for: UIControlState())
activePlayer = 2
}
else
{
sender.setImage(UIImage(named: "Nought.png"), for: UIControlState())
activePlayer = 1
}
}
}
的主要問題是,我不明白的遊戲狀態[sender.tag]部分。當我運行程序時,第一次點擊我沒有任何按鈕,下面的點擊就會根據需要放置一個cross.png。 放置第一個十字架後,點擊不會產生任何東西。十字架不會改變,任何空白的按鈕也不會變成十字架或插槽。
在視頻教程中,他指示在[sender.tag]的末尾添加「-1」,像這樣:gameState [sender.tag-1]但是,當我嘗試點擊時會導致錯誤在程序運行時在按鈕上。因此,我刪除了該部分,程序運行,但出現上述情況。
我對編碼一般都很陌生,只是在社區學院完成了C++課程的介紹,現在學習Swift 3作爲一種愛好,所以我可能會錯過一些可以很容易地解釋這種情況的基本信息。
感謝您提前向社區提出這種情況的可能性僅僅基於我的無知,我試着瞭解sender.tag和其他幾天的事情,但現在都無濟於事。我希望我能從這種情況中學習,並感謝任何信息!
我沒有看視頻。但從代碼判斷,您必須將* tags *(1 ... 9)分配給Storyboard編輯器中的所有按鈕。 –
該教程從來沒有經過這一步,它只是爲他工作,但他確實提到他添加的「-1」與數組自從0開始一致...所以如果他有一些idk選項會自動爲按鈕或其他東西編號,但我從來沒有爲按鈕分配標籤,所以我會研究如何做到這一點,並回到你身邊......看起來好像它能夠發揮我目前發現的功能。感謝您的信息。 –
將標籤添加到按鈕後,它可以很好地工作。視頻從來沒有經過這一步...是否有某種選擇在Xcode自動分配標籤到新創建的按鈕,或什麼? 爲了匹配數組集合,我不得不將「-1」加回到sender.tag的末尾,但現在它完美了。非常感謝你提供的信息。 –