欢迎体验BotBattle!
仿北大Bot对战平台
0.停止服务
很遗憾,由于不明原因,运行 BotBattle 的容器常导致云服务器宕机,我没有租用更多的云服务器,这样的损失会影响到别的项目,于是决定停服
也许用兜底策略把一系列异常处理好了,能够恢复服务
感谢你对botbattle游戏的兴趣,以下规则说明暂时保留
1.常规游玩
-
前往复制 最基础代码 到剪切板
这有助于您开始游戏,且对于您熟悉 Bot 代码的 I/O 进而创建其他 bot 很有意义
-
进入游戏网址 app6735.acapp.acwing.com.cn
-
注册并登录,将提供的代码创建为您的第一个 bot
-
打开另一款浏览器,登录另一个账号
这是因为,在线玩家不够,恐怕需要您安排 2 个号组成对局(除非您和伙伴同时上线)
-
选择喜欢的 Bot,并开始匹配
-
对局结束后,可在对局列表观看比赛回放,在排行榜查看天梯积分
2.快速开始
3.规则介绍
- 在
我的Bots
页面查看并管理自己的 Bot - 匹配开始前,
亲自出马
(玩家键入W/S/A/D
控制你的蛇)或者由喜欢的 Bot 出战(如果创建过 Bot) - 匹配成功后,两条蛇初始位于地图对角
- 键盘输入,或者代码执行蛇的移动。每回合超过 5 秒不输入判定为出局
- 玩家若撞向障碍物或任意蛇身则死亡,比赛结束
- 赢得比赛获得天梯分
对局列表
观看全服比赛回放
4.推荐的示例代码
以下是最简单的寻路算法示例,强烈推荐把它创建为您的第一个 Bot!
如果用更强的算法,请参考该 Bot中获取游戏对局信息的接口,你只需要编写
nextMove
方法。
目前只支持.java
代码
import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Bot implements java.util.function.Supplier<Integer>{ static class Cell{ public int x,y; public Cell (int x, int y){ this.x = x; this.y = y; } } private boolean check_tail_increasing(int step){ if(step<=10) return true; return step % 3 == 1; } public List<Cell> getCells(int sx, int sy, String steps){ steps = steps.substring(1, steps.length()-1); List<Cell> res=new ArrayList<>(); int[] dx={-1,0,1,0}, dy={0,1,0,-1}; int x =sx, y=sy; int step=0; res.add(new Cell(x, y)); for(int i=0; i<steps.length();i++) { int d = steps.charAt(i) - '0'; //0,1,2,3分别表示 上,右,下,左。 x+=dx[d]; y+=dy[d]; res.add(new Cell(x,y)); if(!check_tail_increasing(++step)){ res.remove(0); } } return res; } public Integer nextMove(String input) { String[] strs = input.split("#"); int[][] g = new int[13][14]; for (int i = 0,k=0; i <13 ; i++) { for (int j=0; j< 14;j++,k++){ if (strs[0].charAt(k)=='1'){ g[i][j]=1; } } } int aSx = Integer.parseInt(strs[1]), aSy = Integer.parseInt(strs[2]); int bSx = Integer.parseInt(strs[4]), bSy = Integer.parseInt(strs[5]); List<Cell> aCells = getCells(aSx, aSy, strs[3]); List<Cell> bCells = getCells(bSx, bSy, strs[6]); for (Cell c:aCells) g[c.x][c.y]=1; for (Cell c:bCells) g[c.x][c.y]=1; int[] dx={-1,0,1,0}, dy={0,1,0,-1}; for(int i=0;i<4;i++){ int x=aCells.get(aCells.size()-1).x +dx[i]; int y=aCells.get(aCells.size()-1).y +dy[i]; if(x>=0 && x<13 && y>=0 && y<14 && g[x][y]==0){ return i; } } return 0; } @Override public Integer get() { File file = new File("input.txt"); try { Scanner sc = new Scanner(file); return nextMove(sc.next()); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步