코스 F - 조건/선택 실행 2 - 가위 바위 보 게임 조건/선택 실행

이 두 번째 레슨에서는 보다 복잡한 조건/선택 실행 구조를 다룹니다.

  • Computer-science
  • Conditionals
Print lesson
  • 대상 연령 10+
  • 65+ 예상 시간(분)
  • Javascript Blocks

소개

첫 번째 레슨에서는 '날씨 예보 조건/선택 실행' 에 대한 내용으로, '만약(if)...이면(then)...아니면(else)' 논리 블록의 기본적인 사용법에 대해서 중심이 맞추어져 있었습니다. 이번 레슨을 이해하기 어렵거나, 학생들이 어렵다고 생각되면, 이전 레슨을 다시 한 번 해보세요.

이 두 번째 레슨에서는 보다 복잡한 조건/선택 실행 구조를 다룹니다. 그래서 2 가지 이상의 출력 결과를 만들 수 있는 방법을 알아보게 됩니다. 마이크로비트를 이용한 가위 바위 보 게임을 하면서 그러한 과정을 수행할 것입니다. 그리고 마지막에서는 점수를 함께 기록하는 게임을 만들어 낼 것입니다!

마이크로비트 코스 레슨들은 Code.org CS 기초 과정에서 배운 지식들을 적용하는 내용들로 맞춰져 있습니다. 이 코스 레슨들을 시작하기 전에, 학생들이 모든 CS 기초 지식들을 먼저 완료하기를 권장합니다. 학생들은 Code.org CS 기초 과정들을 통해, 조건/선택 실행 구조에 대해서 잘 알고 있어야 합니다.

교사용 가이드

Open

활동

준비물

  • BBC 마이크로비트 1대
  • USB 케이블 1개
  • AAA 배터리 팩 (옵션)
  • AAA 배터리 2개 (옵션)

수업 자료

if (true) {

} else if (false) {

} else {

}

만약(if)

조건식의 참(true), 거짓(false) 결과값(불 값)에 따라, 선택적으로 코드를 실행합니다.


let item = 0
item = 0
            

값 저장

등호 기호를 사용하면, 변수에 어떤 수나 문자열을 저장할 수 있습니다.

let item = Math.random(5)

랜덤

0 부터 어떤 범위까지의 정수 값을 랜덤으로 리턴합니다.

basic.showIcon(IconNames.Heart)

아이콘 출력

선택한 아이콘을 LED 스크린 화면에 출력합니다.

input.onGesture(Gesture.Shake, () => {})

흔들면 실행

이벤트 핸들러 (어떤 버튼이 눌린 것과 같은 이벤트가 발생했을 때, 실행되는 작은 프로그램)를 실행합니다. 이벤트 핸들러는 어떤 움직임(예를 들어 마이크로비트는 흔드는 것과 같은 경우)이 발생했을 때 실행됩니다.

4 단계

따라해보기

마이크로비트를 위한 단계별 설명이나 온라인 코드를 제공할 예정입니다. https://makecode.microbit.org 로 접속해보세요.


let RandomNumber = 0
input.onGesture(Gesture.Shake, () => {
    RandomNumber = Math.random(3)
    if (RandomNumber == 0) {
        basic.showIcon(IconNames.SmallSquare)
    } else if (RandomNumber == 1) {
        basic.showIcon(IconNames.Square)
    } else {
        basic.showIcon(IconNames.Scissors)
    }
})
input.onButtonPressed(Button.A, () => {

})
input.onButtonPressed(Button.B, () => {

})
        

마이크로비트를 흔들면 아이콘이 출력됩니다.: 가위, 바위, 보. 시뮬레이터에서 마이크로비트를 흔들거나, 흔들기 버튼을 누르면 이벤트가 실행됩니다. 흔들면, 그 후에 아이콘이 나타날 것입니다.

흔들면, 마이크로비트에서 0, 1, 2 중 하나를 랜덤으로 선택하도록 합니다.

랜덤으로 선택된 값을 이용해서 결정할 것입니다.

  • if (RandomNumber = 0) >> 바위 출력
  • if (RandomNumber = 1) >> 보 출력
  • if (RandomNumber = 2) >> 가위 출력

안내: 코드의 아래쪽과 양쪽에 있는 사용되지 않은 블록들은 도전과제에서 사용될 것입니다.

완성된 코드는 여기 에서 살펴볼 수 있습니다.

도전과제

