新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()
}
}
}