gpt4 book ai didi

java - Dungeon ArrayList 打印不正确。佐克游戏

转载 作者:行者123 更新时间:2023-12-01 13:09:48 25 4
gpt4 key购买 nike

我无法弄清楚这一点,我的地牢打印不正确(问题和输出在底部)。这将是一些代码,但这都是必要的。

这是地牢构造函数:

public Dungeon ( )
{
Random r = new Random();

int determinedDungeonSize = r.nextInt(10-5) + 5;
int weaponRandom = r.nextInt(determinedDungeonSize);

dungeon = new ArrayList<String>(determinedDungeonSize);

String cell = ("|____| ");
char[] cellArray = cell.toCharArray();

for(int i=0; i<determinedDungeonSize ;i++)
{
int randomProbability = r.nextInt(10000);

if(randomProbability < 5000)
{
cellArray[2] = 'M';
}

if(i == weaponRandom)
{
if(randomProbability < 5000)
{
cellArray[3] = 'S';
cellArray[4] = 'w';
}
else
{
cellArray[3] = 'S';
cellArray[4] = 't';
}

}//end if

cell = String.valueOf(cellArray);
dungeon.add(cell);
}//end for

}//end Dungeon()

地牢的toString:

public String toString()
{
String dungeonString = "";

for(int i = 0; i < dungeon.size(); i++)
{
dungeonString += dungeon.get(i);
}

return dungeonString;
}

现在问题来了。我使用以下语句打印驱动程序类中的地牢 -> System.out.print(d.toString());,其中 d 只是使用 创建的 Dungeon 对象地牢 d = new Dungeon()控制台正在输出(这是一个不好的情况):

|_M__|   |_M__|   |_M__|   |_MSt|   |_MSt|   |_MSt|   |_MSt|

怪物(表示为“M”)位于单元格中的概率为 50/50。武器(棍子('St')或剑('Sw'))存在的概率是每个地牢一种武器(任何给定的地牢中只有一种武器,单元格必须是随机的)。构造函数应该可以很好地完成所有这些工作,我不知道这里出了什么问题,我已经尝试解决这个问题 6 个小时了。

编辑:预期输出:|M_| |M_| |_| |_St_| |M| |_| |M| |___|

最佳答案

您的问题是您从未在 for 循环结束时将 cellArray 的值刷新为"new"单元格。您只需在现有单元格的顶部写入即可。这意味着如果 M 出现在第一个单元格中,它将出现在每个单元格中。此外,武器在第一次出现后就会出现在每个单元格中。要解决此问题,您需要在每次运行 for 循环时重新初始化 cell。只需将初始化移至循环内部即可:

    for(int i=0; i<determinedDungeonSize ;i++)
{
//just move these to the inside of the loop
//so they are fresh each time
String cell = ("|____| ");
char[] cellArray = cell.toCharArray();

int randomProbability = r.nextInt(10000);

if(randomProbability < 5000)
{
cellArray[2] = 'M';
}

if(i == weaponRandom)
{
if(randomProbability < 5000)//this does mean that if the weapon is in the same room as a monster, it will always be Sw. Consider generating a new random value
{
cellArray[3] = 'S';
cellArray[4] = 'w';
}
else
{
cellArray[3] = 'S';
cellArray[4] = 't';
}

}//end if

cell = String.valueOf(cellArray);
dungeon.add(cell);
}//end for

关于java - Dungeon ArrayList 打印不正确。佐克游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975187/

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