アプリ制作記5 シングルトンのパラメータクラス

画面はすんなり表示できるという事がわかったので、次はオセロゲームに必要なコーディングの準備をしようかな。

 

ゲーム内で必要になる色々な変数を、画面やノードなどに分散させて持たせるのではなく、プロジェクト内で唯一となるパラメータクラスに持たせて管理しようかなと構想してみました。

 

唯一といえばこれ、シングルトンパターンを使ってみたい!という事で、基本形を描いてみました。

 

import Foundation

import SpriteKit

import GameplayKit

 

class Parameter{

    static let sharedInstance = Parameter()

    //マスの幅と高さ

    public let _X : Int = 8

    public let _Y : Int = 8

    //制限時間

    public var _timeBlack : Int?

    public var _timeWhite : Int?

    //秒読み

    public var _sec : Int?

    //1マスの幅と高さ

    public var _UnitWidth : Int?

    public var _UnitHeight : Int?

    //駒の幅と高さ

    public var _FrameWidth : Int?

    public var _FrameHeight : Int?

    //座標(右上0,0  右下0,7 左上7,0 左下7,7)

    public var _UnitCenterX = [Int]()

    public var _UnitCenterY = [Int]()

    //座標の状態(0:コマなし 1:黒 2:白)

    public var _UnitExist = [Int]()

    //現在の手番(1:黒 2:白)

    public var _CurrentPlayer = 1

    

    private init() {

    }

    

    //黒の時間を返す

    func GetTimeForBlack() -> String{

 

    }

    

    //白の時間を返す

    func GetTimeForWhite() -> String{

 

    }

    

    //黒駒の画像を返す(引数は盤上の座標 右上0,0  右下0,7 左上7,0 左下7,7)

    func GetBlackFrame(aX:Int, aY:Int) -> SKSpriteNode {

 

    }

    

    //白駒の画像を返す(引数は盤上の座標 右上0,0  右下0,7 左上7,0 左下7,7)

    func GetWhiteFrame(aX:Int, aY:Int) -> SKSpriteNode {

 

    }

    

    //1マスの幅と高さ、駒の幅と高さを指定(引数はボードのSKSpriteNode)

    func SetFrameAndUnitXY(aNode:SKSpriteNode?){

 

    }

    

    //駒を置く(引数:置いた位置 戻り値:true正常に置く false異常位置)

    func SetFrame(aX:Int, aY:Int) -> SKSpriteNode? {

 

    }

 

}

 

オセロの盤上で必要になると思われる、1マスの幅と高さだったり、黒と白の制限時間だったり、パラメータ絡みで必要になりそうな関数だったり、シングルトンを使ってパラメータクラスを定義しました。

 

呼び出し側は、

 

Parameter.sharedInstance.メンバ変数

Parameter.sharedInstance.メンバ関数

 

とすることで、必要な画面からどこでもパラメータクラス内の変数や関数を呼び出せて、パラメータクラスは乱立しないことになります。これがどこまで使い勝手良く使えるかは今後みていこう。そうしよう。