新Swiftで行こう…第5回「ハイアンドローゲーム2」 田部井保
さて前回最後の問題は解けたでしょうか? まだ解らない人の為にヒントです。
@IBOutlet weak var Guide: UILabel!
@IBOutlet weak var Input: UITextField!
var randInt = Int.random(in: 0 ..< 10)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Guide.text = "0~9の数字を入れてボタンを押して下さい"
}
この中の2箇所です。
1箇所は表示の問題と書いたので分かったのではないでしょうか。
Guide.text = "0~9の数字を入れてボタンを押して下さい"
の部分です。0~9を0~19とすれば良いのは解ったのではないでしょうか。
もう一箇所は難しかったかも知れません。
var randInt = Int.random(in: 0 ..< 10)
ここの10を20と変えれば良いのです。
10で0~9、20で0~19というのが難しかったかも知れませんね。コンピュータでは、0から数えるので、10とした時は0~9、20とした時は0~19という事が良くありま す。ここは、0 ..< 10 の代わりに 0 … 9、0 ..< 20 の代わりに 0 … 19 としても良いです。
以下ソースコードです。
//
// ViewController.swift
// Hi and Lo
//
// Created by 保 Tabei on 2024/08/30.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Guide: UILabel!
@IBOutlet weak var Input: UITextField!
var randInt = Int.random(in: 0 ..< 20)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Guide.text = "0~19の数字を入れてボタンを押して下さい"
}
@IBAction func TouchBtnGo(_ sender: Any) {
let val = Int(Input.text!)!
if val > randInt {
Guide.text = "もっと小さいです"
}
else if val < randInt {
Guide.text = "もっと大きいです"
}
else {
Guide.text = "当たりです"
}
}
}
さて、今回作ったプログラムでは、一度終了しないと次のゲームが出来ません。それでは不便です。何回も遊べるようにしましょう。
else {
Guide.text = "当たりです"
}
の部分を変更します。
else {
let alert = UIAlertController()
alert.title = "当たり"
alert.message = "当たりです"
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
present(alert, animated: true, completion: nil)
randInt = Int.random(in: 0 ..< 10)
Guide.text = "0~9の数字を入れてボタンを押して下さい"
}
として下さい。
以下全体ソースコードです。
//
// ViewController.swift
// Hi and Lo
//
// Created by 保 Tabei on 2024/08/30.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Guide: UILabel!
@IBOutlet weak var Input: UITextField!
var randInt = Int.random(in: 0 ..< 10)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Guide.text = "0~9の数字を入れてボタンを押して下さい"
}
@IBAction func TouchBtnGo(_ sender: Any) {
let val = Int(Input.text!)!
if val > randInt {
Guide.text = "もっと小さいです"
}
else if val < randInt {
Guide.text = "もっと大きいです"
}
else {
let alert = UIAlertController()
alert.title = "当たり"
alert.message = "当たりです"
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
present(alert, animated: true, completion: nil)
randInt = Int.random(in: 0 ..< 10)
Guide.text = "0~9の数字を入れてボタンを押して下さい"
}
}
}
実行してみましょう。何回も遊べるのが判ったと思います。
さて、今度は、当たるまで何回かかったか判るようにしたいと思います。ラベルを一つ追加して、Count という名前でプログラム中で呼べるようにします。
そしてコードを以下のように変更して下さい。
//
// ViewController.swift
// Hi and Lo
//
// Created by 保 Tabei on 2024/08/30.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Guide: UILabel!
@IBOutlet weak var Input: UITextField!
@IBOutlet weak var Count: UILabel!
var randInt = Int.random(in: 0 ..< 10)
var cnt = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Count.text = "0回目"
Guide.text = "0~9の数字を入れてボタンを押して下さい"
}
@IBAction func TouchBtnGo(_ sender: Any) {
cnt = cnt + 1
Count.text = cnt.description + "回目"
let val = Int(Input.text!)!
if val > randInt {
Guide.text = "もっと小さいです"
}
else if val < randInt {
Guide.text = "もっと大きいです"
}
else {
let alert = UIAlertController()
alert.title = "当たり"
alert.message = "当たりです"
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
present(alert, animated: true, completion: nil)
randInt = Int.random(in: 0 ..< 10)
cnt = 0
Guide.text = "0~9の数字を入れてボタンを押して下さい"
}
}
}
実行して見ましょう。今何回目か、何回で当たったかが判るようになりました。