정보공유

오락실 두더지 잡기 게임으로 배우는 코딩의 비밀

안녕하세요! 여러분, 어릴 적 오락실에서 망치를 들고 튀어나오는 두더지를 정신없이 내리치던 기억 있으신가요? 뿅뿅 튀어나오는 두더지를 잡다 보면 스트레스가 확 풀리곤 했죠. 그런데 이 단순하고 신나는 두더지 잡기 게임 속에 우리가 그토록 어렵게 생각하는 ‘코딩’의 핵심 원리가 고스란히 담겨 있다는 사실, 알고 계셨나요? 오늘은 오락실 추억을 소환하며 코딩이 얼마나 우리 가까이에 있는지 친근하게 이야기해 볼게요.

게임 요소 코딩 개념 실제 역할 및 비유
두더지가 나오는 구멍 배열 (Array) 데이터를 담아두는 여러 개의 방 번호
랜덤하게 튀어나오는 두더지 난수 생성 (Random) 예측할 수 없는 무작위 움직임 만들기
망치로 두더지를 때리는 행동 이벤트 리스너 (Event Listener) 사용자의 클릭이나 입력 감지하기
두더지를 맞추면 올라가는 점수 조건문과 변수 (If & Variable) 맞췄다면(조건) 점수 통에 +1점(변수)
제한 시간 동안 게임 반복 반복문과 타이머 (Loop & Timer) 시간이 다 될 때까지 게임을 계속 실행하기

두더지 구멍은 데이터를 담는 방이에요

두더지 게임을 하려면 가장 먼저 뭐가 필요할까요? 바로 두더지가 대기하고 있는 여러 개의 구멍입니다. 보통 9개나 12개 정도의 구멍이 격자 모양으로 배치되어 있죠. 코딩에서는 이런 구조를 ‘배열’이라고 불러요. 쉽게 말해서 똑같은 모양의 상자들을 나란히 줄 세워놓고, 각각의 상자에 번호를 매겨놓은 것이랍니다.

개발자들은 컴퓨터에게 “1번 구멍에서 두더지가 나와라!”, “이번에는 5번 구멍이다!”라고 명령을 내립니다. 만약 이 구멍들을 하나로 묶어 관리하는 배열이라는 개념이 없다면, 구멍 1번용 코드, 구멍 2번용 코드 등 똑같은 이야기를 수십 번 반복해서 써야 했을 거예요. 배열 덕분에 아주 깔끔하고 효율적으로 구멍들을 관리할 수 있는 것이죠.

코딩 작업을 하는 모니터 화면

출처: Unsplash (Marvin Meyer)

예측 불가능한 두더지의 움직임, 난수의 마법

두더지 잡기가 재밌는 이유는 다음에 어느 구멍에서 두더지가 튀어나올지 전혀 모르기 때문입니다. 만약 1번, 2번, 3번 순서대로 일정하게만 나온다면 금방 지루해지겠죠? 이렇게 예측할 수 없는 무작위 상태를 만드는 것을 코딩에서는 ‘난수 생성’ 또는 ‘랜덤 함수’라고 해요.

게임 내부에서는 컴퓨터가 주사위를 굴리듯 계속해서 무작위 숫자를 뽑아내고 있어요. “이번에 나온 숫자가 4니까 4번 구멍 두더지를 올려라!” 하고 말이죠. 요즘 IT 업계에서 만드는 다양한 추천 알고리즘이나 콘텐츠 배치도 이런 무작위성과 규칙성을 적절히 섞어서 사용자들에게 매번 새로운 재미를 주는 방식으로 발전하고 있답니다.

레트로 게임기 소품

출처: Unsplash (Lorenzo Herrera)

탕! 내리치는 순간 작동하는 이벤트와 조건문

망치가 내려가는 순간을 감지합니다

두더지가 쏙 올라왔을 때 우리가 망치로 판을 내리치면, 게임기는 우리가 어떤 구멍을 때렸는지 정확하게 알아차립니다. 코딩에서는 사용자가 화면을 누르거나 마우스를 클릭하는 등의 모든 행동을 ‘이벤트’라고 불러요. 그리고 그 이벤트를 실시간으로 귀를 기울여 감시하는 녀석을 ‘이벤트 리스너’라고 하죠. 망치가 내려오는 물리적인 충격을 전기 신호로 바꿔서 컴퓨터에게 “지금 유저가 움직였다!”라고 알려주는 역할을 합니다.

진짜 두더지를 맞췄나요?

이벤트가 발생하면 컴퓨터는 잽싸게 상황을 판단해야 합니다. 이때 사용하는 것이 바로 ‘조건문’이에요. “만약 3번 구멍에 두더지가 올라와 있는 상태고, 유저가 때린 구멍도 3번이 맞다면?”이라는 조건을 따져보는 것이죠. 이 조건이 참(True)이 되면 점수를 올리는 다음 단계로 넘어가고, 이미 두더지가 들어갔는데 헛스윙을 한 거라면 아무 일도 일어나지 않게 처리합니다. 우리 일상으로 치면 ‘비가 오면 우산을 쓰고, 안 오면 안 쓴다’ 같은 선택의 기로를 코드로 구현한 거예요.

오락실 두더지 잡기 게임으로 배우는 코딩의 비밀

출처: Unsplash (Clément Hélardot)

변하는 점수와 멈추지 않는 반복문

두더지를 맞출 때마다 전광판의 점수가 100점, 200점 늘어납니다. 이렇게 수시로 변하는 값을 저장하는 공간을 코딩에서는 ‘변수’라고 부릅니다. 빈 상자에 ‘현재 점수’라는 이름을 붙여두고, 두더지를 잡을 때마다 그 상자 안의 숫자를 계속 갈아치우는 방식이에요.

동시에 게임은 제한 시간 60초 동안 쉬지 않고 돌아갑니다. 두더지가 들어갔다 나왔다 하는 과정을 60초가 끝날 때까지 수십 번 반복해야 하죠. 이걸 가능하게 하는 게 바로 ‘반복문’과 ‘타이머’입니다. 지정된 조건(남은 시간 0초)이 될 때까지 똑같은 동작을 계속 실행하라고 컴퓨터에게 명령을 내리는 거예요. 그러다가 타이머가 0을 가리키는 순간 반복을 딱 멈추고 “게임 오버”라는 문구를 화면에 띄우게 됩니다.

어떤가요? 오락실에서 그냥 즐기던 단순한 게임이었지만, 그 안을 들여다보니 배열, 난수, 이벤트, 조건수, 변수, 반복문까지 코딩의 기초 종합선물세트가 전부 들어있었죠? 우리가 매일 쓰는 스마트폰 어플이나 웹사이트들도 결국 이 두더지 잡기 게임과 똑같은 논리적 구조로 만들어져 있답니다. 코딩, 알고 보니 생각보다 우리 주변의 놀이와 참 많이 닮아 있죠?

쿠팡파트너스 활동으로 인한 소정의 수수료를 받습니다.

두더지게임에 대한 상품 10개 리스트입니다.