- Клонировать репозиторий
- Открыть в Visual Studio 2015 (C# 6.0)
- Построить решение и запустить
- Создать новый dll проект в решении SnakeBattle
- Добавить в него ссылку на проект PluginInterface
- Создать новый класс и унаследовать его от интерфейса ISmartSnake
- Реализуйте интерфейс ISmartSnake
- Добавьте ссылку на проект вашего ИИ в проект Launcher
- Постройте решение и запустите
- Поместите ваш dll и dll вашего друга в папку с Launcher.exe
- Запустите Launcher.exe и нажмите кнопку Launch
Move enum описывает все возможные движения змейки
public enum Move
{
Nothing = 0,
Up = 1,
Right = 2,
Down = 3,
Left = 4
}
Свойства позволяют передвигать вашу змейку или менять направление её движения раз в ход. Также, вы можете указать имя и цвет головы.
string Name { get; set; }
Move Direction { get; set; }
bool Reverse { get; set; }
Color Color { get; set; }
Метод Startup запускается один раз при подключении ИИ. Переменная size содержит размеры поля. В переменной stones хранятся координаты статических объектов (в данный момент - камней).
void Startup(Size size, List<Point> stones);
Метод Update запускается каждый раз при обновлении логики. Переменная position хранит координаты головы змеи. В heads содержатся координаты голов всех змей. В tails содержатся координаты тел всех змей. В food находятся координаты всех клеток с едой.
void Update(Point position, List<Point> heads, List<Point> tails, List<Point> food);
using System;
using System.Collections.Generic;
using System.Drawing;
using PluginInterface;
namespace BotRandomSnake
{
public class RandomSnake : ISmartSnake
{
public string Name { get; set; } = "RandomSnake";
public Color Color { get; set; } = Color.Black;
public Move Direction { get; set; }
public bool Reverse { get; set; }
private DateTime dt = DateTime.Now;
private static Random rnd = new Random();
public void Startup(Size size, List<Point> stones)
{
}
public void Update(Point position, List<Point> heads, List<Point> tails, List<Point> food)
{
// Змейка двигается в случайном направлении
Direction = (Move) rnd.Next(1, 5);
// Змейка разворачивается каждую секунду (1000мс)
if ((DateTime.Now - dt).TotalMilliseconds > 1000)
{
Reverse = true;
dt = DateTime.Now;
}
}
}
}