Gra w zgadywanie liczby
Zaimplementuj małą interaktywną grę w zgadywanie liczby z użyciem liczb losowych
Gra w zgadywanie liczby to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.
Plan gry
Program losuje tajną liczbę z zakresu 1..100. Użytkownik zgaduje, a program informuje: „za wysoko” lub „za nisko”. Wygrywa się po odgadnięciu liczby albo po wykorzystaniu ustalonej liczby prób.
Wymagane nagłówki
Do generowania liczb losowych oraz obsługi wejścia i wyjścia.
#include <iostream>
#include <random>
#include <string>Generowanie tajnej liczby
Użyj nowoczesnych mechanizmów <random>. Zainicjalizuj generator tylko raz.
std::random_device rd;
std::mt19937 engine(rd());
std::uniform_int_distribution<int> dist(1, 100);
int secret = dist(engine);Główna pętla
Wyświetl znak zachęty, odczytaj dane, porównaj je i powtarzaj, aż odpowiedź będzie poprawna.
int guess;
int attempts = 0;
while (true) {
++attempts;
std::cout << "Guess (1-100): ";
if (!(std::cin >> guess)) break;
if (guess == secret) {
std::cout << "Got it in " << attempts << " tries\n";
break;
}
std::cout << (guess < secret ? "too low" : "too high") << "\n";
}Ograniczanie liczby prób
Dodaj maksymalną liczbę prób, aby zwiększyć trudność gry.
const int MAX = 10;
if (attempts >= MAX) {
std::cout << "Out of tries! It was " << secret << "\n";
break;
}Weryfikowanie danych wejściowych
Jeśli użytkownik wpisze dane nienumeryczne, cin przechodzi w stan błędu. Obsłuż to w kontrolowany sposób.
if (!(std::cin >> guess)) {
std::cin.clear();
std::cin.ignore(10000, '\n');
std::cout << "Please enter a number\n";
continue;
}Zgadywanie spoza zakresu
Odrzucaj liczby spoza zakresu 1..100, zanim zaliczysz próbę.
if (guess < 1 || guess > 100) {
std::cout << "Out of range\n";
--attempts; // not a real attempt
continue;
}Pętla ponownej gry
Po zakończeniu gry zapytaj użytkownika, czy chce zagrać ponownie.
std::cout << "Play again? (y/n): ";
char reply;
std::cin >> reply;
if (reply != 'y') break;Śledzenie statystyk
Przechowuj sumy dla kolejnych gier — najlepszy wynik, średnią liczbę prób i łączną liczbę zwycięstw.
int wins = 0;
int bestAttempts = INT_MAX;
// update inside the win branchDostosowywanie zakresu
Pozwól użytkownikowi wybrać tryb łatwy (1..10), średni (1..100) lub trudny (1..1000). Odpowiednio dostosuj dist.
System podpowiedzi
Opcjonalnie: po kilku błędnych odpowiedziach zawężaj zakres. „Liczba jest co najmniej równa 40”.
Podział na funkcje
Zrefaktoryzuj program, dzieląc go na generateSecret(), readGuess(), playRound() i main(). Każda funkcja powinna wykonywać jedno zadanie.
Szybkie sprawdzenie
Jaki zestaw nagłówków jest potrzebny do generowania liczb losowych we współczesnym C++?
Podsumowanie
Gra w zgadywanie liczb łączy generowanie liczb losowych, weryfikację danych wejściowych, pętle i stan gry. Zrefaktoryzuj ją, dzieląc kod na małe funkcje, a następnie dodaj ponowną grę, statystyki i poziomy trudności.
Często zadawane pytania
Czy lekcja „Gra w zgadywanie liczby” jest bezpłatna?
Tak — pełny tekst „Gra w zgadywanie liczby” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Gra w zgadywanie liczby”?
Zaimplementuj małą interaktywną grę w zgadywanie liczby z użyciem liczb losowych Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C++ Academy?
Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Gra w zgadywanie liczby”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?
Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Budowa prostego kalkulatora CLI
- Odczytywanie i zapisywanie plików CSV
- Gra w zgadywanie liczby
- Licznik częstości słów