당신의 친절한 이웃 인 닥터 트리는 방금 코 데몬이라는 3 가지 마법의 생물을주었습니다. 근처의 Colorville 마을에서 전투 토너먼트가 있습니다. 아무도 없었던 것처럼 당신은 최고입니까?
개요
이것은 전투 토너먼트입니다. 각 플레이어는 3 명의 몬스터로 구성된 팀을 통제하며, 목표는 다른 팀을 제압하는 것입니다. 100 라운드가 있으며 승리와 동점에 대한 포인트가 부여됩니다. 가장 많은 점수를 얻은 팀이 승리합니다!
몬스터
코 데몬은 복잡한 작은 생물입니다. 선택할 수있는 5 가지 유형 (요소), 3 가지 능력치 및 3 가지 이동 슬롯이 있습니다.
종류
각 Codémon에는 하나의 유형 이 지정됩니다 . 다섯 가지 유형은 보통, 심령, 불, 물 및 잔디입니다. 각각의 장단점이 있습니다. 피해는 다음 차트를 기준으로합니다.
숫자는 피해 승수입니다. 예를 들어, 화염 공격수는 0.5 수 정치 (반 손상)를 가지며 화염 공격 잔디는 두 배가됩니다 (2).
통계
각 몬스터에는 전투 능력을 결정하는 3 가지 능력치가 있습니다. 공격시받는 피해가 증가합니다. 방어는받는 피해를 줄입니다. 속도는 속도가 느린 사람들보다 먼저 움직입니다.
각 몬스터는 각 스탯의 시작 값이 50이고 최대 100입니다. 몬스터를 만들 때 추가로 스탯 포인트 80 개 를 할당 할 수 있습니다 . 개별 통계는 100을 넘을 수 없습니다. 따라서 100/80/50, 90/80/60 또는 65/65/100 분포를 가질 수 있지만 120/50/60은 불법입니다. 불법 통계를 가진 팀은 실격됩니다. 80 포인트를 모두 사용할 필요 는 없지만 최소 50/50/50을 초과해서는 안됩니다.
HP를 스탯으로 간주 할 수도 있지만 각 Codémon에는 수정할 수없는 100 HP가 있습니다. HP가 0으로 떨어지면 계속 싸울 수 없습니다. 매 전투마다 HP가 100으로 재충전됩니다.
이동
각 몬스터는 세 번의 전투 동작을 알고 있습니다. 선택한 세 개는 고유해야하므로 펀치 / 펀치 / 펀치가 없습니다.
각 유형의 3 개씩 15 개의 동작이 있습니다. 각 유형에는 직접 공격, 약한 공격 효과, 단독 효과 이동이 있습니다.
id name type power uses usable effect
0 Punch N 20 - NFWG
1 Heal N 0 3 NFWG Heals 50 HP
2 Slow N 10 5 NFWG Enemy speed x0.8
3 Pain P 20 - PFWG
4 Sleep P 0 3 PFWG No enemy action until wake
5 Weaken P 10 5 PFWG Enemy Atk x0.8
6 Fireball F 20 - NPFW
7 Burn F 0 3 NPFW Enemy -10 HP each turn
8 Sharpen F 10 5 NPFW Own Atk x1.25
9 Watergun W 20 - NPWG
10 Confuse W 0 3 NPWG Enemy may strike itself (10 power)
11 Shield W 10 5 NPWG Own Def x1.25
12 Vine G 20 - NPFG
13 Poison G 0 3 NPFG Enemy -5xTurns HP each turn
14 Sap G 10 5 NPFG Enemy Def x0.8
type
이동 유형을 나타냅니다. power
그 놀라운 힘입니다. uses
전투 당 몇 번 사용할 수 있는지 나타냅니다 ( -
무제한). usable
사용할 수있는 유형을 표시합니다 (예 : 펀치가 Psychic 유형에 제공 될 수 없으므로 P
). effect
움직임이 어떤 영향을 미치는지 보여줍니다. 항상 효과가있는 치유를 제외하고 각 효과가 75 % 확률로 작용합니다.
몬스터의 능력치를 변경하는 효과의 경우 효과가 누적 될 수 있습니다 . 예를 들어, Weaken을 두 번 사용하면 상대방의 공격력이 0.64로 낮아질 수 있습니다. 몬스터의 능력치 (수면, 번 등)를 변경하지 않은 효과는 쌓이지 않습니다 .
수면 은 매 턴 시작시 60 %의 확률로 깨어날 수 있습니다. 잠자는 몬스터는 행동을 취하지 않습니다.
번에 불이 붙을 때 마다 매번 적의 공격력이 10 HP가 됩니다 . 독 은 비슷하게 작동하지만 매 턴마다 더 많은 양을 소비합니다. 첫 번째 턴에서는 5이며, 그 후 매 턴마다 5를 얻습니다. 따라서 네 번째 턴에는 20의 피해를줍니다. 이들은 몬스터의 유형이나 보너스 대상이 아닌 플랫 데미지입니다.
혼란 은 지시대로 행동하지 않고 몬스터를 공격 할 수 있습니다. 이 공격은 10의 파워를 가지며 주어진 턴에 30 %의 확률로 발생합니다.
분명히 말하면, 효과는 전투가 끝날 때까지 지속됩니다 (위에서 언급 한 것처럼 수면 제외).
해당 유형의 몬스터가 사용하면 이동 속도가 20 % 증가합니다. 예를 들어, 포도 나무를 사용하는 잔디 괴물은 강화되지만 펀치는 사용하지 않습니다.
비밀 통계
통계 및 유형 (하지만 하지 몬스터의 이동) 공공 지식이다. 상대방은 최선의 행동을 선택하기 위해 싸우고있는 것을 볼 수 있습니다. 그러나 숨겨진 보너스도 있습니다.
구체적으로, 두 번의 전투 마다 팀의 각 몬스터마다 "보너스"스탯 포인트가 하나씩 주어집니다. 포인트는 모든 몬스터, 사망 또는 생존, 승자 또는 패자에게 제공됩니다. 이 통계를 선택한 세 가지 통계 중 하나에 할당 할 수 있습니다. 하나의 몬스터에 쌓을 수 없습니다. 각 몬스터는 매번 하나를 얻는다 . 이 포인트는 100 제한에 영향을받지 않습니다. 100 개의 전투 라운드가있을 것이기 때문에 모든 보너스를 할당하면 최대 149까지 단일 스탯을 얻을 수 있습니다. 다시 말하지만, 상대방은 "기본"통계 만 볼 수 있으므로 토너먼트에서 멀어 질수록 그들의 지식은 진실과 다릅니다.
전투
한 번에 한 팀씩 하나씩 활동하며 3 명으로 구성된 팀간에 전투가 벌어집니다. 시작시, 상대 팀이 표시되고 첫 번째 "활성"플레이어가 될 몬스터를 선택하라는 메시지가 표시됩니다.
그 후 다음 단계로 회전합니다.
- 스위치 : 필수 몬스터 스위치가 발생합니다 (있는 경우)
- 전투 행동을 선택하십시오
- 스위치 : 모든 옵션 몬스터 스위치 (전투 행동으로 선택)
- 수면 점검 : 수면에서 일어날 확률
- 공격 1 : 가능하다면, 더 빠른 몬스터는 선택된 이동을 사용합니다
- 공격 2 : 가능하다면, 다른 몬스터는 선택된 이동을 사용합니다
- 효과 피해 : 살아있는 몬스터에게 화상 / 중독 피해를 입 힙니다.
"빠른 속도"는 더 빠른 속도의 몬스터를 의미합니다. 두 속도 통계가 동일하면, 매 회전마다 PRNG 코인 플립으로 선택됩니다.
당신의 활성 몬스터가 죽는 턴이 끝날 때마다 새로운 활성을 선택하라는 메시지가 나타납니다. 당신은 또한 당신이 어떤 턴을 위해 당신의 이동으로 활성 몬스터를 전환하도록 선택할 수 있습니다 (둘 이상의 생존을 한 경우). 다시, 당신이 당신의 이동으로 전환한다면, 당신은 그 차례에 전투 이동을하지 않을 것입니다.
비활성 상태에서는 몬스터를 "처리"하지 않습니다. 이것은 화상 / 독 피해, 독 카운터가 축적되지 않음 , 잠에서 깨어나지 않음 등을 의미 합니다. 전환시 효과가 제거되거나 변경되지 않습니다 . 이것은 다른 괴물과 싸우는 게임 이 아닙니다 . 공격을 제기하고 태운 상태로 전환하면 다시 전환해도 여전히 그대로 유지됩니다.
당신의 활동 상대를 죽일 지 여부에 관계없이 피해가 발생합니다. 이런 식으로 두 팀의 멤버는 한 차례에 죽을 수 있습니다.
한 팀에 사용 가능한 몬스터가 떨어지면 패합니다. 두 팀이 같은 차례에 뛰면 동점입니다. 전투가 1000 턴 동안 지속되면 넥타이입니다.
손상을 결정하는 공식은 다음과 같습니다.
floor((effAttack / effDefense) * movePower * typeMultiplier * moveBoost)
effAttack
및 effDefense
있는 효과적인 괴물에 대한 통계. 효과적인 공격은 공격과 보너스 공격을 더한 다음 효과가 변경되면 0.8 또는 1.25를 곱하여 얻습니다. 이러한 효과는 쌓일 수 있습니다.
유형 수정자가 0 (정상 <-> Psychic)이거나 이동의 힘이 0 (치유, 번 등) 인 경우에만 피해를 입을 수 있습니다. 그렇지 않으면 최소값은 1로 시행됩니다.
토너먼트
토너먼트는 100 라운드 동안 지속됩니다. 각 라운드에서 팀은 무작위로 섞여 서로 섞입니다. 홀수의 팀이있는 경우 남은 사람은 한 명 (타이로 점수)을받습니다. 전투에서 승리하면 팀이 2 점을 얻고 관계는 1 점을 얻습니다 . 마지막에 가장 많은 점수를 얻은 팀이 승리합니다!
팀이 묶인 경우 첫 번째 팀에 묶인 팀과의 토너먼트가 순위 결정 순서를 결정하기 위해 진행됩니다.
실험 계획안
컨트롤러는 프로그램에 네 가지 명령 중 하나를 보냅니다. 첫 번째 문자는 필요한 경우 데이터를 따라 명령 유형을 결정합니다.
프로그램은 명령을 인수로 승인하고 1 초 내에 STDOUT에 응답합니다 . STDIN을 들으면서 살아 있지 마십시오. 각 명령은 새로운 프로세스를 생성합니다.
데이터 / 상태를 디스크에 쓸 수 있습니다. 팀과 이름이 같은 하위 폴더에 파일을 넣습니다. 32 킬로바이트 이상의 데이터를 쓰지 마십시오. 자격이 박탈됩니다. 데이터는 라운드간에 유지되지만 토너먼트 간에는 지워집니다.
명령
팀 데이터
토너먼트 시작시 팀을 등록하기 위해 한 번 전송됩니다. 답장은 일정 해야하며 토너먼트마다 다르지 않아야합니다 .
질문:
T
응답:
name|member0|member1|member2
name
팀 이름이 포함 된 문자열입니다. 구문 분석을 쉽게하려면 영숫자 만 사용하십시오. memberN
각 몬스터의 세부 정보를 제공하는 멤버 문자열입니다.
회원 문자열 :
name:typeid:attack:defense:speed:moveid0:moveid1:moveid2
다시, 'name'은이 몬스터의 이름을 가진 문자열입니다. typeid
유형입니다. 유형 ID는 위의 차트에 표시된 순서대로 Normal = 0 및 Grass = 4입니다.
다음 3 개의 필드는 기본 통계입니다. 위의 통계 섹션에 설명 된 한도를 명심하십시오.
마지막 3 개는 몬스터의 움직임입니다. 위의 이동 차트에 ID가 표시되어 있습니다.
팀 데이터 응답 예는 다음과 같습니다.
DummyTeam|DummyA:0:50:60:70:0:1:2|DummyB:0:50:60:70:0:1:2|DummyC:0:50:60:70:0:1:2
가비지, 형식이 잘못된 데이터 또는 불법 데이터를 여기로 보내는 팀은 수정 될 때까지 참여하지 않습니다.
활성을 선택하십시오
이것은 전투가 시작될 때마다, 그리고 몬스터가 죽고 전환해야 할 때 보내집니다.
질문:
C#battleState
battleState
현재 전투 상태를 보여줍니다. 여기 나와 함께, 그것은 못생긴 :
yourTeamState#theirTeamState
XteamState
다음과 같은 곳 :
name:activeSlot|member0state|member1state|member2state
activeSlot
현재 활성화 된 몬스터를 표시합니다 (0-2). 회원국은 두 가지 맛이 있습니다. 그것은 만약 당신의 팀이, 그것은 추가 정보를 제공합니다. 그래서,
귀하의 memberXstate :
name:id:attack:defense:speed:hp:typeid:poisonedturns:moveCount0:moveCount1:moveCount2:bonusAttack:bonusDefense:bonusSpeed:effectid:effectid:effectid
그들의 memberXstate :
name:id:attack:defense:speed:hp:typeid:poisonedturns:effectid:effectid:effectid
id
는 사용을 원하지 않는 경우 몬스터를 추적하는 데 사용할 수있는 정수 식별자 name
입니다.
attack:defense:speed
당신의있는 기본 통계.
poisonedturns
중독 된 턴 수를 알려줍니다.
moveCountX
각 움직임에 남은 사용량을 알려줍니다. 0이면 사용할 수 없습니다. 무제한 이동의 경우 음수가됩니다.
bonus(stat)
각 스탯에 할당 한 보너스 포인트입니다.
effectid
몬스터에게 적용된 다양한 크기의 효과 목록입니다. 이 것 없는 후행 할 :
존재 여부를 활성 효과가 있는지, 문자열에. 누적 효과가 있으면 목록에 여러 효과로 표시됩니다.
효과 ID는 다음과 같습니다.
0 NONE (should not appear, internal use)
1 POISON
2 CONFUSION
3 BURN
4 SLEEP
5 HEAL (should not appear, internal use)
6 ATTACK_UP
7 ATTACK_DOWN
8 DEFENSE_UP
9 DEFENSE_DOWN
10 SPEED_DOWN
응답:
memberSlot
필요한 유일한 응답은 하나의 숫자 0,1,2이며 활성화하려는 멤버를 알려줍니다. 싸울 수있는 회원이어야합니다. 1
멤버 1이 사망 한 경우 다시 보내지 마십시오 .
배틀 액션
매 턴마다해야 할 일을 결정해야합니다.
질문:
A#battleState
는 battleState
전술 한 바와 같이 여기 정확히이다.
응답:
이동을 사용하려면 이동이있는 슬롯을 다시 보내십시오. 예를 들어, 펀치를 슬롯 0에 할당 한 경우 전송 0
은 펀치 를 수행합니다.
다른 멤버로 전환하려면 멤버의 슬롯 에 10을 더하십시오 . 멤버 2로 전환하려면을 보내십시오 12
.
[0,1,2,10,11,12]에없는 것은 무효로 간주되며 이번 차례에는 아무런 조치도 취하지 않습니다.
보너스 통계
두 번의 전투가 끝나면 각 팀원마다 비밀 보너스 포인트를받습니다.
질문:
B#yourTeamState
귀하의 팀 상태는 위에 표시된 것과 같습니다. 반복하지 마십시오.
응답:
stat0:stat1:stat2
귀하의 답변은 각 팀원에 대해 어떤 스탯을 증가시킬 것인지 나타냅니다. 공격은 0, 방어는 1, 속도는 2입니다.
따라서 멤버 1의 속도, 멤버 2의 공격 및 멤버 3의 방어를 높이려면 다음과 같이 응답하십시오.
2:0:1
제어 장치
컨트롤러는 BitBucket에서 찾을 수 있습니다 : https : //Geobits@bitbucket.org/Geobits/codemon.git
컴파일 된 모든 클래스 파일, 제출 및 players.conf를 폴더에 넣고 실행하기 만하면됩니다.
컨트롤러의 메인 클래스는이라고 Tournament
합니다. 사용법은 :
java Tournament [LOG_LEVEL]
0-4의 로그 수준은 증가하는 정보를 제공합니다. 레벨 0은 토너먼트를 자동으로 실행하고 결과를 제공하며, 레벨 3은 단계별 설명을 제공합니다. 레벨 4는 디버그 출력입니다.
players.conf
프로그램을 실행하는 데 필요한 명령 줄 문자열을 한 줄에 하나씩 추가 하면 토너먼트에 제출물을 추가 할 수 있습니다 . 로 시작하는 줄 #
은 주석입니다.
귀하의 게시물에 추가해야 할 명령 players.conf
및 모든 컴파일 단계 (필요한 경우)를 포함하십시오.
3 명의 노멀 동작으로 모든 노멀 멤버로 구성된 더미 팀이 포함됩니다. 그들은 무작위로 이동을 선택하고 통계가 끔찍합니다. 그들에게 치는 재미.
기타 규칙
외부 리소스를 읽거나 쓸 수 없습니다 (자신의 하위 폴더, 위에서 언급 한대로 최대 32kB 제외).
당신의 팀은 토너먼트 "맹인"에 들어가야합니다. 즉, 특정 상황에서 특정 팀 / 몬스터가 무엇을하는지 파악하기 위해 다른 사람들의 출처를 분석 할 수 없습니다. 당신은 할 수 없는 하드 코딩에게이 정보를 상대의 움직임 / 통계를 분석하지 않으며 대회 진행을 추적하지만.
다른 프로세스 / 제출을 방해하지 마십시오. 리플렉션을 사용하여 데이터를 얻는 등의 작업을 수행하지 않습니다. 내 컴퓨터를 엉망으로 만들지 마십시오. 시도하지 마십시오. 이것은 나의 재량에 달려 있습니다. 위반자는 향후 입장이 금지 될 수 있습니다.
참가자는 최대 두 항목 으로 제한됩니다 . 더 제출하면 제출 한 처음 두 개만 채점합니다. 취소하려면 삭제하십시오.
다른 출품작을 홍보하기위한 출품작 만 존재할 수는 없습니다. 또한 다른 참가자를 간접적으로 실격 처리하려고하지 않을 수 있습니다 (예 : 디스크에 쓰려고하는 DQ 플레이어에게 27M 캐릭터 팀 이름 사용). 각 제출물은 자체 장점을 얻기 위해 재생되어야합니다.
프로그램은 한 번에 최대 하나의 자식 프로세스를 생성 할 수 있습니다 (직접적인 것이 아닌 전체 자손). 기본 프로세스와 하위 프로세스는 모두 출력을 제공 한 후 바로 종료해야합니다. 어느 쪽이든, 시간 초과를 피하지 마십시오.
토너먼트는 Intel i7 3770K 프로세서가 장착 된 Ubuntu를 실행하는 컴퓨터에서 진행됩니다.
결과
이것은 현재 플레이어의 결과입니다. 그것은이다 매우 최고 경쟁자 간의 긴밀한, 나는 500까지 라운드의 수를 해주 (및 보너스 포인트의 간격이 일치하도록 조정)에 대해 생각하고 있어요. 의견이나 의견이 있으십니까?
------- Final Results -------
158 Happy3Campers
157 LittleKid
71 InsideYourHead
68 HardenedTrio
46 BitterRivals
Google 드라이브 에서 전체 재생 별 결과
bye
고르지 않은 수의 경쟁자에게도 적합 하지 않으며 경기 쌍이 공정하고 고르게 분포되어 있는지 확인합니다.
n^2
대신에 전투를 확장하기 때문에 그것을 피하고 싶었다 n
. 현재 7 개의 경쟁자와 100 개의 라운드 만 있으면 2100 번의 전투 (300 대 그대로, 1500 번의 500 회)입니다. 더 많은 참가작이 들어 오면 더 나빠집니다. 라운드 수를 줄일 수는 있지만 고유 한 변동성 (상태 esp 관련)으로 인해 50 배 (보너스 포인트)가 더 쉬워집니다.