이 도전은 끝났다. 경쟁사의 최종 점수를 보려면 여기를 클릭하십시오
이 과제에서 각 제출은 하나의 봇입니다. 각 봇은 자바 스크립트 함수 여야합니다. 봇은 금에서 가장 높은 총 가치를 얻기 위해 싸울 것입니다. 금은 농사를 짓거나 다른 봇을 죽임으로써 얻을 수 있으며 치유, 공격, 방어 및 농사를 업그레이드하는 데 사용됩니다.
객관적인:
최대 1000 턴 (한 봇만 남았을 때 끝남)을 포함하는 다수의 라운드에서 총 가치가 가장 높은 봇 (득한 모든 금의 합)이 승자입니다.
회전 :
매 턴마다 살아있는 모든 봇 (> 0 HP)이 한 번 실행됩니다. 이동을 반환 할 수 있으며 다음 중 하나 일 수 있습니다.
- 치유 : HP 회복
- 공격 : 다른 봇에서 HP를 제거합니다
- 방패 : 이후의 공격으로부터 방어
- 기절 : 다른 봇의 다음 턴을 건너 뜁니다.
- 농장 : HP를 희생시키면서 금을 얻습니다
- 업그레이드 : 특정 동작 개선
모든 봇은 실행되기 전에 이동을 반환하므로 기절, 치유, 공격, 보호막 등은 그 턴 후반에 이동하는 봇에는 영향을 미치지 않습니다. 예를 들어, 봇 A가 봇 B를 기절시키고 봇 B가 턴 순서에서 봇 A 다음에 오는 경우, 봇 B는 여전히 같은 턴에서 나중에 움직이며 다음 턴에 기절합니다.
전투, 농업 및 업그레이드 :
각 봇의 최대 HP는 100이고 할당 된 UID는 0에서 99 사이입니다.이 UID는 매 라운드마다 변경되며 봇이 서로를 추적하는 방법입니다.
치유는 레벨에 따라 결정되는 HP의 양을 추가하는 가장 간단한 동작 중 하나입니다 (5 HP에서 시작). 봇은 100 HP를 넘지 못한다.
UID로 봇을 공격하는 것은 레벨 0에서 5의 기본 피해를 입히는 또 다른 이동입니다. 봇은 기절하여 다음 턴을 건너 뛰고 UID도 사용합니다.
봇에는 추가 보호막 HP가 있으며 제한이 없습니다. 이 보호막 HP는 다른 봇으로부터의 직접적인 공격으로 인한 피해를 흡수하고 보호막으로 추가됩니다. 레벨 0에서 쉴딩은 5의 쉴드 HP를 추가합니다.
농업은 2 HP 비용으로 레벨 0에서 5 골드를 얻습니다. 이 2 HP는 보호 할 수 없습니다. 금메달 (승리 이외)의 유일한 용도는 움직임을 업그레이드하는 것입니다. 치유, 공격 및 방어의 기본 가치는 5 HP이며 농업은 5 골드부터 시작됩니다. 각 동작에는 0부터 시작하는 개별 레벨이 있습니다.이 공식은 HP 또는 금의 움직임 값을 결정합니다. 여기서 L은 레벨입니다.
- 치료:
L + 5
- 공격 :
1.25L + 5
- 차폐 :
1.5L + 5
- 농업:
2L + 5
이동 업그레이드 비용은 특정 레벨에서 동일 2.5L² + 2.5L + 10
하며 L은 현재 레벨입니다. 봇은이 기능 cost(currentLevel)
을 바로 가기로 사용하여 이를 결정할 수 있습니다.
봇은 25 골드로 시작하여 레벨 2로 이동하거나 레벨 2로 한 번 이동합니다.이 시작 골드는 봇의 총 가치에 포함되지 않습니다. 봇을 처치하면 총 가치의 절반이 반올림되고 반올림되며 같은 차례에 두 봇이 다른 봇을 죽이면 보상을받습니다.
입출력:
컨트롤러와 통신하기 위해 함수의 반환 값을 사용하여 이동 정보를 보냅니다. 다음 중 하나가 반환되어야합니다.
- 고치다:
heal()
- 공격:
attack(uid)
- 방패:
shield()
- 충격:
stun(uid)
- 농장:
farm()
- 업그레이드:
upgrade("heal" / "attack" / "shield" / "farm")
회전을 건너 뛰거나 (아무것도하지 않음) 아무 것도 반환하지 않거나 잘못된 값을 반환합니다.
현재 회전 번호 (1부터 시작)를 얻으려면을 사용하십시오 turn()
.
함수의 인수에는 봇, 다른 봇의 UID 및 턴간 저장에 대한 정보가 포함됩니다. 첫 번째 인수에는 다음과 같은 속성을 가진 객체입니다 : uid
, hp
, gold
,와 shield
. 이들은 봇의 현재 정보 사본입니다. 중첩 된 개체도있다 levels
수준 번호를, heal
, attack
, shield
,와 farm
.
두 번째 인수는 속성을 포함하는 객체로 포맷 네 제외한 모든 살아있는 로봇의 셔플 어레이이며 uid
, hp
(플러스 쉴드), worth
및 attack
(공격 레벨). 세 번째 인수는 턴간 저장에 사용할 수있는 빈 객체입니다.
봇 예 :
이 봇은 공격을 레벨 5로 업그레이드 할 수있을 때까지 농사를 짓고, 죽거나 이길 때까지 매 턴마다 무작위 봇을 공격합니다. 치유 / 차폐가 없기 때문에 효과적이지 않습니다.
function freeTestBotA(me, others, storage) {
if (me.levels.attack < 5) {
if (me.gold < cost(me.levels.attack))
return farm();
return upgrade("attack");
}
return attack(others[0].uid);
}
이 봇에는 공격 모드와 방어 모드가 있습니다. 방어 모드에있을 때 무작위 봇을 기절 시키거나 치유하며, 공격 모드에있을 때 공격하거나 방어합니다. 가능할 때마다 공격 업그레이드를 시도합니다.
function freeTestBotB(me, others, storage) {
if (me.gold >= cost(me.levels.attack))
return upgrade("attack");
if (me.hp < 50)
if (Math.random() < 0.5)
return stun(others[0].uid);
else
return heal();
else
if (Math.random() < 0.5)
return attack(others[0].uid);
else
return shield();
}
규칙 :
- 금지 된 표준 허점
- 봇은 범위를 벗어난 변수를 읽거나 수정하거나 추가 할 수 없으며 치트를 시도하지 않으며 컨트롤러 정의 또는 DOM 함수를 호출 할 수 없습니다
- 반환 값은 거짓이거나 위의 함수 출력 중 하나 여야합니다.
- 봇은 특정 봇을 대상으로하도록 설계되어서는 안되지만 일반적인 전략을 활용하도록 설계 될 수 있습니다
- 봇은 스스로 공격 할 수 없습니다 (@Ness의 설명으로 인해 발견됨)
- 봇은 다른 봇과 충분히 달라야 별도의 항목으로 간주 될 수 있습니다.
- 팀 구성은 이제 허용 되지 않습니다
- 컨트롤러는 여기 에서 찾을 수 있습니다
- 채팅방
새로운 컨트롤러 디버깅 :
파일을 사용하여 봇 속성 gold-battle-log.js
값 을 0 (로깅 없음), 1 (로그 이동) 또는 2 (로그 이동, hp, 금, 레벨 등)로 설정할 수 있습니다 .debug
botData
챌린지는 8 월 9 일 금요일 1700 UTC에 종료됩니다.
[closed]
, 결국 캐주얼 시청자들이 저의 도전을 읽는 것을 건너 뛰게 할 것입니다. 품질이 낮거나 주제가 아닌 것으로 가정합니다.