저는 최근에 새로운 Tron 영화를 본 후 약간의 텍스트 기반 게임을하고 있습니다. (당신이 당신의 손에 많은 시간을 가진 괴짜 일 때처럼).그리드 만들기 - 효율적인 방법은 무엇입니까
개체를 배치 할 수있는 그리드를 만들었으며 현재 그리드를 만드는 데 오랜 시간이 걸리는 것으로 나타났습니다.
저는이 유형에 유용 할 모든 디자인 패턴, 아이디어, 개념 등을 어떻게 구현하는지 관심이 있습니다.
현재 그리드를 구성하는 4 개의 주요 '부품'이 있습니다.
우선 I는 '로우'
차례로GridRow
가 IEntity 어레이를 각각 포함
GridCell
년대의 배열을 보유
public interface IGrid
{
GridRow[] Rows { get; set; }
}
(모든 오브젝트의 배열을 포함하는 그리드 자체를 가질 수 있습니다 IEntity을 impliment해야합니다 그리드 셀에 배치 될 수있다.
public class GridRow
{
public int Index { get; set; }
public GridCell[] Cells { get; set; }
}
public class GridCell
{
public int Index { get; set; }
public IEntity[] Entities { get; set; }
}
을 그것이 꽤 오랜 시간이 걸립니다 그리드를 만들에 올 때. 현재 200 * 200 '그리드'합니다 ~ 구성하는 17 개의 초.
,이 데이터를 저장하거나 현재 개념을 사용하여 그리드를 만드는 데 훨씬 효율적인 방법이 있어야합니다.
모든 조언을 환영합니다.
public IGrid Create(int rows, int cols, int concurentEntitiesPerCell)
{
var grid = new Grid();
Rows = new GridRow[rows];
grid.Rows = Rows;
var masterCells = new GridCell[cols];
var masterRow = new GridRow();
var masterCell = new GridCell();
for (var i = 0; i < masterCells.Count(); i++)
{
masterCells[i] = new GridCell();
masterCells[i].Index = i;
masterCells[i].Entities = new IEntity[concurentEntitiesPerCell];
}
masterRow.Cells = masterCells;
for (var j = 0; j < rows; j++)
{
grid.Rows[j] = new GridRow();
}
return grid;
}
개체가 상당히 크거나 뭔가 생성이 지연되는 경우가 아니면 이러한 엄청난 로딩 시간이 발생하지 않습니다. 이것을 결정하기 위해 간단한 프로파일 링을 할 수 있습니다. – AbstractDissonance