このコードは自分のものではなく、私は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
}
}
}
主な問題は、私はgameState [sender.tag]の部分を理解していないということです。ここ
まず第一にコードがあります。私がプログラムを実行すると、私が持っているボタンを最初にクリックしても何もせず、次のクリックでcross.pngが必要になります。 最初の十字が配置された後、クリックすると何も生成されません。十字架は変わらず、空白のボタンも十字架やいたずらに変わることはありません。
ビデオチュートリアルでは、[sender.tag]の最後にgamestate [sender.tag-1]の末尾に "-1"を追加するように指示しますが、これを行うとエラーが発生しますプログラムが実行されたときにボタン上に表示されます。したがって、私はその部分を削除し、プログラムは実行されますが、前述の状況が発生します。
コミュニティカレッジのC++コースの紹介を終え、趣味としてSwift 3を学習しているので、この状況を簡単に説明できる基本的な情報が不足している可能性があります。
この状況の可能性を私の無知だけに基づいていることを前提にしていただき、ありがとうございます。私は送信者タグや他のものについて数日間は役に立たないことを学びました。私はこの状況から学ぶことができ、どんな情報にも感謝することを願っています!
私はビデオを見ませんでした。しかし、コードから判断すると、*タグ*(1 ... 9)をストーリーボードエディタのすべてのボタンに割り当てる必要があります。 –
チュートリアルはそのステップを経なかったし、彼のためにはうまくいくが、彼が追加する "-1"は配列が0から始まるので配列と一致するということを言及する。ボタンに何かを自動的に割り当てるオプションがありますが、ボタンにタグを割り当てたことはありませんので、それをやり直す方法を見て、これまでに発見したことがあればうまくいくかのように見えます。情報ありがとうございました。 –
ボタンにタグを追加した後は完全に機能します。ビデオはそのステップを踏んだことはありません... Xcodeには、新しく作成されたボタンにタグを自動的に割り当てる何らかのオプションがありますか? 配列セットと一致させるためにsender.tagの最後に "-1"を追加しなければなりませんでしたが、今は完全に機能します。情報をいただきありがとうございます。 –