728x90

 

 

코딩클럽 청년샘 4기 연수 과제 중 하나로 선택된 스크래치로 가위바위보 게임 만들기

 

가위바위보 게임 가기

 

결과물 링크는 위에 첨부된 링크를 따라가면 된다.

 

그럼 내가 어떻게 만들었는지 하나씩 파헤쳐보자.

(그렇게 자랑할만한 수준은 아니지만..)

 

 

우선 아래는 모든 스프라이트에 대한 스크립트를 모두 캡쳐한 화면을 기준으로 하나씩 살펴보자,

 

1. 무대에 대한 스크립트에서는 무슨짓을 하는지 자세히 살펴보자.

 

 

 

보기 힘들기 때문에 스크립트만 가져와서 자세히 설명을 달아보았다.

 

 

 

728x90

 

 

라인별로 설명하면

01 : '게임시작하기'라는 방송을 받으면 이 스크립트를 시작하도록 되어있다.

02 : '사용자_점수'변수와 '컴퓨터_변수'점수가 10점인 값이 있는지 or 조건으로 하나만 참이어도 바로 아래 03라인을 실행한다.

    하지만 하나라도 10의 값이 아니라면 04라인의 '아니면' 블록 아래의 스크립트를 실행한다.

03 : 02라인의 조건이 '참'인 경우에 진행하는 블록 코드로 '게임종료'를 방송하도록 되어있다.

04 : 02라인의 조건이 '거짓'인 경우에 진행하는 블록 코드이다.

05 : '무엇을 내시겠습니까? (1:가위 2:바위 3:보자기)' 메시지를 보여주고 이에 대한 답을 사용자의 입력으로 받아온다.

06 : 07 ~ 16라인의 블록 코드를 무한히 반복한다.

07 : 만약 05라인에서의 사용자의 대답이 1보다 작은 정수이거나 3보다 큰 정수일 경우 참을 뜻하게 되어 08라인을 실행하고,

     그 이외의 1, 2, 3의 정수중 하나를 입력했을 경우 ​조건문에서는 '거짓'을 뜻하기 때문​에 11라인을 실행한다.

08 : 07라인의 조건문 비교 결과가 '참'인 경우 'pop' 소리를 재생한다.

09 : 의도한 값이 입력되지 않았기 때문에 '1, 2, 3중에 골라주세요, ... ' 의 메시지를 보여주고 다시 입력 하기를 기다린다.

10 : 05라인에서 사용자가 1, 2, 3중의 하나의 값을 입력한 경우 진행하게 된다.

11 : '사용자가낸것' 변수의 값을 사용자가 입력한 1, 2, 3 중의 하나의 값을 가지게 된다.

12 : '컴퓨터가낸것' 변수의 값을 1부터 3사이의 난수로 결정된 값을 가지게 된다.

13 : '계산하러가기'를 방송하고 06라인에서 선언한 '무한 반복하기' 스크립트를 종료한다.

 

 

 

2. 다음으로 가장 복잡한 스크립트를 가지게 된 '2'라는 이름을 가진 스프라이트에 대해 살펴보자.

 

 

 

역시 보기 힘들기 때문에 스크립트만 가져와서 자세히 설명을 달아보았다.

 

 

01 : 깃발을 클릭했을 때 실행한다.

02 : 최초 프로그램이 시작될 경우에 실행하는 도입부중 하나이기 때문에, '컴퓨터_점수' 변수를 기본값으로 설정 해준다.

03 : 최초 프로그램이 시작될 경우에 실행하는 도입부중 하나이기 때문에, '사용자_점수' 변수를 기본값으로 설정 해준다.

04 ~ 09 : 1.5초 간격으로 룰을 설명하는 메시지를 말하도록 만들었다.

10 : '게임시작하기'를 방송한다.

 

 

 

01 : '계산하러가기'방송을 받았을 때 실행한다.

02 : 0.5초 동안 '가위' 메시지를 말한다.

03 : 0.5초 동안 '바위' 메시지를 말한다.

04 : '내기' 메시지를 방송한다.

05 : 2초 동안 '보' 메시지를 말한다.

