List <Int>上不允许进行数组访问

Fab*_*wer 2 arrays compiler-errors haxe list

我实际上是IT Programmation的法国学生,我的项目是制作战舰游戏,当我编写功能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);
    }
}
Run Code Online (Sandbox Code Playgroud)

错误已开启 var cellule = position[pos];

Gam*_*a11 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];
// ...
Run Code Online (Sandbox Code Playgroud)

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

var cellule = Std.random(Math.pow(dimensions, 2));
Run Code Online (Sandbox Code Playgroud)