gpt4 book ai didi

arrays - List 上不允许进行数组访问

转载 作者:行者123 更新时间:2023-12-02 10:40:55 26 4
gpt4 key购买 nike

我实际上是IT编程的法国学生,我的项目是制作战舰游戏,当我编写函数AI Turn时,它告诉我一个错误,我怎样才能阻止这个错误?这是该函数的代码:

private function tourIA(){

var position = new List<Int>();
for(i in 0...(Std.parseInt(Math.pow(dimensions,2)))position.add(i);

var pos = Std.random(length(position);
var cellule = position[pos];
var x = cellule%dimensions;
var y = Math.floor(cellule);
var n : Navire = mer.chercherNavire(x , y);
if (n != null) {
mer.montrerNavire(n);
}
else{
mer.placerCroix(mer, position, dimension);
}
}

错误出现在 var cellule =position[pos];

最佳答案

List是一个链接列表,不允许对特定索引进行任意访问 - 您必须迭代它才能找到您要查找的元素,这不是很有效。我建议使用 Array相反:

var positions = [];
for (i in 0...Std.int(Math.pow(dimensions, 2)))
positions.push(i);

var pos = Std.random(positions.length);
var cellule = positions[pos];
// ...

但是,在这种特定情况下,似乎您既不需要 List 也不需要 Array - 您可以像这样计算 cellule因为数组元素只是严格递增([0, 1, 2, 3, ...] - 或者可能存在错误,它应该类似于 [0, 1, 4、9、...]?):

var cellule = Std.random(Math.pow(dimensions, 2));

关于arrays - List<Int> 上不允许进行数组访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49390465/

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