mirror of
https://gitea.smigz.com/smiggiddy/odin-codeprojects.git
synced 2024-12-26 14:20:43 -05:00
feat: game logic complete
This commit is contained in:
parent
4902ed48f9
commit
a19e72afaf
2 changed files with 26 additions and 18 deletions
|
@ -17,8 +17,10 @@ export default function GameBoard(props) {
|
|||
);
|
||||
|
||||
useEffect(() => {
|
||||
fetchCards({ setCards });
|
||||
}, []);
|
||||
if (props.gameStarted) {
|
||||
fetchCards({ setCards });
|
||||
}
|
||||
}, [props.gameStarted]);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
|
@ -54,28 +54,34 @@ class GameLogic {
|
|||
}
|
||||
|
||||
updateScore(key) {
|
||||
if (this.score + 1 === this.cards.length) {
|
||||
alert("You won! 12/12 right");
|
||||
this.resetGame();
|
||||
return;
|
||||
}
|
||||
|
||||
// go through game
|
||||
if (!this.checkClick(key)) {
|
||||
this.setScore(this.score + 1);
|
||||
} else {
|
||||
console.log("Game Over");
|
||||
if (this.score + 1 > this.highScore) {
|
||||
this.setHighScore(this.score);
|
||||
}
|
||||
// reset state
|
||||
this.score = 0;
|
||||
this.setScore(this.score);
|
||||
this.setGameStarted(false);
|
||||
this.handleLoss();
|
||||
}
|
||||
}
|
||||
async fetchCards() {
|
||||
const cards = await fetch("http://localhost:8000/cards");
|
||||
const jsonCards = await cards.json();
|
||||
handleLoss() {
|
||||
alert(
|
||||
`Game Over! ${this.score + 1}/${this.cards.length} answers correcet!`,
|
||||
);
|
||||
if (this.score + 1 > this.highScore) {
|
||||
this.setHighScore(this.score);
|
||||
}
|
||||
this.resetGame();
|
||||
}
|
||||
|
||||
let gameCards = await jsonCards.map((c) => {
|
||||
return { ...c, clicked: false, key: crypto.randomUUID() };
|
||||
});
|
||||
|
||||
this.setCards(gameCards);
|
||||
resetGame() {
|
||||
// reset state
|
||||
this.score = 0;
|
||||
this.setScore(this.score);
|
||||
this.setGameStarted(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue