【问题标题】:Array access is not allowed on List<Int>List<Int> 上不允许数组访问
【发布时间】:2018-03-20 17:19:15
【问题描述】:

我实际上是 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];

【问题讨论】:

    标签: arrays list compiler-errors haxe


    【解决方案1】:

    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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2020-05-03
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      相关资源
      最近更新 更多