新Swiftで行こう…第4回「ハイアンドローゲーム1」 田部井保
今回はハイアンドローゲームを作ります。コンピュータが0~9までの数字の中から一つを覚えます。その数字を当てるゲームです。
それでは早速作りましょう。Xcodeを立ち上げ、「Create New Project…」を選択します。
iOS App を選んで「Next」ボタンを押します。
Product Name:に「Hi and Lo」と入れて、Interface:が「Storyboard」となっているのを確認して、「Next」ボタンを押します。
プロジェクトの保存場所を指定して「Create」ボタンを押します。
この様になります。
ここで左側のMainを選びます。
この様になります。
ここでViewメニューから「Show Library」を選びます。
今回は、LabelとText FieldとButtonをドラッグ&ドロップして、iPhoneのイメージに重ねます。Text Fieldは下の方にあります。
この様な感じにします。Text Fieldは真ん中辺にあります。
Labelが短いので広げます。Labelをクリックすると4つの四角が出るので、その内の左右の四角をそれぞれ外側にドラッグします。
この様な感じになりましたでしょうか?
ここで、真ん中の区画の最右端の上の方にある線の入った四角にプラスが書かれているアイコンをクリックして下さい。
この様に真ん中の区画が2つに分かれます。ここで、2つに分かれた左側(右側でも構いません)を選んで、一番左側の「ViewController」を選択します。
この様になりましたでしょうか?
右側(左側)のLabelをcontrolキーを押しながらドラッグして左側(右側)のコード領域の適切な位置(僕は12行目にしました)にドロップします。
ポップアップが出るので、Nameに「Guide」と書いてエンターキーを押し「Connect」ボタンを押します。
ここでは12行目に一行入りました。
右側(左側)のText Fieldも同様にcontrolキーを押しながらドラッグして、左側(右側)のコード領域の適切な位置(僕は13行目にしました)にドロップします。
ポップアップが出るので、Nameに「Input」と書いてエンターキーを押し「Connect」ボタンを押します。
2行追加されました。位置は、あまり気にしなくて大丈夫です。viewDidLoadの中に入っているとかだと困りますが。
//
// 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!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
Buttonを選択して、一番右の枠の上に並んでいる7個のアイコンの一番右を選びます。
ここのTouch Downの右の丸をクリックしてドラッグし、左のコード領域の適切な位置(僕は19行目にしました)にドロップします。
ポップアップが現れるので、Nameに「TouchBtnGo」と書いてエンターキーを押し、Connectボタンを押します。
この様になりました。
//
// 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!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func TouchBtnGo(_ sender: Any) {
}
}
ここで以下の様に
var randInt = Int.random(in: 0 ..< 10)
を入れます。
//
// 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.
}
@IBAction func TouchBtnGo(_ sender: Any) {
}
}
こんな感じです。
続いて、viewDidLoadの中に以下のコードを入れます。
//
// 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) {
}
}
そして、 TouchBtnGoに以下のコードを入れます。
//
// 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 {
Guide.text = "当たりです"
}
}
}
こんな感じになりましたでしょうか?
それでは、一番左のブロックの右上の▶️を押してみましょう。マシンのスペックによっては非常に時間がかかります。
それでは、真ん中のText Fieldに適当な数字を入れてボタンを押して見ましょう。
僕は、5を入れて見ました。そうしたら、「もっと小さいです」と出ました。人によっては「もっと大きいです」や「当たりです」になったと思います。
続いて、2を入れてボタンを押して見ました。まだ小さいと言われました。
0で当たりました。
さて、皆さんに問題です。今回は0~9でしたが、これを0~19の当たりが出るようにするには、どこを 変えれば良いでしょう。表示も変えるとすると2箇所変更する必要があります。