이번 장에서는 묵찌빠 게임을 만들어 보겠습니다. 가위바위보를 하는 시점이 사용자가 키를 누르는 시점이라는 것만 제외하면 게임규칙은 우리가 흔히 하는 묵찌빠 게임과 같습니다. 사용되는 키는 키보드 좌측 하단의 z(묵), x(찌), c(빠) 입니다.


사용자 삽입 이미지


1. 변수 생성
Variables의 [Make a variable]을 클릭하여 아래의 변수들을 생성합니다.
  • state - 게임 상태입니다. 0은 가위바위보로 공격을 정하는 상태고 1은 사용자가 공격중인 상태, 2는 컴퓨터가 공격중인 상태입니다.
  • computer - 컴퓨터가 이긴 횟수입니다.
  • player - 사용자가 이긴 횟수입니다.
  • computerChoice - 현재 컴퓨터가 선택한 값(묵:1, 찌:2, 빠:3)입니다.
  • playerChoice - 현재 사용자가 선택한 값입니다.
  • winner - 승자를 나타내며 1은 사용자가 이겼을 경우, 2는 컴퓨터가 이겼을 경우입니다.

2. 스프라이트

1) 스프라이트 생성
이번장에서 사용하는 스프라이트는 4가지 입니다. Sprite1은 사용자 이미지, Sprite2는 컴퓨터 이미지, Sprite3은 현재 공격 차례를 나타내는 화살표이며 Sprite4는 각종 안내 문구를 출력합니다. 

사용자 삽입 이미지

Sprite1과 Sprite2는 '바위' 이미지외에 '가위', '보' 커스튬을 추가합니다. 좌측은 Sprite1, 우측은 Sprite2입니다.
사용자 삽입 이미지

Sprite4에도 s1, s2 이미지를 커스튬에 추가합니다. 아래의 압축파일을 다운로드 받아서 사용하시면 됩니다.

2) 효과음 생성
* 효과음을 녹음 할려면 헤드셋 또는 웹켐과 같이 마이크가 연결되어 있어야 합니다. 없으신 분들은 다음 장으로 바로 넘어 갑니다.

사용자 삽입 이미지
공격시 '묵, 찌, 빠'의 효과음 출력을 위해 Sprite1에서 Sounds 탭을 선택한 후에 녹음을을 위해 [Record] 버튼을 클릭합니다.


아래와 같이 녹음창이 뜨면 붉은색 녹음 버튼을 클릭한 후 '묵'을 녹음 하고 OK 버튼을 눌러 저장합니다. 같은 방법으로 '찌', '빠'도 추가하며 각각의 이름을 'muk', 'ji', 'pa'로 변경합니다.
사용자 삽입 이미지


사용자 삽입 이미지
Sprite1의 Sounds 탭에 좌측과 같이 녹음된 음성들이 저장 되어 있음을 확인합니다.

Sprite2에도 같은 방법으로 효과음을 추가합니다. 컴퓨터에서 사용하는 목소리기 때문에 Sprite1과 다른 목소리로 녹음하시는 것이 좋습니다.








3. 사용자(Sprite1) 스크립트
1) 초기화
사용자 삽입 이미지

게임이 시작되면 initPlayer 메시지를 발송하고 player, computer의 점수를 0으로 설정합니다.

initPlayer 메시지를 받으면 현재의 커스튬을 묵(bw)으로 설정한 후에 winner, state 변수를 0으로 설정합니다.

2) 입력 처리
사용자 삽입 이미지
사용자 입력을 처리하는 스크립트 입니다. z는 묵, x는 찌, c는 빠를 선택한 경우입니다.

[if <[state]=(1)>]
현재 상태가 사용자가 공격일 경우에만 사용자의 입력에 따라 '묵', '찌', '빠' 음성을 출력합니다.

[set playerChoice to (값)]
사용자의 선택을 저장합니다. 값은 묵은 1, 찌는 2, 빠는 3입니다.

[swtich to costume [custume]]
사용자가 선택한 값에 따라 커스튬을 변경합니다.

[broadcast [setComputer] and wait]
컴퓨터의 처리를 위해 setComputer 메시지를 발송합니다.














