自分が作りやすい形にしたり、分かりやすい構造を作りやすい形にしておくのは必要なので、
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つ作っておけば、
いろいろな拡張する場合になっても、
これを基盤にする事で、開発がしやすくなるはず。
【日記(Books)の最新記事】


