Cum se creează un joc de ghicire a numărului în Python?

Probabil că ai anticipat subiectul acestui articol. De asemenea, este posibil să fii familiarizat cu jocurile de ghicit numere și să cauți o modalitate de a le crea folosind Python.

Să explorăm împreună cum să construim un joc de ghicit numere de la zero.

Jocul de Ghicit Numere

Mecanismul jocului este simplu. Jucătorul trebuie să identifice un număr generat aleatoriu, care se încadrează într-un interval de la 1 la 100. Asta este tot.

Pare prea simplu?

Într-adevăr, este.

Cu toate acestea, trebuie să oferim jucătorilor indicii pentru a-i ajuta să ghicească numărul. Aceste indicii ar trebui să informeze utilizatorul dacă numărul introdus este mai mic sau mai mare decât numărul țintă. Acest lucru va ajuta utilizatorul să știe în ce direcție să continue.

Putem adăuga și elemente de interes, cum ar fi un număr maxim de încercări, posibilitatea de a modifica intervalul, un cronometru și altele.

Întâi, vom dezvolta o versiune de bază a jocului. Apoi, vom adăuga funcții suplimentare. Vom începe cu un algoritm clar și explicat, pentru a înțelege mai bine codul.

Îți recomand să încerci să creezi jocul fără a copia codul. Pentru aceasta, îți voi prezenta algoritmul. Acesta te va ajuta să înțelegi sau chiar să scrii rapid codul.

Să analizăm algoritmul pentru jocul de ghicit numere.

Algoritmul

Asigură-te că ai înțeles algoritmul înainte de a scrie codul.

  • Stabilește un interval pentru numere. În mod normal, acesta este de la 1 la 100, dar poate fi modificat.
  • Generează un număr întreg aleatoriu din intervalul definit (1-100).
  • La începutul jocului, afișează un mesaj precum „Ghicește un număr între X și Y”. Mesajul poate fi personalizat.
  • Inițializează o variabilă cu valoarea 0. Aceasta va număra câte încercări a folosit jucătorul.
  • Pornește o buclă infinită.
    • Cere utilizatorului să introducă un număr.
    • Dacă numărul introdus este egal cu numărul generat aleatoriu, felicită utilizatorul cu un mesaj de tipul „Bravo! L-ai ghicit în 5 încercări!”.
    • Întrerupe bucla după felicitarea utilizatorului.
    • Dacă numărul introdus este mai mic decât cel aleatoriu, oferă un mesaj care să sugereze acest lucru (e.g., „Numărul tău este mai mic”).
    • Dacă numărul introdus este mai mare, oferă un mesaj adecvat (e.g., „Numărul tău este mai mare”).
    • La fiecare iterație, incrementează numărul de încercări ale utilizatorului.

Dacă ai înțeles algoritmul, probabil că te-ai gândit deja la cod. Nu te îngrijora dacă nu ai format codul complet. Important este să înțelegi logica.

Acum este timpul să trecem la cod. Să începem fără alte amânări.

Codul

Ai încercat să scrii codul?

Dacă l-ai scris deja, minunat! Verifică codul și încearcă să-l înțelegi. Astfel, vei acumula și mai multă experiență.

Nu te îngrijora dacă nu ai scris codul. Analizează codul de mai jos și încearcă să-l înțelegi. Modifică-l și adaptează-l pentru a aprofunda înțelegerea.

Să vedem codul:

import random

class JocGhicitNumar:
    def __init__(self):
        # definim intervalul
        self.MINIM = 1
        self.MAXIM = 100

    # metoda pentru a genera numărul aleatoriu
    def genereaza_numar_aleatoriu(self):
        return random.randint(self.MINIM, self.MAXIM)

    # metoda pentru a începe jocul
    def start_joc(self):
        # generarea numărului aleatoriu
        numar_aleatoriu = self.genereaza_numar_aleatoriu()

        print(f"Ghicește numărul generat aleatoriu între {self.MINIM} și {self.MAXIM}")

        # logica principală a jocului
        incercari = 0
        while True:
            numar_utilizator = int(input("Introdu numărul ghicit: "))
            if numar_utilizator == numar_aleatoriu:
                print(f"-> Felicitări! L-ai ghicit în {incercari + 1} pas{'i' if incercari > 1 else ''}!")
                break
            elif numar_utilizator < numar_aleatoriu:
                print("-> Numărul tău este mai mic decât numărul aleatoriu")
            else:
                print("-> Numărul tău este mai mare decât numărul aleatoriu")
            incercari += 1

