while 문공부하다가 알람 어플중에 가끔 산수문제로 잠깨는지 확인하는거 생각나서 자바스크립트 while 문으로 만들어봄.
20 이하의 양의정수를 임의로 만들어 퀴즈
var count = 0;
var a = Math.floor(Math.random()*20);
var b = Math.floor(Math.random()*20);
while(true){
var ans = prompt(a+"+"+b+"의 답을 입력해 주세요");
if(ans != a+b){
document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림");
continue;
}
ans = prompt(a+"x"+b+"의 답을 입력해 주세요");
if(ans != a*b){
document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림");
continue;
}
ans = prompt(a+"-"+b+"의 답을 입력해 주세요");
if(ans != a-b){
document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림");
continue;
}
break;
}
document.write("축하합니다. 통과~!");
근디 똑같은 애들이 중복되서 너무 길다.
배열을 이용해서 아래와 같이 만들면 짧아지는데, 좋은 코드같진 않다.
var count = 0;
var a = Math.floor(Math.random()*20);
var b = Math.floor(Math.random()*20);
var cal_num = [a+b,a*b,a-b];
var cal_str = ['+','*','-'];
var i = 0;
while(true){
var ans = prompt(a+ cal_str[i] +b+"의 답을 입력해 주세요");
if(ans != cal_num[i]){
i = 0;
document.write('답이 틀렸어용. 다시 도전하세요.'+(++count)+"번 틀림<br>");
continue;
}
i++;
if(i==3){
break;
}
}
document.write("축하합니다. 통과~!");
string 으로 된 +,- 같은 연산 기호를 연산자로 변환할 수 있는 방법을 알면 더 좋을거 같은데, 물어봐야겠다.
아무래도 while 보단 for 가 보기도 좋고 쉬운거 같다.