2012年05月13日

【PlayStation Suite】サンプル4 オブジェクト指向的にプログラムを組む 改造版

とりあえずプログラムを組むに当たって、
自分が作りやすい形にしたり、分かりやすい構造を作りやすい形にしておくのは必要なので、
PS Suiteのプログラミングガイドの4
オブジェクト指向的にプログラムを組むをベースに、
自分用に少し構造を改造した物を作ってみた

abstract public class PssGameBase : IDisposable {
static Boolean loop = true; // メインループの警告メッセージ回避用
// 描画関連
protected GraphicsContext graphics;
public GraphicsContext Graphics{
get{ return graphics; }
}

// 時間計測
Stopwatch timer;
const int pinSize = 3;
int[] time = new int[pinSize];
int[] preTime = new int[pinSize];

//
public void Run(string[] args){
FwInitialize();
Initialize();
while(loop){
time[0] = (int)timer.ElapsedTicks;
SystemEvents.CheckEvents();
FwUpdate();
Update();
time[1] = (int)timer.ElapsedTicks;
FwRender();
Render();
}
Terminate();
}

//
abstract public void Initialize();
abstract public void Update();
abstract public void Render();

// 初期化処理
virtual public void FwInitialize(){
Log("Initialize()");
graphics = new GraphicsContext();
timer = new Stopwatch();
timer.Start();
}

// 更新処理
virtual public
void FwUpdate(){

}
// 描画処理
virtual public void FwRender(){

}
//
virtual public void Terminate(){
}

// ログ出力
public void Log(string str){
Console.WriteLine(str);
}

///////////////////////////////////////////////////////
public void Dispose(){
}
}

まだ何も入っていないレベルの構造だったりします。
使う時は何も考えずにこのクラスを継承して、
abstractになっているInitialize,Update,Renderのメソッドを作成する。
初期化処理ならInitializeのメソッドに全部つっこんで、
更新やら描画処理はUpdateやRenderに書き込む。
描画を実際にするときはgraphics.SetClearColor(xx,xx,xx,xx)みたいな感じで
graphicsを何も考えずに呼び出せば描画される。
後はメインメソッドで
	public static void Main (string[] args){
using( PssGame game = new PssGame()){
game.Run(args);
}
}

と何も考えずに呼び出しておけば動く。

一応この構造1つ作っておけば、
いろいろな拡張する場合になっても、
これを基盤にする事で、開発がしやすくなるはず。
posted by 迷い猫 at 12:05| Comment(0) | TrackBack(0) | 日記(Books) | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/269777353
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。