Swiftで行こう…第5回「ハイアンドローゲーム3」(もちゃち)

2014-10-05

目次ページへ

ーーーMavericks Xcode6.1ーーー
さて、今度は
        randInt = Int(arc4random_uniform(10))
        cnt = 0
        Guide.text = "0~9の数字を入れてボタンを押して下さい"
の部分が最初と、当たってからの処理の2箇所に書かれています。これをまとめてみます。
005-01
これで結構すっきりしましたね。
以下ソースコードです。
import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var Guide: UILabel!
    @IBOutlet weak var Input: UITextField!
    @IBOutlet weak var Count: UILabel!
    var randInt:Int = 0
    var cnt:Int = 0

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        reset()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func reset() {
        randInt = Int(arc4random_uniform(10))
        cnt = 0
        Guide.text = "0~9の数字を入れてボタンを押して下さい"
    }
    
    @IBAction func TouchBtnGo(sender: AnyObject) {
        cnt = cnt + 1
        Count.text = cnt.description + "回目"
        var val = Input.text.toInt()!
        if val > randInt {
            Guide.text = "もっと小さいです"
        } else if val < randInt {
            Guide.text = "もっと大きいです"
        } else {
            var alert = UIAlertView()
            alert.title = "当たり"
            alert.message = cnt.description + "回目で当たりです"
            alert.addButtonWithTitle("OK")
            alert.show()
            reset()
        }
    }
}
今度は、初級(0〜9)、中級(0〜19)と選択出来るようにします。セグメンテッドコントロールを選択します。
005-02
画面上の適当な位置に配置します。
005-03
右上の左から4番目のアイコンで設定を出して、SegmentがSegment 0となっている事を確認し、Titleに「初級」と入れます。
Returnキーを押すと確定します。
005-04
SegmentをSegment 1にして、Titleに「中級」と入れます。
005-05
セグメンテッドコントロールを選択して、controlキーを押しながらドラッグしてコード領域にドロップします。
005-06
ポップアップが出るので、Name欄に「Level」と入力して、「Connect」ボタンを押します。
005-07
リセット関数の中身を変更します。
005-08
    func reset() {
        if Level.selectedSegmentIndex == 0 {
            randInt = Int(arc4random_uniform(10))
            Guide.text = "0~9の数字を入れてボタンを押して下さい"
        } else {
            randInt = Int(arc4random_uniform(20))
            Guide.text = "0~19の数字を入れてボタンを押して下さい"
        }
        cnt = 0
    }
右上の一番右のアイコンを選び、Value Changedの右側の○からドラッグして、コード上の適切な位置にドロップします。
005-09
ポップアップが出るので、Name欄に「LevelChange」と入力して、「Connect」ボタンを押します。
005-10
挿入された関数の本文に
005-11
    @IBAction func LevelChange(sender: AnyObject) {
        reset()
    }
と書きます。
以下全体ソースコードです。
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, typically from a nib.
        reset()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func reset() {
        if Level.selectedSegmentIndex == 0 {
            randInt = Int(arc4random_uniform(10))
            Guide.text = "0~9の数字を入れてボタンを押して下さい"
        } else {
            randInt = Int(arc4random_uniform(20))
            Guide.text = "0~19の数字を入れてボタンを押して下さい"
        }
        cnt = 0
    }
    
    @IBAction func LevelChange(sender: AnyObject) {
        reset()
    }
    
    @IBAction func TouchBtnGo(sender: AnyObject) {
        cnt = cnt + 1
        Count.text = cnt.description + "回目"
        var val = Input.text.toInt()!
        if val > randInt {
            Guide.text = "もっと小さいです"
        } else if val < randInt {
            Guide.text = "もっと大きいです"
        } else {
            var alert = UIAlertView()
            alert.title = "当たり"
            alert.message = cnt.description + "回目で当たりです"
            alert.addButtonWithTitle("OK")
            alert.show()
            reset()
        }
    }
}
さて問題です。最後の関数を入れたのはなぜでしょうか?
また、reset関数の中身をもう少しシンプルに出来ないでしょうか?
また、今度は更に上級(0〜29)を加えるとしたらどうすれば良いでしょうか?
3番目の問題のヒントです。右上、左から4番目のアイコンを選んで、Segmentsの部分を2から3に変更すると、2つ区切りだったものが3つ区切りになります。
005-12
ーーーMavericks Xcode6.0.1ーーー

さて、今度は

randInt = Int(arc4random_uniform(10))
cnt = 0
Guide.text = “0~9の数字を入れてボタンを押して下さい”

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

Hi and Lo3-01

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

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

Hi and Lo3-02

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

Hi and Lo3-03

右上の左から4番目のアイコンで設定を出して、SegmentがSegment 0となっている事を確認し、Titleに「初級」と入れます。

Hi and Lo3-04

SegmentをSegment 1にして、Titleに「中級」と入れます。

Hi and Lo3-05

Returnキーを押すと確定します。

Hi and Lo3-06

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

Hi and Lo3-07

リセット関数の中身を変更して、右上の一番右のアイコンを選び、Value Changedの右側の○からドラッグして、コード上の適切な位置にドロップします。ポップアップが出るので、Name欄に「LevelChange」と入力して、「Connect」ボタンを押します。

Hi and Lo3-08

挿入された関数の本文に
reset()
と書きます。

Hi and Lo3-09

さて問題です。最後の関数を入れたのはなぜでしょうか?
また、reset関数の中身をもう少しシンプルに出来ないでしょうか?
また、今度は更に上級(0〜29)を加えるとしたらどうすれば良いでしょうか?

3番目の問題のヒントです。右上、左から4番目のアイコンを選んで、Segmentsの部分を2から3に変更すると、2つ区切りだったものが3つ区切りになります。

Hi and Lo3-10

目次ページへ

Since1991 © Shimayugu All Rights Reserved.
アップルおよびアップルのロゴは、米国および他の国々で登録されたApple Inc.の商標です。
湘南マッキントッシュユーザーズグループは、独立したユーザグループで、Apple Japan合同会社が権限を与えた団体、支援する団体、またはその他に承認する団体ではありません。