여섯 줄로 시작합니다
코드배틀에서는 손으로 게임을 하지 않습니다. 게임을 하는 코드를 씁니다. 아래가 가위바위보 전략 전체입니다. 이 화면의 에디터에 그대로 붙여 넣으면 돌아갑니다.
var next = 2; // 첫 턴은 바위
function onGameStart() {}
function onRoundStart() {}
function onTurnStart() {
return next; // 1 가위 · 2 바위 · 3 보
}
function onTurnEnd(result) {
next = result.opponentchoice % 3 + 1;
}
function onRoundEnd() {}
function onGameEnd() {}
이 코드로 대결하면
- LEVEL 1
- 20판 전승
- LEVEL 2
- 20판 전패
LEVEL 1은 상대의 직전 수를 보지 않아 이 전략에 그대로 잡힙니다. LEVEL 2는 반대로 이 규칙성을 읽어 내고 되받아칩니다. 그래서 다시 씁니다. 그것이 코드배틀입니다.
게임 20판은 라운드 100번, 턴 10,000번입니다. 이 숫자는 저장소의 테스트가 실제 규칙 엔진으로 매번 다시 확인합니다.
가위바위보에서 직접 확인하기- 게임 규칙과 샘플 코드의 계약을 확인합니다.
- 직접 또는 AI 도구의 도움을 받아 전략을 구현합니다.
- AI·온라인 상대·코드 아레나와 겨루고, 로그를 보고 고칩니다.
GAME은 여러 ROUND로, ROUND는 여러 TURN으로 구성됩니다. 각 TURN의 선택이 ROUND와 GAME의 승패를 결정합니다. 코드에서 printLog()로 남긴 로그는 화면 하단 로그 영역에 나옵니다.
1코드 배틀
전략 코드 하나로 AI 또는 온라인 상대와 대결
지금 이용할 수 있습니다. 로그인하지 않아도 바로 플레이할 수 있습니다.
가위바위보 게임
- 바위가 가위를 이기고, 보가 바위를 이기며, 가위가 보를 이기는.. 네, 그 게임 맞습니다.
- 매 TURN마다 가위(1), 바위(2), 보(3) 중 하나를 선택하고, 가위로 이기면 1점, 바위로 이기면 2점, 보로 이기면 3점을 획득합니다.
오목 게임
- 바둑판 위에서 가로,세로,대각선 중 한 방향으로 연속된 다섯개의 돌을 먼저 놓으면 이기는 게임입니다.
- 매 TURN마다 상대의 마지막 좌표를 받은 후 나의 좌표를 결정하여 리턴하는 방식이며, 한판이 하나의 ROUND이고 네판을 먼저 이기면, GAME에서 승리하게 됩니다.
숫자야구 게임
- 상대와 내가 각각 자신의 3자리 숫자를 정한 후, 먼저 상대의 숫자를 맞추면 승리하는 게임인데, 만약 동시에 맞춘 경우 더 큰 숫자를 가진 쪽이 승리하게 됩니다.
- 매 TURN마다 상대 숫자를 예측하고, 3자리 숫자 각각에 대하여 숫자와 자리가 모두 일치하면 strike, 숫자는 일치하는데 자리가 다르면 ball이 되는 결과값을 받아서 분석합니다.
섯다 게임
- 상대와 내가 각각 2장의 카드(화투)를 받게 되고, 2장의 카드의 조합으로 승패를 결정하는 게임입니다.
- game이 시작될때 money를 받고, round가 시작될 때 내 카드 2장과 상대 카드 1장을 받고, 각 turn에서 raise 또는 call 또는 die를 선택해야 합니다.
개발자 행사 사례
개발자 행사에서 맞붙는 두 개의 전략 코드
SKP 2021~2023 개발자 행사에서 사용된 과거 예선 화면을 살펴보세요.
1:1 무술대회
- SK플래닛의 2021년 개발자 행사 중 코드배틀 세션을 지원하기 위해 만든 페이지입니다.
- 매 TURN마다 공격수단(주먹 or 발차기)과 공격위치(머리 or 몸통 or 다리)를 선택하고, 이기면 공격수단 및 공격위치에 따라 점수를 획득하는 방식입니다.
Code Baseball Classic
- SK플래닛의 2022년 개발자 행사 중 코드배틀 세션을 지원하기 위해 만든 페이지입니다.
- 진짜 야구를 표방하는 코드배틀 게임입니다. 3X3 스트라이크존이 있고, 매 TURN마다 어디로 던질지, 또는 어디를 칠지를 선택하며, 규칙에 따라 홈런, 안타, 스트라이크, 볼이 됩니다.
숫자카드 배틀
- SK플래닛의 2023년 개발자 행사 중 코드배틀 세션을 지원하기 위해 만든 페이지입니다.
- 섯다와 게임 방식이 거의 같습니다. 숫자 카드 2장씩이 주어지고 상대의 카드 1장을 볼 수 있습니다. 서로 베팅을 하고 높은 카드 페어를 가진 쪽이 베팅한 코인들을 가져가는 방식입니다.