Kurs JavaScript: gra w zgadywanie liczby na klasach ES6
zweryfikowano 7 września 2026 · 4 min
To ćwiczenie ma pomóc Ci zastosować w praktyce podstawowe pojęcia JavaScriptu poznane w samouczku. Stworzysz grę w zgadywanie liczb, która wykorzystuje zmienne, warunki, funkcje, obiekty i klasy (ES6), manipulację stroną HTML, zdarzenia i ich obsługę, a także moduły oraz import/eksport (ES6).
To ćwiczenie jest idealne dla początkujących w JavaScripcie, którzy chcą przećwiczyć wiedzę i lepiej zrozumieć podstawowe elementy języka. Śmiało wracaj do samouczka, jeśli masz trudności: odpowiedzi tam są, z wyjątkiem klas, omówionych w artykule o klasach w JavaScripcie.
Pliki do utworzenia
- game.js (importowany moduł zawierający klasę gry)
- script.js (plik główny, który importuje moduł game.js)
- index.html (zawierający poniższy kod)
<!DOCTYPE html>
<html>
<head>
<title>Jeu de devinette de nombres</title>
<style>
body {
background-color: #e0e0e0;
}
h1 {
font-size: 24px;
text-align: center;
color: #333;
}
#form {
display: flex;
justify-content: center;
}
#number {
width: 50px;
margin-right: 10px;
font-size: 16px;
text-align: center;
}
button {
font-size: 16px;
padding: 10px;
border: none;
background-color: #333;
color: #fff;
cursor: pointer;
}
</style>
</head>
<body>
<h1>Jeu de devinette de nombres</h1>
<p id="message"></p>
<form id="form">
<input type="number" id="number">
<button type="submit">Deviner</button>
</form>
</body>
</html>
Polecenia
-
W pliku game.js zadeklaruj klasę
Gamez następującymi właściwościami i metodami:- Właściwość
randomNumberzawierającą liczbę losową z zakresu od 1 do 100 (użyj Math.random() i Math.floor()) - Właściwość
attemptszawierającą liczbę prób użytkownika - Właściwość
foundwskazującą, czy liczba została odgadnięta (wartość logiczna) - Metodę
checkNumber, która przyjmuje liczbę jako argument i sprawdza, czy jest poprawna, porównując wartość wpisaną przez użytkownika z liczbą losową. Jeśli liczba jest poprawna, ustaw właściwośćfoundna prawdę. Jeśli jest błędna, wyświetl komunikat mówiący, czy liczba jest większa, czy mniejsza. - Metodę
resetGame, która przywraca właściwościomattemptsifoundwartości początkowe i losuje nową liczbę.
- Właściwość
-
W pliku script.js zaimportuj moduł game.js instrukcją
import. Utwórz instancję klasyGamei zapisz ją w zmiennej. -
W pliku script.js napisz funkcję obsługującą zdarzenie wysłania formularza. Ta funkcja ma:
- Zwiększyć licznik prób w instancji klasy
Game - Odczytać wartość liczby wpisanej przez użytkownika
- Użyć metody
checkNumberinstancji klasyGame, żeby sprawdzić, czy liczba jest poprawna - Jeśli odpowiedź jest poprawna, zwrócić komunikat z gratulacjami, a w przeciwnym razie wysłać komunikat z checkNumber.
- Zwiększyć licznik prób w instancji klasy
-
Podepnij zdarzenie wysłania formularza pod utworzoną wcześniej funkcję.
-
Dodaj obsługę zdarzenia dla kliknięcia przycisku „Zagraj ponownie”, który znajduje się w komunikacie z gratulacjami. Ta funkcja ma użyć metody
resetGameinstancji klasyGame, żeby zresetować grę oraz wyczyścić komunikat z gratulacjami i formularz wpisywania liczby. -
Podepnij właściwy plik JavaScript do swojej strony index.html
-
Przetestuj grę, otwierając plik index.html w przeglądarce. Upewnij się, że działa poprawnie i spełnia polecenia.
Rozwiązanie
Oto jedno z możliwych rozwiązań, przetestowane w przeglądarce. Klasa mieszka w game.js:
export default class Game {
constructor() {
this.resetGame();
}
resetGame() {
this.randomNumber = Math.floor(Math.random() * 100) + 1;
this.attempts = 0;
this.found = false;
}
checkNumber(number) {
if (number === this.randomNumber) {
this.found = true;
return 'Bravo, vous avez trouvé !';
}
return number < this.randomNumber ? 'Le nombre est plus grand.' : 'Le nombre est plus petit.';
}
}script.js importuje klasę, nasłuchuje formularza i wyświetla komunikat:
import Game from './game.js';
const game = new Game();
const form = document.getElementById('form');
const input = document.getElementById('number');
const message = document.getElementById('message');
function replay() {
game.resetGame();
message.textContent = '';
form.hidden = false;
input.focus();
}
function handleSubmit(event) {
event.preventDefault();
game.attempts += 1;
const result = game.checkNumber(Number(input.value));
input.value = '';
if (game.found) {
message.innerHTML = `Bravo, trouvé en ${game.attempts} tentative(s) ! <button type="button" id="replay">Jouer à nouveau</button>`;
form.hidden = true;
document.getElementById('replay').addEventListener('click', replay);
} else {
message.textContent = result;
}
}
form.addEventListener('submit', handleSubmit);Pozostaje podpiąć skrypt do strony, tuż przed </body>. Atrybut type="module" jest niezbędny, aby instrukcja import działała, a moduły nie ładują się z pliku otwartego bezpośrednio (file://): udostępnij katalog małym lokalnym serwerem, na przykład npx serve albo rozszerzeniem Live Server w VS Code.
<script type="module" src="script.js"></script>Ten sam język napędza znacznie bogatsze gry. W Clairbois, małe RPG napisane w JavaScripcie przez AI Codex, zagrasz bezpośrednio w naszym artykule o tym, jak stworzyć grę z ChatGPT.
Mam nadzieję, że ten kurs JavaScriptu dla początkujących okazał się pomocny. Masz już podstawy JavaScriptu w ręku, więc rozejrzyj się po serwisie: znajdziesz tam sporo kursów i artykułów o JavaScripcie, które pomogą ci podnieść umiejętności.