feat: game logic complete

This commit is contained in:
Mike 2024-07-21 23:29:25 -04:00
parent 4902ed48f9
commit a19e72afaf
2 changed files with 26 additions and 18 deletions

View file

@ -17,8 +17,10 @@ export default function GameBoard(props) {
); );
useEffect(() => { useEffect(() => {
if (props.gameStarted) {
fetchCards({ setCards }); fetchCards({ setCards });
}, []); }
}, [props.gameStarted]);
return ( return (
<> <>

View file

@ -54,29 +54,35 @@ class GameLogic {
} }
updateScore(key) { 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)) { if (!this.checkClick(key)) {
this.setScore(this.score + 1); this.setScore(this.score + 1);
} else { } else {
console.log("Game Over"); this.handleLoss();
}
}
handleLoss() {
alert(
`Game Over! ${this.score + 1}/${this.cards.length} answers correcet!`,
);
if (this.score + 1 > this.highScore) { if (this.score + 1 > this.highScore) {
this.setHighScore(this.score); this.setHighScore(this.score);
} }
this.resetGame();
}
resetGame() {
// reset state // reset state
this.score = 0; this.score = 0;
this.setScore(this.score); this.setScore(this.score);
this.setGameStarted(false); this.setGameStarted(false);
} }
}
async fetchCards() {
const cards = await fetch("http://localhost:8000/cards");
const jsonCards = await cards.json();
let gameCards = await jsonCards.map((c) => {
return { ...c, clicked: false, key: crypto.randomUUID() };
});
this.setCards(gameCards);
}
} }
export { GameLogic }; export { GameLogic };