我的坐标列表:
int[][] coords = {
{3093, 3630 }, {3095, 3632}, {3098, 3633},
{3101, 3633 }, {3104, 3631}, {3106, 3629},
{3107, 3627}, {3108, 3624}, {3109, 3620},
{3108, 3617}, {3106, 3614}, {3102, 3613},
{3099, 3613}, {3097, 3613}, {3093, 3614},
{3090, 3617}, {3087, 3619}
};
生成部分:
int random = Misc.random(coords.length - 1);
handler.move(coords[random][0], coords[random][1], 0);
基本上我想要做的是,如果这些坐标已经被采用,那么重新生成坐标。
- 我不能真正将这些坐标存储到一个大数组列表中,因为我并不总是希望这个功能发挥作用,例如,如果我的玩家比 coords[] 数组中的项目多,那么它不会被激活。
因此,我创建了一个已用坐标的数组列表,这是我如何做到这一点的逻辑:
int[][] coords = {
{3093, 3630 }, {3095, 3632}, {3098, 3633},
{3101, 3633 }, {3104, 3631}, {3106, 3629},
{3107, 3627}, {3108, 3624}, {3109, 3620},
{3108, 3617}, {3106, 3614}, {3102, 3613},
{3099, 3613}, {3097, 3613}, {3093, 3614},
{3090, 3617}, {3087, 3619}
};
ArrayList<Integer> coordinates = new ArrayList<Integer>();
int random = Misc.random(coords.length - 1);
if (getPlayersCount() < coords.length) {
if (coordinates.contains(coords[random][0], coords[random][1])) {
random = Misc.random(coords.length - 1);
}
else {
handler.move(coords[random][0], coords[random][1], 0);
coords.add(coords[random][0], coords[random][1]);
}
}
else {
random = Misc.random(coords.length - 1);
handler.move(coords[random][0], coords[random][1], 0);
}
基本上,如果玩家的数量少于数组长度,则处理。如果坐标数组列表包含生成的 X、Y,则重新生成它,否则移动播放器并将坐标添加到列表中。
但似乎我做错了什么,因为我收到了这个错误:error: no suitable method found for contains(int,int)
我怎样才能做到这一点?