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内部に持たずにユーザの実装に
任せたかというと、一次元配列や連想配列などを使いたい人もいるかもしれないと
考えたためです。
いないですよね・・・。でもオーバーライドも大した手間ではないですし。
ウィキ募集バナー