add new mode

This commit is contained in:
Florian Schmid 2023-04-26 22:23:38 +02:00
parent eb5b4ed450
commit b2934f5c9c
2 changed files with 153 additions and 0 deletions

75
newMode.html Normal file
View File

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The CPU Higher Lower Game</title>
<link rel="icon" type="image/x" href="imgs/chip.png">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap-switch-button@1.1.0/css/bootstrap-switch-button.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap-switch-button@1.1.0/dist/bootstrap-switch-button.min.js"></script>
</head>
<body>
<div>
<nav class="navbar navbar-expand-sm bg-light navbar-light">
<div class="container-fluid h4">
<img class="navbar-brand" src="imgs/chip.png" height="50">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#collapsibleNavbar">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" style="text-decoration: underline;" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="game.html">Game</a>
</li>
<li class="nav-item">
<a class="nav-link" href="gst.html">GST</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.html">About</a>
</li>
</ul>
</div>
</div>
</nav>
</div>
<div class="container">
<div class="row">
<div class="col text-center mb-3">
<span class="h2">Guess the release date of the CPU</span>
<br>
<span class="h2">Score: </span><span class="h3" id="score" style="color: violet">0</span>
<span class="h2" style="margin-left: 10px;">Highscore: </span> <span class="h3" id="highScore" style="color: crimson;">0</span>
<br>
<br>
<input type="checkbox" data-toggle="switchbutton" checked data-onlabel="Normal" data-offlabel="Hard Mode" data-onstyle="primary" data-offstyle="danger">
</div>
</div>
<div class="row align-items-center">
<div class="col-md-6 offset-md-3 border text-center p-2" id="mainCol">
<span class="h2" id="cpuName"></span>
<br>
<button class="btn btn-lg m-1 mt-2" id="btnDate1" style="background-color: #3CC3FA;"></button>
<br>
<button class="btn btn-lg m-1" id="btnDate2" style="background-color: #3CC3FA;"></button>
<br>
<button class="btn btn-lg m-1" id="btnDate3" style="background-color: #3CC3FA;"></button>
<br>
<button class="btn btn-lg m-1" id="btnDate4" style="background-color: #3CC3FA;"></button>
<br>
</div>
</div>
</div>
<script type="module">
import { main } from "./js/newMode.js"
main()
</script>
</body>
</html>

78
src/newMode.ts Normal file
View File

@ -0,0 +1,78 @@
import { CpuRepository } from "./cpuRepository.js";
import { Stats } from "./statistics.js";
class UI {
private model: ViewModel;
private buttons: HTMLElement[];
constructor() {
this.model = new ViewModel();
let button1 = document.getElementById("btnDate1");
let button2 = document.getElementById("btnDate2");
let button3 = document.getElementById("btnDate3");
let button4 = document.getElementById("btnDate4");
this.buttons = [button1, button2, button3, button4];
}
async init() {
await this.model.init();
this.model.Dates.forEach((value, index) =>
(this.buttons[index].innerText = value)
);
}
}
class ViewModel {
private repo: CpuRepository;
private stats: Stats;
private hardmode: boolean;
constructor() {
this.stats = new Stats("highScore_date");
this.repo = new CpuRepository();
this.hardmode = false;
}
async init() {
await this.repo.init();
}
nextRound() {
this.repo.reset();
}
incrementScore() {
this.stats.incrementScore();
}
resetScore() {
this.stats.resetScore();
}
get currentCpu() {
return this.repo.currentCpu;
}
get score(): number {
return this.stats.score;
}
get highScore(): number {
return this.stats.highScore;
}
get Dates(): string[] {
let array;
return array = ["eins", "zwei", "drei", "vier"];
}
}
export async function main() {
const ui = new UI();
await ui.init();
}