gpt4 book ai didi

c# - 创建网格 - 什么是执行此操作的有效方法

转载 作者:行者123 更新时间:2023-11-30 12:16:45 24 4
gpt4 key购买 nike

前几天看了新的 Tron 电影后,我目前正在开发一个基于文本的小游戏。 (就像你是一个有很多时间的极客一样)。

我已经创建了一个可以在其中放置对象的网格,但目前我发现创建我的网格需要很长时间。

我对您如何实现这一点以及对此类事物有用的任何设计模式、想法、概念等感兴趣。

目前我有 4 个组成网格的主要“部分”。

首先,我有包含“行”数组的网格本身

public interface IGrid
{
GridRow[] Rows { get; set; }
}

GridRow 依次包含一个 GridCell 数组,每个数组包含一个 IEntity 数组(可以放置在网格单元格中的每个对象都必须实现 IEntity .

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;
}

最佳答案

您似乎无缘无故地创建了很多对象?为什么不直接使用 List<List<IEntity>>还是多维数组 Entities[,]?

在任何情况下,您显示的代码都没有说明速度变慢的原因。您可以在实际分配对象的位置发布代码吗?

关于c# - 创建网格 - 什么是执行此操作的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4707407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com