私はスイフト3でナッツとクロスゲームを作成しています。ゲームに勝ったときに警告が表示されますが、私が見ることができない勝利ロジックに何か問題があります。Swiftのロジックに関する問題
何らかの理由でアラートが機能しますが、ユーザーはどこでもクリックすることができますが、触れたい場所を具体的に指定しても表示されます。だから私がそれを置こうとしたのは、3つの画像がお互い= 1でなければuser = 1であり、user = 2であればwin警告が発生するということです。しかし、ユーザーが勝者の変更を1にタッチするたびに、それは分かりそうです。なぜ誰かがこれに何らかの光を当てることができますか?
警告が()現在、時間を節約するために、今の水平勝利関数で呼び出されるなど
class ViewController: UIViewController {
@IBOutlet var cross: UIImage!
@IBOutlet var nought: UIImage!
@IBOutlet weak var image1: UIImageView!
@IBOutlet weak var image2: UIImageView!
@IBOutlet weak var image3: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
cross = UIImage(named: "Cross.png")
nought = UIImage(named: "Naught.png")
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
var gamepiece = 1
var whowon = 0
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let user = event?.allTouches!.first!
if image1.frame.contains((touch?.location(in: self.view))!) {
if user == 1{
image1.image = cross
user = 2
}
else{
image1.image = nought
user=1
}
}
if image2.frame.contains((touch?.location(in: self.view))!) {
if user == 1{
image2.image = cross
user = 2
}
else{
image2.image = nought
user=1
}
}
if tR.frame.contains((touch?.location(in: self.view))!) {
if user == 1{
image3.image = cross
user = 2
}
else{
image3.image = nought
user=1
}
}
}
func win(){
if (image1.image == image2.image || image2.image == image3.image){
whowon = 1
alert()
}
return true
}
func alert(){
if (whowon == 1){
let winner = UIAlertController(title: "", message: "Well done.", preferredStyle: .alert)
let action1 = UIAlertAction(title: "", style: .default) { (alert: UIAlertAction!) -> Void in self.turn.text = ""
self.resetBoard()
}
let action2 = UIAlertAction(title: "", style: .default) { (alert: UIAlertAction!) -> Void in self.turn.text = ""
}
winner.addAction(action1)
winner.addAction(action2)
}
コードダンプを関連するコードに制限してください。予期しない結果が発生したときにあなたのif/else条件のどれが落ちているのかを確認するためにコードにブレークポイントを入れましたか? – Bek