ViewController.swift
let backgroundImage = UIImage(named: "Image")!
self.view.backgroundColor = UIColor(patternImage: backgroundImage)

buttonで遷移させる。次はテキストフィールド

ソフトウェアエンジニアの技術ブログ:Software engineer tech blog
随机应变 ABCD: Always Be Coding and … : хороший
ViewController.swift
let backgroundImage = UIImage(named: "Image")!
self.view.backgroundColor = UIColor(patternImage: backgroundImage)

buttonで遷移させる。次はテキストフィールド

連敗中は、「-3連敗」ではなく、「3連敗」としたい。
if self.load > 1 {
self.gameResult.text = String(self.load) + str
} else if self.load < -1{
self.gameResult.text = String(abs(self.load)) + strl
} else {
}
[/code]
きたーーーーーー

とりあえず、じゃんけんアプリ完成!
さて、app申請したい。
@IBAction func getChoki(_ sender: Any) {
let results2 = ["Image1","Image2","Image3"]
let random2 = arc4random_uniform(UInt32(results2.count))
let image2 = UIImage(named: results2[Int(random2)])
imageView.image = image2
let image5 = UIImage(named: "Image5")
imageView2.image = image5
let even = "あいこ"
let win = "あなたの勝ち"
let lose = "あなたの負け"
if random2 == 0 {
self.gameResult.text = lose
if self.userDefaults.object(forKey: "load") != nil {
if self.userDefaults.integer(forKey:"load") < 0 {
self.load = self.userDefaults.integer(forKey:"load")
self.load -= 1
} else {
self.load = -1
}
} else {
self.load = -1
}
} else if(random2 == 1){
self.gameResult.text = even
if self.userDefaults.object(forKey: "load") != nil {
self.load = self.userDefaults.integer(forKey: "load")
} else {
self.load = 0
}
} else {
self.gameResult.text = win
if self.userDefaults.object(forKey: "load") != nil {
if self.userDefaults.integer(forKey:"load") > 0 {
self.load = self.userDefaults.integer(forKey:"load")
self.load += 1
} else {
self.load = 1
}
} else {
self.load = 1
}
}
self.gameResult.text = String(self.load) + str
UserDefaults.standard.set(self.load, forKey: "load")
}
7連勝中でも、一度負けると-1連勝に成りました。
あとはviewの分岐ですね。

self.userDefaults.object(forKey: “load”) != nil で、空判定
let userDefaults = UserDefaults.standard
var load = 0
var str:String = "連勝"
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var resultView: UILabel!
@IBOutlet weak var imageView2: UIImageView!
@IBOutlet weak var gameResult: UILabel!
@IBAction func getGoo(_ sender: Any) {
let results1 = ["Image1","Image2","Image3"]
let random1 = arc4random_uniform(UInt32(results1.count))
let image1 = UIImage(named: results1[Int(random1)])
imageView.image = image1
let image4 = UIImage(named: "Image4")
imageView2.image = image4
let even = "あいこ"
let win = "あなたの勝ち"
let lose = "あなたの負け"
if random1 == 0 {
self.gameResult.text = even
if self.userDefaults.object(forKey: "load") != nil {
self.load = self.userDefaults.integer(forKey: "load")
} else {
self.load = 0
}
} else if(random1 == 1){
self.gameResult.text = win
if self.userDefaults.object(forKey: "load") != nil {
self.load = self.userDefaults.integer(forKey:"load")
self.load += 1
} else {
self.load = 1
}
} else {
self.gameResult.text = lose
if self.userDefaults.object(forKey: "load") != nil {
self.load = self.userDefaults.integer(forKey:"load")
self.load -= 1
} else {
self.load = -1
}
}
self.gameResult.text = String(self.load) + str
UserDefaults.standard.set(self.load, forKey: "load")
}
なるほど、保存できることはわかった。

