컴퓨팅 사고력은 프로그램 만들 때 논리적으로 문제 해결해나가는 과정
이번 호에서는 실제 코딩지식을 활용하여 온라인게임을 만드는 과정을 설명 드립니다. 아래 설명 드리는 게임은 다음 링크 (altec2121.github.io/1-Javascript-Term/Memory-game/index.html)에서 확인하실 수 있습니다. 일단 게임을 만드는 과정을 이해하기 위해 게임의 룰부터 정확히 정리해야 합니다.
01_게임의 룰
Step 1) 카드 두 장을 뒤집습니다. Step 2) 두 카드가 같은 경우 그대로 둡니다. 두 카드의 모양이 다를 경우에는 다시 뒤집어 놓습니다.
Step 3) Step 1과 Step 2를 모든 카드가 뒤집힐 때까지 반복합니다. 모든 카드가 다 뒤집히면 게임이 종료됩니다. 두 장씩 뒤집는 시도를 적게 할 수록 더 좋은 메모리를 가지고 있다고 볼 수 있습니다.
게임의 룰을 정리하였으므로 논리적으로 게임을 만들어가는 과정을 설명 드리도록 하겠습니다.
02_메모리 게임 개발 위한 논리적 과정
제일 처음의 상황은 현재 카드들이 모두 뒤집어져 보이지 않는 상황입니다. 카드게임을 시작하면 플레이어가 카드를 처음 클릭을 할 것입니다.
그렇다면 플레이어가 카드를 클릭하는 이벤트 (Input) 발생 시에 어떤 특정한 일을 수행하는 함수 (function)가 필요합니다. 이 함수는 기본적으로 뒤집어져 있던 카드의 앞면을 보여줘야 합니다.
- 카드를 클릭했을 때 뒤집어서 보여주는 함수 생성
그렇다면 그 다음에 플레이어가 할 일은 두 번째 카드를 고르는 일입니다. 두 번째 카드를 고르기 전까지 게임 프로그램이 해야 할 역할은 없습니다. 두 번째 카드를 고르는 클릭 이벤트가 발생하면 위와 같이 카드를 뒤집어주는 역할을 수행합니다.
여기서 함수라는 것이 얼마나 중요한지 이해할 수 있습니다. 반복된 패턴으로 일어나는 경우 함수 (Function)로 정의하여 언제든지 재활용하여 사용할 수 있습니다. 수학에서의 함수와 매우 비슷한 개념입니다.
그러나 두 번째 카드가 뒤집힌 경우 카드만 뒤집으면 될까요? 그렇지 않습니다. 뒤집혀 있는 카드가 두 장이라면 프로그램은 다음 일을 바로 수행해야 합니다. 그렇다면 뒤집힌 카드가 두 장인지 항상 카드가 뒤집힐 때마다 확인하여야 합니다. 여기서 조건문이 등장합니다.
- 뒤집힌 카드가 두 장이라면 같은 모양의 카드인지 확인해야
그럼, 이제 두 장의 카드가 뒤집혀서 확인해야 하는 상황입니다. 만약 같은 카드라면 두 카드를 도로 뒷면으로 뒤집을 필요가 없습니다. 두 카드의 모양이 다르다면 약 2 초 뒤 (어떤 모양의 카드가 어느 위치에 있는지 확인하여야 하니까) 다시 두 카드를 뒤집으면 됩니다.
- 두 번째 조건문
만약 두 개의 카드가 같다면 다시 뒤집지 않고 그대로 둡니다. 게임에 점수가 포함된 경우 점수를 업데이트 합니다. 그렇지 않은 경우 약 2초의 시간을 둔 뒤 두 장의 카드를 다시 뒷면으로 뒤집습니다.
이제 이 프로세스를 계속 반복하면 됩니다. 그럼 이후 모든 카드가 다 뒤집힌 상황이라면 어떻게 하여야 할까요?
카드가 다 뒤집혔을 때 플레이어에게 축하 메시지를 다시 조건문을 활용하여 모든 카드가 매칭됐을 때 게임이 끝났고 성공적으로 모두 매칭하였다고 메시지를 보내줄 수 있습니다.
03_컴퓨팅 사고력은 이처럼 문제를 해결해나가는 과정
컴퓨팅 사고력은 위처럼 어떤 프로그램을 만들 때 논리적으로 문제를 해결해나가는 과정입니다. 프로그램은 프로그램을 사용하는 사용자가 있고 그 사용자가 할 수 있는 행동 (Input)들을 정의하여 어떤 특정한 이벤트가 발생할 때 프로그램은 적절히 프로세스를 진행하여 사용자가 원하는 결과물을 주어야 합니다.
기사제공: SeedTree (0490 420 489)