4. 컴퓨터(Sprite2) 스크립트
1) 초기화
사용자 삽입 이미지
시작시에는 기본으로 묵(bw2) 커스튬을 출력합니다.




2) 컴퓨터 순서 처리
사용자 삽입 이미지

[set computerChoice [ping random (1) to (3)]]
1에서 3까지 임의의 수를 선택합니다.

[if <[computerChoice]=(값)>]
선택된 값을 묵(1), 찌(2), 빠(3)인지 검사합니다.

[swtich to costume [custume]]
선택된 값에 따라 커스튬을 출력합니다.

[if <[state]=(2)>]
state가 2인 컴퓨터의 공격순서일 경우에는 효과음을 출력합니다.

[broadcast [decision] and wait]
사용자 입력과 컴퓨터의 선택된 값에 따른 처리를 위해 decision 메시지를 발송합니다.

3) 승부 처리
사용자 삽입 이미지

[if <<[playerChoice]-[computerChoice]>=(0)>]
사용자와 컴퓨터가 같은 선택을 하였는지를 검사합니다.

[if <not <[state]=(1)>>]
state가 0이 아닐 경우, 즉 공격우선권을 위해 가위바위보를 하는 경우가 아닐 경우를 의미합니다. 같은 선택을 하였기 때문에 사용자가 공격중일 경우(state=1)에는 plyaer 우승횟수를 1 증가하고 winner를 1(사용자)로 설정합니다. 컴퓨터가 공격중일 경우에는 computer 우승횟수를 1 증가하고 winner를 2(컴퓨터)로 설정합니다.

[broadcast [showMessage] and wait]
결과 출력을 위해 showMessage 메시지를 발송합니다.

[broadcast [initPlayer] and wait]
[swtich to costume [bw2]]
다시 게임을 시작하기 위하여 initPlayer 메시지를 발송하고 커스툼을 '주먹'으로 변경합니다.

playerChoice-computerChoice가 -1 또는 2일 경우에는 사용자가 이긴 경우입니다. 이때는 [set state to (1)]로 사용자에게 공격권을 설정하고, 아니면 컴퓨터에게 공격권(state=2)을 설정합니다.

[broadcast [setArrow] and wait]
화살표 아이콘이 현재 공격권을 가지고 있는 쪽에 출력되도록 합니다.

[broadcast [showMessage] and wait]
안내문 출력을 위해 showMessage 메시지를 발송합니다.

5. 화살표 스프라이트
사용자 삽입 이미지
시작되면 아이콘을 숨기고 Y위치를 40으로 설정한 후 무한반복 되면서 아래, 위로 0.2초의 간격을 두고 움직입니다.

사용자에게 공격권이 있을 경우(state=1)에는 X 위치를 사용자 쪽으로 이동(-177)하고 출력합니다. 컴퓨터에게 공격권이 있을 경우(state=2)에는 컴퓨터 쪽으로 이동(00)하고 출력합니다. 그외 공격권을 위해 가위바위보 중(state=0)일때는 아이콘을 숨깁니다.


6. 메시지 스프라이트
1) 초기화
사용자 삽입 이미지
초기 커스튬을 s0으로 설정합니다. s0은 "가위, 바위, 보"란 커스튬을 출력합니다.



2) 메시지 출력
사용자 삽입 이미지
showMessage를 처리하는 스크립트 입니다. state가 0일 경우(공격권 선택중)일 때는 "가위, 바위, 보"란 메시지를 출력합니다.

누군가 공격중일 때는 사용자가 이겼을 경우(winner=1)에는 s1 커스튬(플레이어 승!!)을 출력하고, 컴퓨터가 이겼을 경우에는 s2 커스튬(컴퓨터 승!!)을 출력합니다.

[wait (3) secs]
[hide]
메시지를 3초간 출력하고 감춥니다.















이제 완료하였습니다. 시작버튼을 클릭하여 플레이 해 봅니다. 처음엔 z, x, c로 가위바위보를 하여 공격권자를 선택합니다. 사용자는 공격시에도 방어시에도 z, x, c중 하나를 선택하여 키보드로 입력하여야만 게임이 계속 진행됩니다.

전체소스는 아래의 파일을 다운로드 받아 확인해 보시기 바랍니다.