C# 静态与动态规划

C# 静态与动态规划,c#,dynamic,static,C#,Dynamic,Static,我知道,为了清理代码,您使用循环。i、 而不是说 myItem = myArray[0] my2ndItem = myArray[1] 多达100个元素左右将占用100行代码,这将非常难看。 它可以通过使用循环进行瘦身和美观/效率更高 假设你正在创建一个游戏,你有100个非玩家控制的敌人在一个确切的位置产卵,每个位置不同 如果不使用100行代码,您究竟如何生成每一个? 我可以理解,比如说,如果你想让它们相距25码,你可以使用一个循环,然后增加25码 也就是说,在这种情况下,静态编程是我看到可能

我知道,为了清理代码,您使用循环。i、 而不是说

myItem = myArray[0]
my2ndItem = myArray[1]
多达100个元素左右将占用100行代码,这将非常难看。 它可以通过使用循环进行瘦身和美观/效率更高

假设你正在创建一个游戏,你有100个非玩家控制的敌人在一个确切的位置产卵,每个位置不同

如果不使用100行代码,您究竟如何生成每一个? 我可以理解,比如说,如果你想让它们相距25码,你可以使用一个循环,然后增加25码

也就是说,在这种情况下,静态编程是我看到可能结果的唯一方式,但我知道动态编程是一条出路

人们是如何做到这一点的?如果你能提供其他类似的例子,那就太好了。

var-spawnLocs=new-SpawnLocation[10];
var spawnLocs = new SpawnLocation[10];
if (RandomPosition)
{
    for (int i = 0; i < spawnLocs.Length; i++)
    {
        spawnLocs[i] = // auto define using algorithm / logic
    }
}
else
{
    spawnLocs[0] = // manually define spawn location
    spawnLocs[1] = 
    ...
    ...
    spawnLocs[9] = 
}
if(随机位置) { 对于(int i=0;i
产生新的敌人:

void SpawnEnemy(int spawnedCount)
{
    if (EnemyOnMap < 10 && spawnedCount < 100)
    {
        var rd = new Random();
        Enemy e = new Enemy();
        SpawnLocation spawnLoc = new SpawnLocation();
        bool locationOk = false;
        while(!locationOk)
        {
            spawnLoc = spawnLocs[rd.Next(0, spawnLoc.Length)];
            if (!spawnLoc.IsOccupied)
            {
                locationOk = true; 
            }
        }
        e.SpawnLocation = spawnLoc;

        this.Map.AddNewEnemy(e);
    }
}
void spawnedy(int spawnedCount)
{
如果(EnemyOnMap<10&&sprownedcount<100)
{
var rd=新随机数();
敌人e=新敌人();
SpawnLocation spawnLoc=新的SpawnLocation();
bool locationOk=错误;
而(!locationOk)
{
spawnLoc=spawnLocs[rd.Next(0,spawnLoc.Length)];
如果(!spawnLoc.IsOccupied)
{
locationOk=true;
}
}
e、 SpawnLocation=spawnLoc;
此.Map.addnew敌军(e);
}
}
var spawnLocs=新的SpawnLocation[10];
if(随机位置)
{
对于(int i=0;i
产生新的敌人:

void SpawnEnemy(int spawnedCount)
{
    if (EnemyOnMap < 10 && spawnedCount < 100)
    {
        var rd = new Random();
        Enemy e = new Enemy();
        SpawnLocation spawnLoc = new SpawnLocation();
        bool locationOk = false;
        while(!locationOk)
        {
            spawnLoc = spawnLocs[rd.Next(0, spawnLoc.Length)];
            if (!spawnLoc.IsOccupied)
            {
                locationOk = true; 
            }
        }
        e.SpawnLocation = spawnLoc;

        this.Map.AddNewEnemy(e);
    }
}
void spawnedy(int spawnedCount)
{
如果(EnemyOnMap<10&&sprownedcount<100)
{
var rd=新随机数();
敌人e=新敌人();
SpawnLocation spawnLoc=新的SpawnLocation();
bool locationOk=错误;
而(!locationOk)
{
spawnLoc=spawnLocs[rd.Next(0,spawnLoc.Length)];
如果(!spawnLoc.IsOccupied)
{
locationOk=true;
}
}
e、 SpawnLocation=spawnLoc;
此.Map.addnew敌军(e);
}
}

只需将位置指定为数组或列表或任何适合用途的数据格式,然后执行一个3行循环,从每个敌人的输入中读取,并找到和设置相应的位置

大多数语言都有某种“速记”格式,用于直接为数组或列表提供数据,如C#,例如:

var myList = new List<EnemyPosition>{
                          new EnemyPosition{ x = 0, y = 1 },
                          new EnemyPosition{ x = 45, y = 31 },
                          new EnemyPosition{ x = 12, y = 9 },
                          (...)
                };
var myList=新列表{
新的EnemyPosition{x=0,y=1},
新的EnemyPosition{x=45,y=31},
新的EnemyPosition{x=12,y=9},
(...)
};
您可以自然地将相同的数据放在XML文件、数据库或祖母的橱柜中,只要您有一些接口在需要时检索它


然后你可以像你的问题一样,用一个循环来设置它。

只需将位置指定为数组或列表或任何适合用途的数据格式,然后实现一个3行循环,从每个敌人的输入中读取,并找到和设置相应的位置

大多数语言都有某种“速记”格式,用于直接为数组或列表提供数据,如C#,例如:

var myList = new List<EnemyPosition>{
                          new EnemyPosition{ x = 0, y = 1 },
                          new EnemyPosition{ x = 45, y = 31 },
                          new EnemyPosition{ x = 12, y = 9 },
                          (...)
                };
var myList=新列表{
新的EnemyPosition{x=0,y=1},
新的EnemyPosition{x=45,y=31},
新的EnemyPosition{x=12,y=9},
(...)
};
您可以自然地将相同的数据放在XML文件、数据库或祖母的橱柜中,只要您有一些接口在需要时检索它


然后你可以用一个循环来设置它,就像在你的问题中一样。

你对静态和动态的定义是错误的。我不确定我是否理解这个问题。以预定格式创建一个包含哪些敌人将在何处繁殖的信息的文件怎么样?然后,您可以使用循环读取这些位置。您应该将这些位置隔离到数据文件(或数组)中,并使用循环遍历它。您可以创建一个包含100个特定位置的列表。然后你可以在各个位置上迭代,为每个位置创建并产生一个正好位于该位置的敌人。@Simon Whitehead,这绝对是可能的;我是个新手。也许你可以编辑它?你对静态和动态的定义不正确。我不确定我是否理解这个问题。以预定格式创建一个包含哪些敌人将在何处繁殖的信息的文件怎么样?然后,您可以使用循环读取这些位置。您应该将这些位置隔离到数据文件(或数组)中,并使用循环遍历它。您可以创建一个包含100个特定位置的列表。然后你可以在各个位置上迭代,为每个位置创建并产生一个正好位于该位置的敌人。@Simon Whitehead,这绝对是可能的;我是个新手。也许你可以编辑它?像这样随机放置的可能问题是重叠。您需要检查您正在设置的位置是否尚未使用。像这样随机放置的可能问题是重叠。您可能想检查您正在设置的位置是否尚未使用好的答案,我认为使用这两个答案将提供有用的信息。谢谢。回答得好,我想