SLGBaseで戦術級シミュレーションゲームを作ってみる
3.マップの実装
最終更新:
slgbase
-
view
3-1.MapBaseクラスを継承したMapクラスを作成します。
Mapクラスでは、マップのセル配列に関係するメンバであるGetCell()、Rows、Colsの3つのメンバをオーバーライドする必要があります。
また、それに関してセル配列自体を保持するプライベート配列も用意し、それらをセットアップするための関数も用意します。
また、それに関してセル配列自体を保持するプライベート配列も用意し、それらをセットアップするための関数も用意します。
例として、プロジェクトにMap.csファイルを追加し、そこにMapクラスを実装します。
Map.cs
using System;
using System.Collections.Generic;
using System.Text;
using SLGBase; //add 3-1
namespace SLGTest
{
//add 3-1
public class Map: MapBase
{
private Cell[,] _cells = null;
private int _cols = 0, _rows = 0;
public void Init(int cols, int rows)
{
_cells = new Cell[cols, rows];
_cols = cols;
_rows = rows;
for (int x = 0; x < cols; x++)
for (int y = 0; y < rows; y++)
{
_cells[x, y] = new Cell() { X = x, Y = y };
}
}
public override CellBase GetCell(int x, int y)
{
return (_cells[x, y]);
}
public override int Cols { get { return (_cols); } }
public override int Rows { get { return (_rows); } }
}
}
※完全に余談になりますが、なぜセルの配列をMapBase内部に持たずにユーザの実装に 任せたかというと、一次元配列や連想配列などを使いたい人もいるかもしれないと 考えたためです。 いないですよね・・・。でもオーバーライドも大した手間ではないですし。