while문 으로 잠깨기 산수 퀴즈 3개 – javascript

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 가 보기도 좋고 쉬운거 같다.

 

의견을 남겨주세용