首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器人赛跑-如何让多个机器人相互比赛?

机器人赛跑-如何让多个机器人相互比赛?
EN

Stack Overflow用户
提问于 2017-04-16 06:02:15
回答 1查看 303关注 0票数 0

因此,我成功地实现了一个机器人竞赛,用户输入一个表示NxN网格的大小,目标是机器人到达网格的右上角,采取从1到N不等的随机步数,并且足够聪明地在面对墙壁时改变方向。

不过,我现在必须使用相同的类来实现多机器人竞赛(至少2个机器人)。机器人类有一个名为move()的方法,它接受两个int参数:(steps,gridSize)并移动机器人。我的第一个想法是创建一个嵌套的循环,每个回合一个,每个机器人一个,但是它有问题。我希望能得到任何帮助,谢谢!

本质上,这里是一个示例输出:

移动1:

  • 机器人1步长2步,位于x,y位置。
  • 机器人2采取3步,并在x,y位置。

移动2:

  • 机器人1号..。
  • 机器人2..。

等等等等。

这是我的主要:

代码语言:javascript
复制
    Random rand = new Random();
    int gridSize, nRobo;

    Scanner scanner = new Scanner(System.in);

    // Reads user input for grid size. Must be at least 2.
    do{
        System.out.print("What is the size of your grid? (Must be at least 2)");
        gridSize = scanner.nextInt();
    }while(gridSize < 2);

    // Reads user input for number of Robots. Must be at least 1.
    do {
        System.out.println("\nHow many Robots will race? (Must have at least one robot in the race) ");
        nRobo = scanner.nextInt();
    }while( nRobo < 1);

    // Clears the line from the scanner before advancing(otherwise there is a bug in the loop).
    scanner.nextLine();

    Robot[] robo = new Robot[nRobo];

    // Name of each Robot
    for (int i = 0; i < robo.length; i++){
        System.out.print("Name of robot " + (i+1) + ": ");
        robo[i] = new Robot(scanner.nextLine());
    }    

编辑:这是我在1机器人竞赛中使用的逻辑(在一个单独的主体中):

代码语言:javascript
复制
    // Number of moves.
    int nMoves = 0;
    // While robot has not won, enter loop.
    while (!robo.won(gridSize)){

        //Steps is a random number between 1 and grid size.
        int steps = rand.nextInt(gridSize) + 1;
        System.out.println(" ==> Number of steps to take " + steps + ".");

        robo.move(steps,gridSize);

        System.out.println("\tResult: " + robo.toString());
        nMoves++;
    }

    System.out.println( "\n" + robo.getName() + " reached its final destination in  " +nMoves + " moves.");
EN

回答 1

Stack Overflow用户

发布于 2017-04-16 06:10:10

robo数组使用while循环内的循环。

代码语言:javascript
复制
for (Robot r : robo) {
    int steps = rand.nextInt(gridSize) + 1;
    System.out.println(r.getName() + " takes " + steps + " steps.");
    r.move(steps,gridSize);
    System.out.println("\tResult: " + r.toString());
}
nMoves++;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43434237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档