負けた時に、-1連勝となるので、var str:String = “連勝” の他に、連敗のテキストを作り、連勝中の負けの時と連敗中の勝ちの時は、load = 0 にリセットですな。
勝ちの時
if self.userDefaults.object(forKey: "load") != nil {
if self.userDefaults.integer(forKey:"load") > 0 {
self.load = self.userDefaults.integer(forKey:"load")
self.load += 1
} else {
self.load = 0
}
負けの時
if self.userDefaults.integer(forKey:”load”) < 0 { self.load = self.userDefaults.integer(forKey:"load") self.load -= 1 } else { self.load = 0 } [/code]
シミュレータを立ち上げようとすると、
unable to boot device due to insufficient system resources.
なにに。。。。。。。。。
terminalを開いて、、
mac:~ mac$ sudo launchctl limit maxproc 2000 2500
![]()
起動するように成りました。
ここら辺はそんなに焦りませんね。
UserDefaults.standardを変数にします。
let userDefaults = UserDefaults.standard var load = 0
0でない場合は、1を足し、0は1。
if self.userDefaults.integer(forKey: "load") != 0 {
self.load = self.userDefaults.integer(forKey:"load")
self.load += 1
} else {
self.load = 1
}
UserDefaults.standard.set(1, forKey: "load")
あ、self.userDefaults.integer(forKey: “load”) > 0 か。elseはokですね。
これを、グーチョキパーの勝ち負け引き分けパターン入れていく。
負けの場合は self.userDefaults.integer(forKey: “load”) < 0 として、表示する時に更に分岐で連勝・連敗を表示か。
UserDefaultsは手軽にデータの永続化ができる
インスタンスの作成は UserDefaults.standard
gooが押された時に、arc4randomの結果をif else文で出し分ける。
@IBAction func getGoo(_ sender: Any) {
let results1 = ["Image1","Image2","Image3"]
let random1 = arc4random_uniform(UInt32(results1.count))
let image1 = UIImage(named: results1[Int(random1)])
imageView.image = image1
let image4 = UIImage(named: "Image4")
imageView2.image = image4
let even = "あいこ"
let win = "あなたの勝ち"
let lose = "あなたの負け"
if random1 == 0 {
self.gameResult.text = even
} else if(random1 == 1){
self.gameResult.text = win
} else {
self.gameResult.text = lose
}
}
勝ち負けが出るようになりました。

グーチョキパー出したい。
同じように関数の中に分岐を書くと、できる。

最後、連勝・連敗を表示したい。
その為には、変数を宣言して、値(n)を保存して if n = 0 勝ちなら +1、負けなら-1、if n > 0 で勝ちなら +1、あいこならそのまま、負けならリセット、if < 0 で負けなら、-1、あいこならそのまま、勝ちならリセット。
そもそも変数を保存できるか?
storyboardのconstrainのerror解消がわからず、時間がかかりましたが、
@IBAction func getGoo(_ sender: Any) {
let results1 = ["Image1","Image2","Image3"]
let random1 = arc4random_uniform(UInt32(results1.count))
let image1 = UIImage(named: results1[Int(random1)])
imageView.image = image1
let image4 = UIImage(named: "Image4")
imageView2.image = image4
}
@IBAction func getChoki(_ sender: Any) {
let results2 = ["Image1","Image2","Image3"]
let random2 = arc4random_uniform(UInt32(results2.count))
let image2 = UIImage(named: results2[Int(random2)])
imageView.image = image2
let image5 = UIImage(named: "Image5")
imageView2.image = image5
}
@IBAction func getPa(_ sender: Any) {
let results3 = ["Image1","Image2","Image3"]
let random3 = arc4random_uniform(UInt32(results3.count))
let image3 = UIImage(named: results3[Int(random3)])
imageView.image = image3
let image6 = UIImage(named: "Image6")
imageView2.image = image6
}
override func viewDidLoad() {
super.viewDidLoad()
imageView.contentMode = UIViewContentMode.center
self.view.addSubview(imageView)
imageView2.contentMode = UIViewContentMode.center
self.view.addSubview(imageView2)
// Do any additional setup after loading the view, typically from a nib.
}
O~K~! 選択したグーチョキパーとランダムのグーチョキパーを表示します。

勝ちか負けかをテキストで表示したい
可能であれば、何連勝とかも。。できるのか?
まず、グーチョキパーを180° rotateさせたpngを用意します。

assetの画像をrotateしたグーチョキパーに置き換えます。

続いて、rotateしないグーチョキパーをassetに保存します。

compileするとグーチョキパーが逆になります。

「ポン」をグーチョキパーにしたい。
controllerviewにボタンを置いて、buttonのinspector painでimageを選択します。

なるほど!