クラスのデリゲート |
デリゲート |
let notifier = null;
let used = 0;
const b1 = document.getElementById("ok");
const b2 = document.getElementById("ng");
const b3 = document.getElementById("reset");
b1.addEventListener("click", () =>
{
if(used == 1) return;
used = 1;
notifier.sendNotification(0);
});
b2.addEventListener("click", () =>
{
if(used == 1) return;
used = 1;
notifier.sendNotification(1);
});
b3.addEventListener("click", () =>
{
const generator = new judgeProblem();
generator.prepareProblem();
notifier = new Notifier(generator);
const result = document.getElementById("result");
result.innerText = "";
used = 0;
});
class judgeProblem
{
#answer = 0;//[0]◯ [1]✕
#num1 = 0;
#num2 = 0;
judge(answer)
{
this.#judgeAnswer(answer);
}
#judgeAnswer(answer)
{
const obj = document.getElementById('lang');
let tmp ="";
if(this.#answer == answer)
{
tmp = obj.value == 0 ? "正解" : "CORRECT";
}
else
{
tmp = obj.value == 0 ? "不正解" : "NOT CORRECT";
}
const result = document.getElementById("result");
result.innerText = tmp;
}
prepareProblem()
{
this.#num1 = this.#problemNum();
this.#num2 = this.#problemNum();
this.#prepareAnswer();
}
#problemNum()
{
const start = 1;
const end = 9;
return this.#randomNum(start, end);
}
#prepareAnswer()
{
const start = 0;
const end = 1;
this.#answer = this.#randomNum(start, end);
let result = this.#num1 + this.#num2;
if(this.#answer == 1)
{
result++;
}
const problem = document.getElementById("problem");
problem.innerText = this.#num1 + "+" + this.#num2 + "=" + result;
}
#randomNum(start, end)
{
return Math.floor(Math.random() * (end - start + 1)) + start;
}
}
class Notifier
{
constructor(messageGenerator)
{
this.messageGenerator = messageGenerator;
}
sendNotification(answer)
{
this.messageGenerator.judge(answer);
}
}
| ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームペーよびアプリ利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |