我实际上是IT计划的法国学生,我的项目是制作战舰游戏,当我编写功能AI时,它会告诉我一个错误,我该如何阻止这个错误? 这是函数的代码:
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];
答案 0 :(得分:5)
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));