AlienWar
Эта игра разворачивается на очень людной планете, где инопланетяне являются превосходной расой. Твоя задача - создать своего собственного пришельца и победить всех остальных.
Доска
Это двухмерная доска.
Длина одной стороны доски составляет Math.ceil(sqrt(species * 100 * 2.5))
~ 40% используемой платы. Доска - это планета, поэтому если вы выйдете из карты на западе, вы вернетесь на восток. Если вы выйдете на север, вы окажетесь на юге.
способности
У каждого вида на планете есть способности. Они здесь:
Имя Преимущество life HP = lifeLVL * 5 (уменьшается с каждым полученным вами ударом, 0 = мертвый), базовый HP = 10 сила Ваши удары наносят случайный урон в диапазоне от [1 до forceLVL] защита Случайным образом выбирайте int в диапазоне [0 - (50 / defenseLVL + 1)], если int == 0, то избегайте следующей атаки зрение Дает вам видение LVL / 2 поля вокруг вашего зрения умение Размывает (увеличивает) каждую способность случайным образом в диапазоне [от 0 до умения LVL / 2] при отправке другим инопланетянам
Игра
- Там будет 100 экземпляров каждого представления.
- После инстанции каждый иностранец может установить 10 очков способностей. Вы можете установить разные точки для каждого экземпляра.
- Если вы установите более 10 очков, экземпляр умирает.
- Игра состоит из 1000 раундов. Каждый раунд:
- Каждый пришелец должен вернуть ход через
move(char[] fields)
. Это включает Move.STAY. - Если на поле находятся несколько пришельцев, 2 будут выбраны случайным образом:
- Если оба договорились о мире (верните ложь
wantToFight
), они останутся там, где они есть, иначе они будут сражаться. - Это происходит до тех пор, пока на поле не останется только один инопланетянин или пока все не согласятся на мир.
- Если оба договорились о мире (верните ложь
- Каждый пришелец должен вернуть ход через
Если инопланетянин что-то убивает, он получает 1/5 от каждой способности своего врага . HP победителей будут пополнены 2 * врагаLifeLVL .
Победителем считается тот, у кого больше способностей (сумма способностей живых инопланетян).
Поединки
Оба пришельца будут бить друг друга "одновременно", это означает, что если вы убьете другого пришельца, он все равно может ударить вас один раз.
Уклоняясь: Перед тем, как попасть, игра будет вычислить , если вы можете уклониться от атаки с помощью rand.nextInt(50 / defenseLvl + 1) == 0
. defenseLvl никогда не будет больше 50 при расчете ваших навыков уклонения (следовательно, максимальный шанс уклонения составляет 50%).
Удар: если вы не уклоняетесь от атаки, вы получите удар, и ваш HP будет уменьшен на rand.nextInt(enemy.getStrengthLvl()) + 1
.
Бой заканчивается, когда один или оба вовлеченных пришельца мертвы. Победитель, если таковой существует, получает вознаграждение.
Правила игры
- Базовый уровень для каждой способности (без начисления очков способностей) равен 1 (базовый уровень здоровья равен 10).
- Ценности, которые посылают, когда их просят сражаться, - это уровень жизни (не HP!), Сила, защита и уровень видения .
- Ум не посылается, когда его просят сражаться.
- Все числа с плавающей запятой округляются до ближайшего целого числа при их использовании / отправке, но сохраняются и увеличиваются как числа с плавающей запятой.
- Максимальный шанс уклонения составляет 50%. В противном случае бои могут никогда не закончиться.
Добыча
Есть 5 видов, которые уже на поле. Поскольку они являются добычей, они предпочитают не сражаться, когда их об этом просят.
Кит: 10 уровень жизни Корова: 10 уровень силы Случайный ход Черепаха: 10 уровень защиты юго-запад Орел: зрение 10 уровня Исследует поля, пытается избежать опасности Человек: 10 уровень ловкости Северо-восток
Они будут представлены своей первой буквой (т.е. W
для кита) на карте («Чужие с» A
, пустые поля с пробелами ' '
).
Дополнительные правила
- Отражение запрещено.
- Взаимодействие (создание экземпляров и т. Д.) С другими инопланетянами запрещено.
- Запись / чтение внешних ресурсов, таких как файлы или базы данных, также запрещено.
- Допускается только отправка Java (версия 1.8) (Java довольно прост, и вам не нужно быть экспертом в этой игре).
- Все материалы должны быть расширены для инопланетного класса и будут помещены в инопланетный пакет.
- Я приму лучшего инопланетянина 19 июля. Все иностранцы, представленные до 12:00 UTC в этот день, будут проверены.
- Максимум 3 представления на пользователя, поскольку инопланетян уже очень много.
Пример инопланетянина
package alien;
import planet.Move;
public class YourUniqueNameHere extends Alien {
public void setAbilityPoints(float[] abilities) {
abilities[0] = 2; //life
abilities[1] = 2; //strength
abilities[2] = 2; //defense
abilities[3] = 2; //vision
abilities[4] = 2; //cleverness
}
public Move move(char[][] fields) {
//you are in the middle of the fields, say fields[getVisionFieldsCount()][getVisionFieldsCount()]
return Move.STAY;
}
public boolean wantToFight(int[] enemyAbilities) {
//same order of array as in setAbilityPoints, but without cleverness
return true;
}
}
Управляющая программа
Исходный код для управляющей программы можно найти здесь . Теперь обновлено со всеми инопланетянами, включенными в последний запуск.
Итоговые результаты (20.07.2014, в среднем 10 игр)
Alien.PredicatClaw 1635.4 Alien.LazyBee 1618,8 Alien.CartographerLongVisionAlien 1584.6 Alien.ChooseYourBattles 1571.2 Alien.Bender 1524,5 Alien.HerjanAlien 1507,5 Alien.FunkyBob 1473.1 Alien.SecretWeapon2 1467,9 Alien.PredicatEyes 1457.1 Alien.CorporateAlien 1435,9 alien.GentleGiant 1422.4 alien.CropCircleAlien 1321.2 Alien.VanPelt 1312,7 Alien.NewGuy 1270.4 Чужой. BananaPeel 1162.6 Alien.Rock 1159.2 Alien.BullyAlien 1106,3 Чужой. Джеффри 778,3 Alien.SecretWeapon 754,9 Alien.SecretWeapon3 752,9 Alien.FunkyJack 550.3 Чужой. Камень 369,4 Чужеземец. Ассасин 277,8 Alien.Predicoward 170,1 prey.Cow 155.2 Alien.Morphling 105,3 Alien.Eli 99,6 Чужой. Воин 69.7 Alien.Hunter 56,3 Alien.Manager 37,6 Alien.OkinawaLife 14,2 добыча. Кит 10,5 Alien.Gamer 4.5 Alien.Randomite 0 Alien.Guard 0 добыча.Орел 0 Alien.Rogue 0 Alien.WeakestLink 0 Alien.Fleer 0 Alien.Survivor 0 Alien.Sped 0 Alien.Junkie 0 Чужой.Ковард 0 Alien.CleverAlien 0 добыча.Человек 0 alien.BlindBully 0 prey.Turtle 0 Alien.AimlessWanderer 0