06 : '사용자가낸것'과 '컴퓨터가낸것'변수를 비교하는데, 이 변수는 '내기'방송을 받은 손가락 모양의 스프라이트에서 설정되는 값이다.

07 : 비겼다는 메시지를 보여주고 추가 작업은 하지 않고 종료한다.

08 : '사용자가낸것'과 '컴퓨터가낸것'변수를 비교해서 서로 다른 값을 가진 경우 실행한다.

09 : 가위(1), 바위(2), 보(3)의 값을 가지고 ('사용자가낸것' - '컴퓨터가낸것' + 3) % 3 연산의 결과에 따라 누가 이겼는지 알 수 있다.

 

사용자가낸것(a)

컴퓨터가낸것(b)

a - b + 3 (c)

c % 3

승자

가위(1)

바위(2)

2

2

컴퓨터

가위(1)

보(3)

1

1

사용자

바위(2)

가위(1)

4

1

사용자

바위(2)

보(3)

2

2

컴퓨터

보(3)

가위(1)

5

2

컴퓨터

보(3)

바위(2)

4

1

사용자

 

  위의 진리표를 참고하면, 비기는 경우를 제외하고 연산결과가 1이면 사용자의 승, 2이면 컴퓨터의 승인 것을 알 수 있다.

10 : 사용자가 이긴 경우 졌다는 메시지를 보여준다.

11 : '사용자점수'값을 1 증가한다.

12 : '컴퓨터점수'값을 1 감소한다.

13 : 09 연산 결과가 1이 아닌 경우 (컴퓨터가 이긴 경우) 실행한다.

14 : 컴퓨터가 이긴 경우 이겼다는 메시지를 보여준다.

15 : '컴퓨터점수'값을 1 증가한다.

16 : '사용자점수'값을 1 감소한다.

17 : 09라인의 조건문을 닫는다.

18 : 06라인의 조건문을 닫는다.

19 : '게임시작하기'메시지를 방송한다.

 

 

 

01 : '게임종료'방송을 받은 경우 실행한다.

02 : '사용자_점수'와 '컴퓨터_점수'중 하나의 값이 10에 도달한 경우 '게임종료'를 방송하기 때문에 '사용자_점수'와 '컴퓨터_점수'를 비교한다.

03 ~ 07 : '사용자_점수'가 더 높은 경우의 메시지를 말한다.

09 ~ 12 : '컴퓨터_점수'가 더 높은 경우의 메시지를 만한다.

14 : 곧 게임이 시작될거라는 메시지를 말한다.

15 ~ 16 : 새 게임을 시작해야하므로 '컴퓨터_점수'와 '사용자_점수'를 기본 점수인 5점으로 각각 할당한다.

17 : '게임시작하기'를 방송하여 새로운 게임을 시작한다.

 

 

 

3. 마지막으로 손가락 모양을 가진 '컴퓨터'와 '사용자' 스프라이크가 있는데, 두번째 블록의 하나의 값만 다르기 때문에

하나만 가지고 살펴보려고 한다.

 

 

 

 

우선 모든 스프라이트에 대한 전체 스크립트는 위와 같고,

손가락 모양을 가지는 두 개의 스프라이트에 대한 스크립트만 가지고 와서 자세히 살펴보자.

 

 

 

 

 

'게임시작하기' 방송을 받았을 경우 무한히 반복하며 0.5초 간격으로 위에서 보이는 그림과 같이 다음 모양으로 바꿔준다.

 

'내기'방송을 받았을 경우 왼쪽의 무한히 반복하는 스크립트를 잠시 멈추고 현재 손가락 모양을 각자가 낸 모양으로 유지하도록 만들었다.

 

 

 

이렇게 단순한 컴퓨터와 하는 가위바위보 게임을 스크래치를 통해 만들어 보았다.

다음 과제는 무엇일지 걱정반 기대반,

지난주에 처음 스크래치를 가입했을 때보다는 많이 부드러워진 것 같다.

하지만 그렇다고해서 블럭 코딩 방식이 아주 익숙해진건 아니라 조금 더 시간이 필요할 것 같다.

 

 

 

 

728x90

+ Recent posts