도전과제 1

마이크로비트에게 이긴 횟수를 기록할 수 있을까요?

힌트: 버튼 A 를 눌렀을 때의 이벤트 핸들러에 블록들을 넣으세요. 이긴 점수를 저장하기 위해서 시작 하면 실행 블록에서 변수에 저장된 값을 초기화(생성) 시켜야 합니다.

View code

let Score = 0
let RandomNumber = 0
input.onGesture(Gesture.Shake, () => {
    RandomNumber = Math.random(3)
    if (RandomNumber == 0) {
        basic.showIcon(IconNames.SmallSquare)
    } else if (RandomNumber == 1) {
        basic.showIcon(IconNames.Square)
    } else {
        basic.showIcon(IconNames.Scissors)
    }
})
input.onButtonPressed(Button.A, () => {
    Score += 1
})
input.onButtonPressed(Button.B, () => {

})
Score = 0
          

완성된 코드는 여기 에서 살펴볼 수 있습니다.

도전과제 2

지면 어떻게 되나요? 졌을 때, 점수를 뺄 수 있을까요?

힌트: 버튼 B 를 눌렀을 때 처리하는 이벤트 핸들러 안에 블록들을 넣으세요.

View code

let Score = 0
let RandomNumber = 0
input.onGesture(Gesture.Shake, () => {
    RandomNumber = Math.random(3)
    if (RandomNumber == 0) {
        basic.showIcon(IconNames.SmallSquare)
    } else if (RandomNumber == 1) {
        basic.showIcon(IconNames.Square)
    } else {
        basic.showIcon(IconNames.Scissors)
    }
})
input.onButtonPressed(Button.A, () => {
    Score += 1
})
input.onButtonPressed(Button.B, () => {
    Score += -1
})
Score = 0
          

완성된 코드는 여기 에서 살펴볼 수 있습니다.

도전과제 3

어떻게 점수를 볼 수 있을까요?

힌트: 버튼 A+B 를 눌렀을 때 처리하는 이벤트 핸들러 안에 블록들을 넣으세요.

View code

let Score = 0
let RandomNumber = 0
input.onGesture(Gesture.Shake, () => {
    RandomNumber = Math.random(3)
    if (RandomNumber == 0) {
        basic.showIcon(IconNames.SmallSquare)
    } else if (RandomNumber == 1) {
        basic.showIcon(IconNames.Square)
    } else {
        basic.showIcon(IconNames.Scissors)
    }
})
input.onButtonPressed(Button.A, () => {
    Score += 1
})
input.onButtonPressed(Button.B, () => {
    Score += -1
})
input.onButtonPressed(Button.AB, () => {
    basic.showNumber(Score)
})
Score = 0
          

완성된 코드는 여기 에서 살펴볼 수 있습니다.

자기주도 연습

마이크로비트를 사용해 주사위와 보드 게임을 만들어보세요. 이 주사위로 나오는 수와 범위를 바꿀 수 있습니다. 마이크로비트 주사위를 한 번 돌리면 어떻게 될까요?

예시 - 주사위를 한 번 돌렸을 때, 보물을 발견한다.

힌트: RandomNumber 의 범위를 늘리고, 더 긴 만약(if) 블록을 만들어야 합니다.

퀴즈

다음과 같은 질문들을 사용해, 학습활동과 도전과제들에 대해서 다시 기억해 내도록 할 수 있습니다.

질문 1

활동에서 사용하는 코드에서, 0 부터 2 까지 랜덤으로 뽑는 코드와 그렇게 뽑힌 값을 'RandomNumber' 변수에 저장하는 코드를 만들어보세요.

Show answer

참고: 랜덤으로 수를 뽑아 RandomNumber 변수에 저장하는 부분에 하이라이트 해두었습니다. 두 번째 코드 부분에서는 0-3 범위의 수를 랜덤으로 뽑습니다.

질문 2

'RandomNumber' 의 값이 0 이면, 어떤 아이콘이 나타나게 될까요?

Show answer

바위 모양이 나타날 것입니다.

질문 3

'RandomNumber' 의 값이 0 이 아니면, 어떤 아이콘이 나타나야 할까요?

Show answer

가위 또는 보를 나타내야 합니다.

질문 4

'RandomNumber' 의 값이 0 이나 1 이 아니면, 어떤 아이콘이 나타나게 될까요?

Show answer

가위를 나타내야 합니다.

더 알아보기