java五子棋简单的人机对战程序逻辑

编程入门 行业动态 更新时间:2024-10-14 22:19:23
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);也可以看出来的吧。

更多推荐

本文发布于:2023-07-30 16:31:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1338880.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:人机   对战   逻辑   五子   简单

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!