지난 포스트 산수 문제 풀기 게임1(더하기 문제)에 이어 게임을 확장해 보도록 하겠습니다.
지난 포스트에서는 아래와 같은 테스트를 해보고 산수 문제를 푸는 게임을 만들어 보았습니다.
Test1. 문자열 출력하고 기다리기
Test2. 변수를 사용하여 문제 출제하기
Test3. 난수(랜덤)를 사용하여 문제 출제하기
Test4. 출제된 더하기 문제 정답/오답 판단하기
Test5. 점수 계산하기
지난 포스트에 이어 ‘더하기’ 문제 외에도 다른 연산에 대한 문제도 랜덤하게 출제할 수 있는 스크립트를 만들고 테스트 해보겠습니다.
Test 6. 리스트를 이용한 연산자 판단하기
리스트를 이용하여 연산자를 판단하는 로직을 코딩하고 테스트 해보겠습니다.
우선 연산자를 판단하기 위하여 ‘V_method’라는 변수와 ‘L_method’라는 리스트를 하나 만듭니다.
그리고 ‘V_method’ 변수와 ‘L_method’ 리스트를 이용하여 랜덤으로 연산자를 선택하고 ‘더하기’, ‘빼기’, ‘곱하기’, ‘나누기’를 판단하도록 코딩합니다.
스크립트는 아래와 같습니다.
[스크립트 설명]
ㅇ ‘스페이스’ 키를 눌렸을 때 스크립트가 시작됩니다.
ㅇ L_Method 리스트를 초기화 합니다.
ㅇ ‘더하기’, ‘빼기’, ‘곱하기’, ‘나누기’라는 문자열을 ‘L_Method’ 리스트에 추가합니다.
ㅇ 10번의 테스트를 위하여 반복 블록인 ‘ㅇ번 반복하기’를 이용합니다.
– ‘L_Method’ 리스트에서 1~4의 숫자를 랜덤으로 선택하여 x번째 항목을 추출하고 ‘V_Method’ 변수를 해당 항목으로 정합니다.
– ‘V_Method’ 변수가 ‘더하기’ 인지, ‘빼기’ 인지, ‘곱하기’ 인지, ‘나누기’ 인지를 조건문으로 판단하고 연산자를 출력하게 합니다.
결과 창에서 스크립트가 10번 반복되며 랜덤으로 연산자가 출력되는 것을 확인 할 수 있습니다.
현재 선택된 연산자가 출력되는 말풍선과 같은지는 결과창의 ‘V_method’ 변수를 확인하면 되겠습니다.
Test 7. ‘더하기’ 산수 문제에 다른 연산자 문제 추가하기 (Test5. + Test6.)
Test5. 스크립트에서 다른 연산자 문제도 추가되도록 코딩해 보겠습니다.
우선 지난 스크립트는 아래와 같습니다.
[스크립트 설명]
삭제된 블록(회색), 추가된 블록(파란색), 기존 블록(검정색)
ㅇ 스페이스키를 눌렀을 때 스크립트가 시작됩니다.
ㅇ Score라는 이름의 변수를 만들고 Score 변수를 0으로 초기화 합니다.
ㅇ 반복문을 사용하여 스크립트를 10번 반복하게 합니다.
ㅇ 1~10 사이의 난수를 선택하여 X와 Y변수를 선택된 난수로 정합니다.
ㅇ 문자열 결합하기 블록을 이용하여 변수와 출력을 하고자 하는 문자열을 적절하게 결합합니다.
ㅇ 조건문 블록을 이용하여 정답 혹은 오답 여부를 판단합니다.
– 연산 블록을 사용하여 ‘(X + Y) = 대답’이 맞는지를 비교합니다.
– (True : 참<정답>)일 경우
* ‘정답이에요’를 말하고
* 1초 기다립니다.
* Score 변수를 1만큼 바꿉니다.
– (False : 거짓<오답>)일 경우
* ‘틀렸어요’를 말하고
* 1초 기다립니다.
위 스크립트에서 Test6.에서 테스트한 스크립트를 활용하여 다른 연산자까지 포함시켜 보겠습니다.
스크립트는 아래와 같습니다.
[스크립트 설명]
삭제된 블록(회색), 추가된 블록(파란색), 기존 블록(검정색)
ㅇ ‘method’라는 리스트와 ‘V_method’라는 변수를 생성합니다.
ㅇ 스페이스키를 눌렀을 때 스크립트가 시작됩니다.
ㅇ ‘method’ 리스트의 항목을 모두 삭제 합니다.
ㅇ ‘더하기’, ‘빼기’, ‘곱하기’, ‘나누기’ 문자열을 ‘method’ 리스트에 추가합니다.
ㅇ Score라는 이름의 변수를 만들고 Score 변수를 0으로 초기화 합니다.
ㅇ 반복문을 사용하여 스크립트를 10번 반복하게 합니다.
ㅇ 1~10 사이의 난수를 선택하여 X와 Y변수를 선택된 난수로 정합니다.
ㅇ ‘V_method’의 변수에 ‘method’ 리스트에서 랜덤으로 선택된 연산자를 할당합니다.
ㅇ 문자열 결합하기 블록을 이용하여 변수와 출력을 하고자 하는 문자열을 적절하게 결합합니다.
ㅇ 묻고 기다리기 블록에서 Test5. 의 스크립트와 동일하지만 연산자 부분의 불록만 ‘V_method’ 변수로 대체합니다.
ㅇ 조건문 블록을 이용하여 정답 혹은 오답 여부를 판단합니다.
ㅇ 조건문을 4개 생성하고 선택된 연산자 ‘V_method’가 어떤 연산자인지 각각 조건문에서 판단합니다.
– 연산 블록을 사용하여 ‘(X + Y) = 대답’이 맞는지를 비교합니다.
– 연산 블록을 사용하여 각 조건의 연산자에 맞는 연산을 하고 ‘대답’과 맞는지 비교합니다.
– (아래 정답여부 판단 및 점수 계산은 4개의 조건문(연산자별)에 동일하게 사용됩니다.)
– (True : 참<정답>)일 경우
* ‘정답이에요’를 말하고
* 1초 기다립니다.
* Score 변수를 1만큼 바꿉니다.
– (False : 거짓<오답>)일 경우
* ‘틀렸어요’를 말하고
* 1초 기다립니다.
** 단, 나누기 연산의 경우 연산 결과가 소수점일 경우 비정상적으로 동작하기 때문에 ‘바닥 함수’를 이용하여 내림 처리 합니다.
스크립트 수행 결과는 결과창에서 확인 가능합니다.
10번의 산수 문제가 출제되고 랜덤으로 ‘더하기’, ‘빼기’, ‘곱하기’, ‘나누기’ 문제를 풀고 점수 계산까지 할 수 있게 됩니다.
Test 8. 함수(추가 블록)를 이용하여 간결한 코드 만들기
이번 Test는 Test7에서 완성한 산수 문제 풀기 스크립트를 함수(추가 블록)을 이용하여 스크립트를 좀 더 간결하게 만들어 보겠습니다.
스크립트는 아래와 같습니다.
[Main 스크립트]
[M_test 함수(추가 블록) 스크립트]
[스크립트 설명]
위 스크립트는 ‘M_test’ 라는 함수(추가 블록)을 만들고 ‘더하기’, ‘빼기’, ‘곱하기’, ‘나누기’ 판단하는 스크립트를 ‘M_test’ 라는 함수에 이동하였습니다.
Main 스크립트에서는 M_test(V_method, x, y)를 호출하고 M_test 함수가 수행되게 됩니다.
그리고 M_test 함수는 전달 받은 파라메터(V_method, x, y)를 이용하여 연산자를 판단하고 계산하고 점수 계산을 하는 역할을 수행합니다.
이렇게 함수(추가 블록)을 사용하면 Main 스크립트가 짧아지고 간결하게 됩니다.
함수를 적절하게 사용하면 아래와 같은 효과를 얻을 수 있습니다.
ㅇ Main 스크립트가 간결해 집니다.
ㅇ 간결해진 Main 함수에 가독성이 좋아 집니다.
– 함수 명을 이해 하기 쉽도록 Naming에 신경써야 합니다.
ㅇ 자주 사용되는 스크립트를 함수화 하면 재사용이 가능합니다.
– Main 스크립트에서 동일한 역할을 하는 스크립트들을 함수를 사용하지 않을 경우 코드가 너무 길어지고 반복적인 코드가 자주 나와 가독성이 떨어지고 비효율 적일 수 있습니다.
– 동일한 역할의 스크립트를 함수화 하면 필요 시, 함수를 호출하여 재사용 가능합니다.
나가 뒤져 시발 존나 화질 안 좋네 시발년아 이럴거면 그냥 이딴거 하지마
노윤수님 말이 너무 심한것 같습니다 그래도 열심히 적었는데 왜 그렇게 욕을 심하게 하시나요? 초딩이세요 ,,,,