新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の数字を入れてボタンを押して下さい"
        }
    }
    
}
 実行して見ましょう。今何回目か、何回で当たったかが判るようになりました。

目次 解説編

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA