C# OpenTKでスクランブルもどきをつくります。スクロール型のゲームはOpenTKを使ったほうがやりやすいと思います。

まずはいつものテンプレから。

それからビューポートの設定、視体積の設定、どこから見たものを描画するのかの設定も必要ですね。

スクランブルらしいゲームにするには山やミサイル、燃料タンクが置かれている場所を作らなければなりません。これを管理するためのクラスStageをつくります。Stageクラスでは自機、敵、山などの地形を扱います。

コンストラクタ内でとくにすることはありません。フィールド変数としてBlockクラスのリストがあります。Blockには平地、上り坂、下り坂などの地形を格納します。Missilesには地上に配置または飛行中のミサイルを格納します。

Init()メソッドはテキストファイルを読み取り、その文字列から地形をつくります。

そのテキストファイルですが、このようなものをつくりました。

Mapファイル

文字コードはUTF-8です。そのままリンクをクリックすると文字化けして意味不明な文字列が表示されるかもしれません。

これならどうでしょうか?

テキストファイルのなかの■▲△が地形の状態を表しています。●はビルです。

Mはミサイルの位置、Fは燃料タンクの位置です。数字は各ステージの境界線です。ではInit()メソッドをみてみましょう。

ここでやっていることはテキストファイルを読み出して、そのなかにある文字から地形や初期状態の敵の位置を取得しています。

ビットマップイメージを用意して、これで敵を描画します。

Draw()メソッドはStageクラスのデータをもとに描画をするためのものです。

Draw()メソッド内で呼び出されているDrawTypeXメソッドを示します。

各ブロックは縦横の比が1:1にはなっていません(描画された山が山らしくないので)。フィールド変数 BlockAspectを使って調整しています。

それからDrawType6(float x, float y)メソッドだけビットマップイメージを使って描画しています。

これは地形を描画するためのブロックの座標を管理するためのクラスです。

またテクスチャを使った描画ができるようにForm1クラスのなかで以下の処理を行ないます。

次にミサイルを描画するためのクラスを示します。

これでゲームを開始すれば地形とミサイルは描画されます。ただしミサイルは飛ばないし、肝心の自機も表示されません。続きは次回。