java五子棋简单的人机对战程序逻辑
我自己写了一个很白痴的AI,就是随机落子,为了测试。 这是我写的随机落子的代码: public BoardCell determineNextMove(int who) { cell = new BoardCell(); board = new Board(10); System.out.println(board.getPlayerInfo(who)); int x = (int)Math.random() * 10; int y = (int)Math.random() * 10; cell.x = x; cell.y = y; System.out.println(cell.x + " " + cell.y); return cell; } 这是当用户输入2时进入人机对战: while (a == 2) { board.printBoard(); cell = ui.getNextMove(board.player1); board.addPiece(board.player1, cell); board.printBoard(); if (board.isFiveConnected(who, cell)) { winner = 1; break; } cell = engine.determineNextMove(board.player2); board.addPiece(board.player2, cell); if (board.isFiveConnected(who, cell)) { winner = 2; break; } } 现在的问题是开始游戏之后 ai只在第一回合输入一次随机坐标,之后就没有落子的行为了。因为我的落子代码只执行了一次么?这个逻辑之间有什么问题么? 求大神解答
最满意答案
兄弟,不是没有落子行为,是一直有你看不出来吧,determineNextMove(int who)函数中获得坐标时:int x = (int)Math.random() * 10;,这个x永远都是0吧,应该是int x=(int)(Math.random()*10);优先级搞错了。所以你得到的坐标cell都是(0,0),通过后台打印System.out.println(cell.x + " " + cell.y);也可以看出来的吧。更多推荐
发布评论