코드 안의 회색 줄은 원문 영어 주석이고, 파란 줄은 그 영어 주석의 번역이며, 연분홍 줄은 코드가 하는 일의 설명이다.
| 번호 | 이름 | 종류 | CL 코드 원문, 번역, 설명 |
| 1 | prompt | 메모 | r = randomGenerator(btn1.pressCount)
▶ 변수 r은 버튼 btn1이 눌린 횟수를 씨앗으로 준 난수 발생기로 한다.
randomGenerator(…)는 난수 발생기를 만드는 함수이며, 씨앗이 바뀔 때 숫자가 다시 무작위로 정해진다. pressCount는 행동 버튼이 눌린 횟수를 알려 준다.
a = r.int(-20,20)
▶ 변수 a는 난수 발생기 r이 만든 -20 이상 20 이하의 무작위 정수(r.int(-20,20))로 한다.
r.int(최소, 최대)는 난수 발생기의 함수로 round(최소)와 round(최대) 사이(양 끝 포함)의 정수를 무작위로 만든다.
b = r.int(-20,20)
▶ 변수 b는 같은 방식으로 만든 -20 이상 20 이하의 무작위 정수(r.int(-20,20))로 한다.
#beautiful prompt, taking into account the - in b if it's negative
▷ 멋진 문제 글을 만든다. b가 음수이면 부호 -를 고려한다.
prompt =
when b >= 0 `${a}+${b}`
otherwise `${a}${b}`
▶ 변수 prompt는 b가 0 이상이면 latex 글자 `${a}+${b}`, 그렇지 않으면 `${a}${b}`로 한다. b가 음수이면 b 자체에 부호 -가 있으므로 + 없이 이어 붙인다. when은 조건을 차례로 확인해 처음 맞는 값을 쓴다.
|
| 2 | 레이블 없는 수식 답변 | 수식 답변 | disableEvaluation: true
▶ 계산 표시 끄기(disableEvaluation)는 true로 한다.
disableEvaluation이 참이면 학생이 입력한 식의 계산 값이 학생 쪽에 표시되지 않는다.
isASimpleNumber = patterns.number.matches(this.latex)
▶ 변수 isASimpleNumber는 이 입력의 latex가 숫자 꼴인지(patterns.number.matches(this.latex))로 한다.
patterns는 식을 조각으로 나누어 살펴보는 기능이고 아직 개발 중인 베타 기능이다.
correct: isASimpleNumber and this.numericValue = numericValue(`${prompt.script.a}+${prompt.script.b}`)
▶ 수식 답변의 정답 조건(correct)은 isASimpleNumber가 참이고, 이 입력의 계산한 값이 prompt 구성요소의 변수 a와 b의 합(numericValue(`${prompt.script.a}+${prompt.script.b}`))과 같을 때 참으로 한다.
=는 값이 같은지 비교하는 것이고, and는 둘 다 참이어야 참이다. prompt.script.a처럼 구성요소.script.변수는 다른 구성요소의 스크립트에서 정의한 변수의 값을 가져오는 표기이다. numericValue(…)는 latex 글자를 숫자로 계산하는 함수이고, 계산하지 못하면 NaN을 돌려준다.
submitDisabled: not(isASimpleNumber)
▶ 제출 버튼의 비활성화 조건(submitDisabled)은 not(isASimpleNumber)로 한다.
submitDisabled가 거짓이어도 입력이 비어 있으면 버튼은 비활성화된다. not(…)은 참/거짓을 뒤집는 함수이다.
resetOnChange: "${btn1.pressCount}"
▶ 수식 답변의 변경 시 자동 재설정(resetOnChange)은 "${btn1.pressCount}"(버튼이 눌린 횟수)로 한다.
resetOnChange는 글자 값이 바뀌면 구성요소를 재설정한다. pressCount는 행동 버튼이 눌린 횟수를 알려 준다. ${ }는 글자 안에 변수의 값을 끼워 넣는 표기이다.
|