Swiftで、〜〜をいったら負けゲームのようなものを作ってみたのですが予期せぬ動きがまれに起こります。
まず全文がこんな感じなんですが、たまに、1、23、ボタンを押したときにゼロに戻ってしまったり、すでにtetoがXを超えているのに、ゲームが続けられたりしてしまいます。理由が自分ではわからないのでお教えください。
Swift
1import UIKit 2import SpriteKit 3 4class ViewController: UIViewController { 5 6 7 @IBOutlet weak var start: UIButton! 8 @IBOutlet weak var one: UIButton! 9 @IBOutlet weak var two: UIButton! 10 @IBOutlet weak var three: UIButton! 11 @IBOutlet weak var kekka: UILabel! 12 @IBOutlet weak var agote: UILabel! 13 @IBOutlet weak var konkai: UILabel! 14 @IBOutlet weak var serifu: UILabel! 15 @IBOutlet weak var make: UILabel! 16 17 var teto = 0 18 var X = 0 19 20 21 22 23 override func viewDidLoad() { 24 super.viewDidLoad() 25 // Do any additional setup after loading the view, typically from a nib. 26 } 27 28 override func didReceiveMemoryWarning() { 29 super.didReceiveMemoryWarning() 30 // Dispose of any resources that can be recreated. 31 } 32 33 34 //開始ボタン 35 @IBAction func starta(sender: AnyObject) { 36 teto = 0 37 self.make.hidden = true 38 self.one.hidden = false 39 self.two.hidden = false 40 self.three.hidden = false 41 self.agote.hidden = false 42 self.kekka.hidden = false 43 self.serifu.hidden = false 44 self.konkai.hidden = false 45 X = Int(arc4random_uniform(20))+10 46 if X % 4 == 1{ 47 return 48 } 49 self.start.hidden = true 50 konkai.text = String(X) 51 if X % 4 == 0 { 52 teto = 3 53 } else { 54 teto = (X-4)%4-1 55 } 56 agote.text = String(teto) 57 kekka.text = String(teto) 58 } 59 60 //1ボタン 61 @IBAction func onea(sender: AnyObject) { 62 teto = teto + 1 63 kekka.text = String(teto) 64 serifu.text = "考え中" 65 self.one.hidden = true 66 self.two.hidden = true 67 self.three.hidden = true 68 if X <= teto { 69 make.text = "You have lose" 70 self.make.hidden = false 71 self.start.hidden = false 72 self.one.hidden = true 73 self.two.hidden = true 74 self.three.hidden = true 75 self.agote.hidden = true 76 self.kekka.hidden = true 77 self.serifu.hidden = true 78 self.konkai.hidden = true 79 } else { 80 let delay = 3 * Double(NSEC_PER_SEC) 81 let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 82 dispatch_after(time, dispatch_get_main_queue(), { 83 self.teto = self.teto + 3 84 self.kekka.text = String(self.teto) 85 self.agote.text = String(3) 86 self.serifu.text = "君の番だよ" 87 self.one.hidden = false 88 self.two.hidden = false 89 self.three.hidden = false 90 if self.teto > self.X - 1{ 91 self.two.hidden = true 92 self.three.hidden = true 93 } 94 if self.teto > self.X - 2{ 95 self.three.hidden = true 96 } 97 self.teto = 0 98 }) 99 } 100 101} 102 //2ボタン 103 @IBAction func twoa(sender: AnyObject) { 104 teto = teto + 2 105 kekka.text = String(teto) 106 serifu.text = "考え中" 107 self.one.hidden = true 108 self.two.hidden = true 109 self.three.hidden = true 110 if X <= teto { 111 make.text = "You have lose" 112 self.make.hidden = false 113 self.start.hidden = false 114 self.one.hidden = true 115 self.two.hidden = true 116 self.three.hidden = true 117 self.agote.hidden = true 118 self.kekka.hidden = true 119 self.serifu.hidden = true 120 self.konkai.hidden = true 121 } else { 122 let delay = 3 * Double(NSEC_PER_SEC) 123 let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 124 dispatch_after(time, dispatch_get_main_queue(), { 125 self.teto = self.teto + 2 126 self.kekka.text = String(self.teto) 127 self.agote.text = String(2) 128 self.serifu.text = "君の番だよ" 129 self.one.hidden = false 130 self.two.hidden = false 131 self.three.hidden = false 132 if self.teto >= self.X - 1{ 133 self.two.hidden = true 134 self.three.hidden = true 135 } 136 if self.teto >= self.X - 2{ 137 self.three.hidden = true 138 } 139 }) 140 } 141 } 142 //3ボタン 143 @IBAction func threea(sender: AnyObject) { 144 teto = teto + 3 145 kekka.text = String(teto) 146 serifu.text = "考え中" 147 self.one.hidden = true 148 self.two.hidden = true 149 self.three.hidden = true 150 if X <= teto { 151 make.text = "You have lose" 152 self.make.hidden = false 153 self.start.hidden = false 154 self.one.hidden = true 155 self.two.hidden = true 156 self.three.hidden = true 157 self.agote.hidden = true 158 self.kekka.hidden = true 159 self.serifu.hidden = true 160 self.konkai.hidden = true 161 } else { 162 let delay = 3 * Double(NSEC_PER_SEC) 163 let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 164 dispatch_after(time, dispatch_get_main_queue(), { 165 self.teto = self.teto + 1 166 self.kekka.text = String(self.teto) 167 self.agote.text = String(1) 168 self.serifu.text = "君の番だよ" 169 self.one.hidden = false 170 self.two.hidden = false 171 self.three.hidden = false 172 if self.teto > self.X - 1{ 173 self.two.hidden = true 174 self.three.hidden = true 175 } 176 if self.teto > self.X - 2{ 177 self.three.hidden = true 178 } 179 }) 180 } 181 } 182 183}
・追記
このゲームは二人(自分とコンピューター)で1〜3(任意)ずつ言っていき、Xの数字を言った人が負けです。今のところ設定は必ずコンピューターが勝つようにしているつもりです。今回の誤作動?は、例えば今の数字が4で次に人が3を押すと7になるはずなのに3(押した数)に戻ってしまいます。
回答1件
あなたの回答
tips
プレビュー