新Swiftで行こう…第6回「ハイアンドローゲーム3」 田部井保

目次 解説編

 さて、今度は

            randInt = Int.random(in: 0 ..< 10)
            cnt = 0
            Guide.text = "0~9の数字を入れてボタンを押して下さい"

の部分が最初と、当たってからの処理の2箇所に書かれています。これをまとめてみます。

//
//  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 = 0
    var cnt = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        Count.text = "0回目"
        reset()
    }
    
    func reset()
    {
        randInt = Int.random(in: 0 ..< 10)
        cnt = 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)
            reset()
        }
    }
    
}

 これで結構すっきりしましたね。

 今度は、初級(0~9)、中級(0~19)と選択出来るようにします。セグメンテッドコントロールを選択します。

 画面上の適当な位置に配置します。

 一番上に配置して見ました。配置したセグメンテッドコントロールを選択して、一番右の枠の上部のアイコン、左から5番目を選びます。

 Segmentが「Segment 0 – First」となっているのを確認して、その下のTitleに「初級」と入れてエンターキーを押します。続いて、Segmentを「Segment 1 – Second」として、Titleに「中級」と入れてエンターキーを押します。

 セグメンテッドコントロールを選択して、controlキーを押しながらドラッグしてコード領域にドロップ します。ポップアップが出るので、Name欄に「Level」と入力して、「Connect」ボタンを押します。

 reset関数の中身を変更します。

    func reset()
    {
        if Level.selectedSegmentIndex == 0 {
            randInt = Int.random(in: 0 ..< 10)
            Guide.text = "0~9の数字を入れてボタンを押して下さい"
        } else {
            randInt = Int.random(in: 0 ..< 20)
            Guide.text = "0~19の数字を入れてボタンを押して下さい"
        }
        cnt = 0
    }

 右上の一番右のアイコンを選び、Value Changedの右側の○からドラッグして、コード上の適切な位置 にドロップします。

 ポップアップが出るので、Name欄に「LevelChange」と入力して、「Connect」ボタンを押します。 挿入された関数の本文に

    @IBAction func LevelChange(_ sender: Any)
    {
        reset()
    }

と書きます。 以下全体ソースコードです。

//
//  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!
    @IBOutlet weak var Level: UISegmentedControl!
    
    var randInt:Int = 0
    var cnt:Int = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        Count.text = "0回目"
        reset()
    }
    
    func reset()
    {
        if Level.selectedSegmentIndex == 0 {
            randInt = Int.random(in: 0 ..< 10)
            Guide.text = "0~9の数字を入れてボタンを押して下さい"
        } else {
            randInt = Int.random(in: 0 ..< 20)
            Guide.text = "0~19の数字を入れてボタンを押して下さい"
        }
        cnt = 0
    }

    @IBAction func LevelChange(_ sender: Any)
    {
        reset()
    }
    
    @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)
            reset()
        }
    }
    
}

目次 解説編

コメントを残す

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

CAPTCHA