# creăm o instanță a jocului și îl pornim
jocGhicit = JocGhicitNumar()
jocGhicit.start_joc()

Câteva lucruri de observat în acest cod:

  • Intervalul este definit în metoda __init__, astfel încât să poată fi folosit în toate metodele clasei.
  • Putem schimba valorile acestuia într-un singur loc, iar schimbarea va fi aplicată în întreg codul.
  • Există o metodă separată pentru generarea numărului aleatoriu, conform principiului „separării preocupărilor”. Deși metoda este simplă acum, ea ar putea evolua în viitor.
  • Am folosit o clasă, astfel încât toate metodele specifice jocului să fie în interiorul ei, facilitând reutilizarea codului în alte aplicații.

Toate aceste elemente sunt legate de scrierea unui cod curat. Este important să scriem un cod ușor de înțeles chiar și după mai mulți ani.

Un exemplu de execuție a jocului arată astfel:

$ python joc_ghicit_numar.py 
Ghicește numărul generat aleatoriu între 1 și 100
Introdu numărul ghicit: 50
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 75
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 90
-> Numărul tău este mai mare decât numărul aleatoriu
Introdu numărul ghicit: 85
-> Numărul tău este mai mare decât numărul aleatoriu
Introdu numărul ghicit: 80
-> Felicitări! L-ai ghicit în 5 pași!

Presupun că ai instalat Python pentru a testa codul de mai sus.

Funcționalitate Suplimentară

Vom adăuga un număr maxim de încercări pe care jucătorul le poate folosi pentru a ghici numărul. Dacă jucătorul nu reușește să ghicească numărul în numărul maxim de încercări, acesta pierde.

Cum adăugăm această funcționalitate?

Este un proces simplu în doi pași. Să analizăm acești pași:

  • Definește numărul maxim de încercări pe care le are la dispoziție jucătorul.
  • Verifică dacă jucătorul mai are încercări disponibile înainte de a solicita o nouă introducere de date. Dacă numărul de încercări este depășit, jocul se termină.

Următorul cod va completa această funcționalitate:

  • Adaugă codul de mai jos în cadrul metodei __init__.
self.MAX_INCERCARI = 10
  • Adaugă următoarea condiție înainte de a solicita jucătorului următoarea ghicire.
if incercari == self.MAX_INCERCARI:
    print("-> Of! Ai pierdut. Nu mai ai încercări.")

Acum, încearcă să joci fără a ghici numărul corect. Ar trebui să obții o ieșire similară:

$ python joc_ghicit_numar.py
Ghicește numărul generat aleatoriu între 1 și 100. Ai 10 încercări la dispoziție.
Introdu numărul ghicit: 1
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 2
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 3
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 4
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 5
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 6
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 7
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 8
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 9
-> Numărul tău este mai mic decât numărul aleatoriu
Introdu numărul ghicit: 10
-> Numărul tău este mai mic decât numărul aleatoriu
-> Of! Ai pierdut. Nu mai ai încercări.

Excelent! Am adăugat o funcționalitate suplimentară jocului. Dar asta nu e tot. Poți adăuga și alte funcționalități pentru a-l face mai captivant. Acum este rândul tău. Fă-l mai interesant! :).

Concluzie

Am creat un simplu joc de ghicit numere. Acum, este rândul tău să te gândești la jocurile copilăriei. Recreează-le folosind un limbaj de programare și împarte creațiile tale cu prietenii. Putem digitaliza multe din jocurile din copilărie.

Explorează mediile de dezvoltare Python (IDE) și compilatoarele online pentru a rula codul Python.

Spor la codat! 🙂

Dacă ești pasionat de jocurile virale de cuvinte, iată un articol despre cum să te perfecționezi la Wordle.

Ți-a plăcut articolul? De ce nu îl împarți cu alții?