103 lines
3.1 KiB
JavaScript
103 lines
3.1 KiB
JavaScript
var cpuList;
|
|
var currentCpu;
|
|
var score;
|
|
var highScore;
|
|
export async function main() {
|
|
var _a;
|
|
// init cpu list
|
|
await (fetch('./data.json')
|
|
.then((response) => response.json())
|
|
.then((json) => cpuList = json));
|
|
highScore = (_a = localStorage.getItem("highScore_socket")) !== null && _a !== void 0 ? _a : 0;
|
|
score = 0;
|
|
updateScores();
|
|
nextRound();
|
|
}
|
|
function nextRound() {
|
|
currentCpu = getRandomCpu();
|
|
document.getElementById("cpuName").innerText = currentCpu.name;
|
|
document.getElementById("mainCol").style.backgroundColor = "";
|
|
}
|
|
function getRandomCpu() {
|
|
let randomIndex;
|
|
do {
|
|
randomIndex = getRandomInt(0, cpuList.length);
|
|
} while (typeof (cpuList[randomIndex]["type"]) == null || cpuList[randomIndex]["type"] == "null" || cpuList[randomIndex]["type"] == null);
|
|
return {
|
|
name: cpuList[randomIndex]["name"].split('@')[0],
|
|
type: cpuList[randomIndex]["type"]
|
|
};
|
|
}
|
|
function delay(time) {
|
|
return new Promise(resolve => setTimeout(resolve, time));
|
|
}
|
|
export async function btnClick(typ) {
|
|
// 0 -> Desktop
|
|
// 1 -> Laptop
|
|
// 2 -> Mobile/Embedded
|
|
// 3 -> Server
|
|
let btnDesktop = document.getElementById("btnDesktop");
|
|
let btnLaptop = document.getElementById("btnLaptop");
|
|
let btnMobile = document.getElementById("btnMobile");
|
|
let btnServer = document.getElementById("btnServer");
|
|
let btns = [btnDesktop, btnLaptop, btnMobile, btnServer];
|
|
btns.forEach((el) => {
|
|
el.setAttribute("disabled", "");
|
|
});
|
|
switch (typ) {
|
|
case 0:
|
|
btnDesktop.style.backgroundColor = "#FF4444";
|
|
break;
|
|
case 1:
|
|
btnLaptop.style.backgroundColor = "#FF4444";
|
|
break;
|
|
case 2:
|
|
btnMobile.style.backgroundColor = "#FF4444";
|
|
break;
|
|
case 3:
|
|
btnServer.style.backgroundColor = "#FF4444";
|
|
break;
|
|
}
|
|
if (currentCpu.type.includes("Desktop")) {
|
|
btnDesktop.style.backgroundColor = "lightgreen";
|
|
}
|
|
if (currentCpu.type.includes("Laptop")) {
|
|
btnLaptop.style.backgroundColor = "lightgreen";
|
|
}
|
|
if (currentCpu.type.includes("Mobile/Embedded")) {
|
|
btnMobile.style.backgroundColor = "lightgreen";
|
|
}
|
|
if (currentCpu.type.includes("Server")) {
|
|
btnServer.style.backgroundColor = "lightgreen";
|
|
}
|
|
// Score
|
|
if (btns[typ].style.backgroundColor == "lightgreen") {
|
|
score++;
|
|
}
|
|
else {
|
|
score = 0;
|
|
}
|
|
// Highscore
|
|
if (score > highScore) {
|
|
highScore = score;
|
|
localStorage.setItem("highScore_socket", highScore);
|
|
}
|
|
updateScores();
|
|
await delay(1000);
|
|
btns.forEach((el) => {
|
|
el.style.backgroundColor = "#3CC3FA";
|
|
el.removeAttribute("disabled");
|
|
});
|
|
nextRound();
|
|
}
|
|
function updateScores() {
|
|
document.getElementById("score").innerText = score;
|
|
document.getElementById("highScore").innerText = highScore;
|
|
}
|
|
function getRandomInt(min, max) {
|
|
min = Math.ceil(min);
|
|
max = Math.floor(max);
|
|
return Math.floor(Math.random() * (max - min) + min); // The maximum is exclusive and the minimum is inclusive
|
|
}
|
|
main();
|