我们在制作扫雷游戏上遇到了麻烦。
我们解决了这些扫雷游戏的问题。
现在..。
您的程序必须用Java运行。从本质上说,每个玩家都可以在每一个回合中做一个动作。
您必须在扩展类MineBot的类中创建机器人。MineBot看起来是这样的:
public abstract class MineBot {
private int x, y;
public abstract int changeMines(int[][] field);
public abstract int[] proceed(int[][] field);
public final int getX() {
return x;
}
public final void setX(int x) {
this.x = x;
}
public final int getY() {
return y;
}
public final void setY(int y) {
this.y = y;
}
}(您必须保留最终方法才能使您的提交有效)
MineBot#changeMines(int[][])首先被问到。结果是一个单一的int,表示您是否愿意执行涉及地雷的操作。这可能是放置地雷,或拆除地雷。0的意思是不,1的意思是解除,2的意思是放地雷。(2或任何不是0或1的东西)
然后,执行MineBot#proceed(int[][])。以下情况按以下顺序进行:
然后,在这些配置被更新之后,占据一个有地雷的位置的所有机器人都会被淘汰(包括那些呆在原地,把地雷放在下面的机器人),并且它将继续迭代。
在每次迭代中,点数都会增加。当机器人被淘汰时,当前迭代中的点数就变成了它的分数。
在每次测试运行期间,所有n机器人都将由n+10板放置在n+10上。每次运行时,将记录每个机器人的得分。总分是n测试运行的总和。获胜者将不断更新,所以在至少有3份意见书或它已经过了3月14日(Pi日),我会接受一个答案,但这可以随时改变!
给定的数组是一个int[][]。最右边的四位(k & 15)表示与该方块相邻的地雷数量(包括角)。右边的第五个位((k & 16) >> 4)是1 (如果有机器人),而0 (如果没有)。记住,板子不会绕来绕去。
所谓“输出”,实际上是指函数返回的内容。同样,您的机器人代码将有两个函数:int changeMines(int[][])和int[] proceed(int[][])。以下是对这两种情况的详细解释:
int changeMines(int[][])返回一个整数,表示下一步要执行的移动类型。也就是说,如果您想移动位置或空闲,则返回0;如果要拆除地雷,则返回1;如果要放置地雷,则返回2。
int[] proceed(int[][])返回长度为1或2的数组,这取决于您是否希望保持空闲状态。假设此方法的返回值名为int[] i。然后,i[0]表示您想根据问题顶部的列表进行何种类型的移动。如果适用的话,i[1]表示要在哪个空间上执行操作。当您仍然处于空闲状态时,不会检查这一点,因为它不适用。按照这张表:
1: top-left
2: top
3: top-right
4: right
5: bottom-right
6: bottom
7: bottom-left
8: left(你只能在以自己为中心的3x3正方形内行动。)
游戏代码可以在我的GitHub回购这里上找到。下载代码后,它应该是一个有效的eclipse项目(与EclipseNeon.2一起运行)。源代码在/tree/master/MinesweeperKOTH/src中。更改src/game/Game.java中的源代码,以便String[] botnames包含所有机器人的名称。我每隔一段时间更新一次,以节省您的打字时间。机器人在/src/programmed_bots中运行,必须扩展bot.MineBot。你的机器人不能抛出任何异常,否则它将以0死亡(不会给你的机器人提供无效的参数)。
Runtime调用系统上的进程!KOTH-ing快乐!
注意:这个问题现在存在于沙箱中,以获得更多的建议。
发布于 2017-02-28 02:47:46
此提交是为了帮助您确定一个有效的提交可能是什么样子!
import bot.MineBot;
public class TestBot extends MineBot {
public int changeMines(int[][] field) {
return 2;
}
public int[] proceed(int[][] field) {
return new int[] { 2, (int) (Math.random() * 8) };
}
}这个机器人只是做一个随机行走,按它的方式放置地雷。通常会回到自己的轨道上自杀。
https://codegolf.stackexchange.com/questions/111591
复制相似问题