新Swiftで行こう…第55回「ハイアンドローゲーム4解説」 田部井保
ハイアンドローゲーム4の解説です。
//
// ViewController.swift
// Hi and Lo
//
// Created by 保 Tabei on 2024/09/22.
//
import UIKit
class ViewController: UIViewController {
///ガイドラベル
@IBOutlet weak var Guide: UILabel!
///入力フィールド(0〜9を入れる)
@IBOutlet weak var Input: UITextField!
///回数表示ラベル
@IBOutlet weak var Count: UILabel!
///レベル指定セグメンテッドコントロール
@IBOutlet weak var Level: UISegmentedControl!
///乱数保持変数
var randInt = 0
///回数保持、最初は0
var cnt = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//初期設定処理
reset()
}
///初期設定処理、ゲーム開始状態にする
func reset()
{
//初級の場合
if Level.selectedSegmentIndex == 0 {
//乱数発生 0〜9
randInt = Int.random(in: 0 ..< 10)
//ガイドラベル初期化 0〜9
Guide.text = "0~9の数字を入れてボタンを押して下さい"
//中級の場合
} else {
//乱数発生 0〜19
randInt = Int.random(in: 0 ..< 20)
//ガイドラベル初期化 0〜19
Guide.text = "0~19の数字を入れてボタンを押して下さい"
}
//回数初期化0に
cnt = 0
//回数表示0回目
Count.text = "0回目"
}
///レベル変更時処理
@IBAction func LevelChange(_ sender: Any) {
//初期設定処理
reset()
}
///ボタン押下時処理
@IBAction func TouchBtnGo(_ sender: Any) {
//回数加算
cnt = cnt + 1
//回数表示
Count.text = cnt.description + "回目"
//入力フィールドに入れた値を数値としてval変数に入れる
let val = Int(Input.text!)!
//入力値と乱数を比べて入力値が大きい場合
if val > randInt {
Guide.text = "もっと小さいです"
}
//入力値と乱数を比べて入力値が小さい場合
else if val < randInt {
Guide.text = "もっと大きいです"
}
//上記以外、等しい時
else {
Guide.text = "当たりです"
//OKボタンの表示と押下時処理記述
//押下時reset関数を呼ぶ
let okAction = UIAlertAction(title: "OK", style: .default)
{ (action) in
self.reset()
}
//アラートコントローラー定義
//タイトル、メッセージをまとめた
//スタイルはアラート
let alert = UIAlertController(title: "当たり", message: "当たりです", preferredStyle: .alert)
//アラートアクション
alert.addAction(okAction)
//アラートを出す
present(alert, animated: true, completion: nil)
}
}
}
52行目は、今回reset関数の中に入れる事が出来る様になりました。今までは、reset関数に入れてしまうと、当たった時、すぐに記述が0回目となってしまって、何回で当たったかが分からなくなってしまっていました。
79行目の”当たりです”の表示ですが、ここも以前の場合だと、すぐに”0~9の数字を入れてボタンを押して下さい”等となってしまい、ここで出しても意味がありませんでした。今回reset関数がOKボタンを押してから起動する様になった為、意味が出てきました。
82行目〜85行目が、
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
以前addActionの中に書いていたものを表に出したものです。OKボタンを押した後にreset関数を起動する様にしています。
89行目が
let alert = UIAlertController()
alert.title = "当たり"
alert.message = "当たりです"
以前、この様に書いていた部分をまとめたものです。それ以外に
preferredStyle: .alert
とする事で、アラートの出し方を以前とは変えています。
preferredStyle: .actionSheet
とすれば、以前と同じ形になります。
91行目は、以前()内に定義も記述していましたが、今回82〜85行目に書いたものを指定する様にしました。