m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

swiftの学習(じゃんけんのサンプルアプリ)

ぶっちゃけしょぼい

まあ、即席なんで…
いろいろいれたほうがいいけど多分こんなんでいいだろw

実装

アイテムを設定

f:id:m_shige1979:20141002073950p:plain

ソース
//
//  ViewController.swift
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var img_view: UIImageView!
    var timer: NSTimer!
    var n:UInt32!
    
    @IBOutlet weak var lbl_cap: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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

    @IBAction func btn_pushJanken(sender: AnyObject) {
        // タイマーを設定
        timer = NSTimer.scheduledTimerWithTimeInterval(
            0.1,
            target: self,
            selector: Selector("updateJanken"),
            userInfo: nil,
            repeats: true
        )
    }
    
    // ぐー
    @IBAction func btn_pushGu(sender: AnyObject) {
        // しょうぶ
        janken_check(1)
        
    }
    
    // ちょき
    @IBAction func btn_pushChoki(sender: AnyObject) {
        // しょうぶ
        janken_check(2)
        
    }
    
    // ぱー
    @IBAction func btn_pushPar(sender: AnyObject) {
        // しょうぶ
        janken_check(3)

    }
    
    // 勝負
    func janken_check(data: UInt32){
        
        // 画像を再表示
        updateJanken()
        
        var res = 0
        
        if(n == data){
            // あいこ
            res = 0
        }else{
            switch(data){
            case 1:
                if(n == 2){
                    res = 1
                }else{
                    res = -1
                }
                break
                
            case 2:
                if(n == 3){
                    res = 1
                }else{
                    res = -1
                }
                break

            default:
                if(n == 1){
                    res = 1
                }else{
                    res = -1
                }
                break
            }
        }
        
        // しょうぶけっか
        var str = ""
        switch(res){
        case 1:
            str = "あなたの勝ちです!"
            break
        case -1:
            str = "あなたの負けです!"
            break
        default:
            str = "あいこです"
            break
        }
        
        lbl_cap.text = str
        println(str)
        
        // タイマー停止
        timer.invalidate()
        
    }
    
    func image_update()->String{
        
        var file:String = ""
        n = arc4random() % 3 + 1;
        switch(n){
        case 1:
            file = "janken_gu.png"
            break;
        case 2:
            file = "janken_choki.png"
            break;
        default:
            file = "janken_par.png"
            break;
        }
        
        return file
    }
    
    // ランダムに画像を表示
    func updateJanken(){
        
        var file: String = image_update()
        
        // 画像の設定
        let myImage = UIImage(named: file)
        
        // 画像をUIImageViewに設定
        img_view.image = myImage
    }
    
}

結果

f:id:m_shige1979:20141002074142p:plain

アルゴリズムはつっこまないで…

即席なんで超適当です。

タイマーや乱数、画像読み込みをいろいろ突っ込んでみた

ちょっとずつ学んだことを組み込んでいけばこんなんならできるような感じ

所感

最初から大きなものを作るとかは考えたら何もできないけど小さなことから学んでいけばある程度はイメージでできそうな感じのよう。
サーバサイドのことが仕事でおおいのであまり画像とか見やすさとかはわからないけど、いろいろと勉強することでできそうなようです。

アルゴリズムとか強化して、表示するものとか勝敗履歴とか見えるようにしたらそこそこまともなアプリになるかも…

素材

http://lmsnn.fc2web.com/material/janken.html
※自由につかっていいって書いてあったんで利用させて頂きました。m(__)m


画面の位置について

普通に配置してもうまく表示されないのでちょっと気をつける必要があるかもしれない
なんかこの辺はまだ、よくわかっていない

f:id:m_shige1979:20141002075259p:plain