1.常规游玩

  1. 前往复制 最基础代码 到剪切板

    这有助于您开始游戏,且对于您熟悉 Bot 代码的 I/O 进而创建其他 bot 很有意义

  2. 进入游戏网址 app6735.acapp.acwing.com.cn

  3. 注册并登录,将提供的代码创建为您的第一个 bot

  4. 打开另一款浏览器,登录另一个账号

    这是因为,在线玩家不够,恐怕需要您安排 2 个号组成对局(除非您和伙伴同时上线)

  5. 选择喜欢的 Bot,并开始匹配

  6. 对局结束后,可在对局列表观看比赛回放,在排行榜查看天梯积分

2.快速开始

  1. 打开游戏网址

  2. 登录测试用账号

    用户名

    Alice

    密码

    123456

    用户名

    Bob

    密码

    123456

  3. 打开另一款浏览器。接下来与 常规游玩 的第 4 步后续步骤相同

3.规则介绍

  • 我的Bots 页面查看并管理自己的 Bot
  • 匹配开始前,亲自出马(玩家键入 W/S/A/D 控制你的蛇)或者由喜欢的 Bot 出战(如果创建过 Bot)
  • 匹配成功后,两条蛇初始位于地图对角
  • 键盘输入,或者代码执行蛇的移动。每回合超过 5 秒不输入判定为出局
  • 玩家若撞向障碍物或任意蛇身则死亡,比赛结束
  • 赢得比赛获得天梯分
  • 对局列表观看全服比赛回放

3.推荐的示例代码

以下是最简单的寻路算法示例,强烈推荐把它创建为您的第一个 Bot!

如果用更强的算法,请参考该 Bot中获取游戏对局信息的接口,你只需要编写nextMove方法。

目前只支持.java代码

package com.kob.botrunningsystem.utils;

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);
} }
}

欢迎体验BotBattle!的更多相关文章

  1. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

  2. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  3. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  4. 微信小程序体验(2):驴妈妈景区门票即买即游

    驴妈妈因为出色的运营能力,被腾讯选为首批小程序内测单位.驴妈妈的技术开发团队在很短的时间内完成了开发任务,并积极参与到张小龙团队的内测问题反馈.驴妈妈认为,移动互联网时代,微信是巨大的流量入口,也是旅 ...

  5. 一起学微软Power BI系列-使用技巧(3)Power BI安卓手机版安装与体验

    Power BI有手机版,目前支持安卓,苹果和WP,不过没有WP手机,苹果在国内还不能用,要FQ和用就不测试了.安卓的我也也是费了九牛二虎之力才把app下载下来,把方法分享给大家. FQ太麻烦,所以建 ...

  6. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  7. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  8. Xamarin+Prism开发详解三:Visual studio 2017 RC初体验

    Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio ...

  9. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  10. 体验报告:微信小程序在安卓机和苹果机上的区别

    很多人可能会问:微信小程序和在微信里面浏览一个网页有什么区别? 首先,小程序的运行是全屏的,界面跟进入了一个APP很像,更为沉浸跟在微信里面访问h5不一样:其次,它的浏览体验更为稳定. 不过,这还不够 ...

随机推荐

  1. win32-LPCSTR->String

    #include <string> void makebox(LPCSTR name) { std::string res(name); res += " is X"; ...

  2. JAVA对象生命周期(三)-对象的销毁

    目录 从引用说起 指针直接引用 句柄引用 优缺点 如何判断对象死亡 引用计数法 可达性分析法 垃圾收集算法 标记-清除算法 复制算法 复制算法--优化 有关年轻代的JVM参数 标记-整理算法 分代收集 ...

  3. C++11新特性的一些用法举例①

    //字符串字面量/*常用:1.原始字符串字面量 --- 括号内保持原样输出 --- 没有转义字符,如\n不再是换行,而是直接输出字面量\nR"(str)"; 实例: R" ...

  4. 我的闲鱼Python爬虫接单总结和经验,最高600元一单

    最近,我在闲鱼上利用 Python 爬虫技术接了一些任务,想必你一定好奇,通过这样的方式,到底能不能挣钱,能挣多少钱?今天我就来分享一下我的经验和总结. 一.接单经历 之前 Vue 的作者尤大在微博上 ...

  5. 云计算 - 内容分发网络CDN技术与应用全解

    在这篇全面解析CDN的技术文章中,我们深入探讨了CDN的基础概念.核心架构.多样化产品和在不同行业中的应用案例.文章揭示了CDN技术如何优化内容分发,提升用户体验,并展望了CDN面临的挑战和未来发展趋 ...

  6. Python实现企业微信自动打卡程序二:跳过节假日,随机打卡时间,定时任务,失败通知

    一.介绍 在上节 Python实现企业微信上下班自动打卡程序内容之后,我们继续优化自动打卡程序.接下来增加如下内容: 实现打卡时间随机范围 处理节假日不打卡的情况 实现定时调度打卡 打卡成功或失败通知 ...

  7. Python-使用openpyxl读取excel内容

    1. 本篇文章目标 将下面的excel中的寄存器表单读入并构建一个字典 2. openpyxl的各种基本使用方法 2.1 打开工作簿 wb = openpyxl.load_workbook('test ...

  8. 我的电脑 属性 代理 win10 不用的时候记得关闭,git python node 等

  9. WPF之事件

    目录 WPF的树形结构 事件 路由事件 使用WPF内置路由事件 自定义路由事件 ButtonBase类的Click路由事件 创建一个路由事件 RoutedEventArgs的Source与Origin ...

  10. AWS ES ISM学习应用笔记

    Elastic Search 6以上版本推出 ILM,用于管理Index的生命周期,但AWS上的ES是基于OSS版本的ES,所以自己开发了ISM来代替ILM.项目是从logstash往ES写入数据,但 ...