|
IDEI DE PROIECTE
|
PAG. 1 / 1
|
Construirea unui joc educativ de Trivia în Python
Scopul proiectului
Crearea unui joc educativ de tip
trivia în Python, care să testeze și să
consolideze cunoștințele de cultură generală ale utilizatorilor prin întrebări interactive și feedback instantaneu.
I. Concepție
Prima etapă este definitorie și creativă. Aici se stabilește ideea de bază a proiectului,
scopul lui și modul în care va interacționa utilizatorul.
Am căutat pe Internet și am descoperit că există
Open Trivia DB, o bază de date publică, gratuită, construită chiar de comunitate,
care pune la dispoziție întrebări de cultură generală grupate pe categorii, dificultăți și tipuri. Avantajul ei este că funcționează printr-un API simplu,
adică printr-un link special care întoarce un set de întrebări în format JSON, astfel încât Python îl poate prelua fără să ai nevoie de cont,
cheie de acces sau configurări complicate. Este genul de resursă ideală, pentru că deschide ușa către proiecte care arată foarte „reale”
și conectate la Internet, fără stresul autentificării sau limitărilor comerciale.
Jocul va prelua întrebări reale pe care le va afișa pe rând, va combina răspunsurile corecte cu cele
greșite și le va amesteca pentru fiecare întrebare. Se conturează astfel conceptele principale: utilizatorul va citi întrebarea, va alege una dintre
variantele numerotate, iar programul va verifica imediat dacă răspunsul este corect sau greșit și va actualiza scorul. La final, se va afișa scorul obținut!
II. Proiectare
A doua etapă este planificarea și structurarea jocului, pregătirea mediului și a uneltelor necesare. Primul pas este să ne asigurăm că Python
este instalat pe calculator. Apoi, pentru a putea prelua întrebările de pe Internet, avem nevoie de modulul
requests.
Instalarea lui se face simplu, deschizând terminalul sau
CMD.exe și tastând: "
pip install requests".
Acest modul se descarcă automat și permite programului să trimită cereri web și
să primească răspunsuri în format
JSON. După instalare, modulul se poate importa în fișierul Python folosind:
import requests
Odată ce modulul este pregătit, se poate trece la planificarea structurii jocului. Spre exemplu, se decide că va exista o funcție
get_questions()
care să preia întrebările de pe Internet și să le transforme într-o listă ușor de folosit, iar o funcție
start_trivia() va afișa întrebările,
va amesteca răspunsurile, va citi opțiunea utilizatorului și va verifica corectitudinea răspunsurilor. Totul va fi controlat printr-o
buclă care parcurge fiecare întrebare, iar scorul va fi actualizat automat. Această etapă asigură că mediul și logica jocului sunt
pregătite clar înainte de scrierea codului efectiv.
API-ul folosit este
Open Trivia DB, accesibil printr-un URL de genul:
https://opentdb.com/api.php?amount=5&category=9&difficulty=easy&type=multiple
Detalii despre parametri:
- amount=5 indică numărul total de întrebări
- category=9 impune categoria întrebărilor (9 = General Knowledge)
- difficulty=easy setează nivelul de dificultate (easy, medium, hard)
- type=multiple setează tipul întrebării (multiple = cu mai multe variante, boolean = adevărat/fals).
Programul face o cerere
HTTP către acest
URL folosind modulul
requests,
primește răspunsul în format
JSON și îl transformă într-o listă de întrebări, fiecare cu varianta corectă și răspunsurile greșite.
Util. Alte tipuri de categorii: 9 – General Knowledge, 10 – Entertainment: Books, 11 – Entertainment: Film, 12 – Entertainment: Music,
14 – Entertainment: Television, 17 – Science & Nature, 18 – Science: Computers, 19 – Science: Mathematics, 21 – Sports, 22 – Geography,
23 – History, 27 – Animals, 28 – Vehicles, 29 – Entertainment: Comics, 30 – Science: Gadgets, 31 – Entertainment: Japanese Anime & Manga, etc.
Baza de date are în total
39 de categorii disponibile prin
API, fiecare având un cod numeric specific.
Vom crea mai întâi codul minimal, astfel încât să testăm funcționalitatea de bază.
III. Implementare
A treia etapă este implementarea efectivă a jocului, unde ideile și planul devin cod concret. În această fază se scrie codul Python
care preia întrebările, le afișează pe rând, combină răspunsurile corecte cu cele greșite, le amestecă și verifică opțiunile introduse
de utilizator, calculând scorul final. Tot aici se testează ca totul să funcționeze corect și clar, fără erori.
Iată codul rescris și detaliat, gata de folosit:
import requests # pentru a prelua întrebările de pe Internet
import random # pentru a amesteca variantele de răspuns
def get_questions(amount=5, category=9, difficulty='easy', type='multiple'):
url = f"https://opentdb.com/api.php?amount={amount}&category={category}&difficulty={difficulty}&type={type}"
response = requests.get(url)
data = response.json()
return data['results']
def start_trivia():
score = 0 # scorul inițial
questions = get_questions() # preia întrebările
# parcurgem fiecare întrebare
for idx, q in enumerate(questions, 1):
print(f"\nÎntrebarea {idx}: {q['question']}")
options = q['incorrect_answers'] + [q['correct_answer']]
random.shuffle(options)
for i, option in enumerate(options, 1):
print(f"{i}. {option}")
answer = input("Alege varianta corectă (1-4): ")
if options[int(answer)-1] == q['correct_answer']:
print("Corect!")
score += 1
else:
print(f"Greșit! Răspunsul corect era: {q['correct_answer']}")
print(f"\nScor final: {score}/{len(questions)}")
start_trivia()
Codul începe prin a importa două module esențiale. Primul,
requests, permite programului să ceară informații de pe Internet,
iar al doilea,
random, este folosit pentru a amesteca variantele de răspuns,
astfel încât răspunsul corect să nu fie niciodată pe aceeași poziție.
Următorul pas este crearea unei funcții care preia întrebările (
get_questions). Aceasta construiește o adresă web către
API-ul Open Trivia DB, specificând câte întrebări vrem, categoria lor, nivelul de dificultate și tipul întrebării. Programul
trimite cererea, primește răspunsul în format JSON și îl transformă într-o structură de date Python, din care extrage doar
lista efectivă de întrebări. Fiecare întrebare conține textul ei, varianta corectă și răspunsurile greșite.
Funcția principală a jocului (
start_trivia) începe prin inițializarea scorului cu zero și apelarea funcției care preia întrebările.
Apoi programul parcurge fiecare întrebare pe rând, afișând textul și combinând răspunsul corect cu cele greșite.
Listele de răspunsuri sunt amestecate pentru a crea surpriză și dinamism.
Observație. API-ul trimite pentru fiecare întrebare două tipuri de răspunsuri: unul corect și unul sau mai multe greșite.
În răspunsul JSON, răspunsul corect se află în câmpul
correct_answer, iar răspunsurile greșite sunt într-o listă numită
incorrect_answers.
Programul combină aceste două surse pentru a forma lista completă de opțiuni pe care utilizatorul le poate alege. Aceasta permite afișarea
tuturor variantelor (lista
options) într-un mod clar și apoi amestecarea lor.
După afișarea întrebărilor, programul cere utilizatorului să aleagă varianta corectă, iar imediat verifică răspunsul.
Dacă utilizatorul alege corect, scorul crește cu o unitate și se afișează mesajul „Corect!”. Dacă răspunsul este greșit, programul
arată varianta corectă. Această secvență se repetă pentru fiecare întrebare din rundă.
Observație. În cod,
enumerate este folosit pentru a parcurge lista de întrebări și, în același timp, pentru a ști numărul fiecărei întrebări.
Practic, când ai o listă de întrebări, ai nevoie să le afișezi pe rând și să le numerotezi: întrebarea 1, întrebarea 2, întrebarea 3 și așa mai departe.
Fără
enumerate, dacă parcurgi lista simplu, de exemplu cu
for q in questions, programul știe doar care este întrebarea curentă,
dar nu știe ce număr să afișeze. Trebuie să ții un contor separat, cu o variabilă care crește la fiecare pas.
În limbajul Python,
enumerate este o funcție încorporată care ia o listă sau orice alt obiect iterabil și
returnează fiecare element împreună cu un index numeric care indică poziția acelui element în listă.
La final, programul afișează scorul total obținut, astfel încât utilizatorul să vadă câte răspunsuri a ghicit corect.
Executăm programul și... să înceapă jocul!
Codul funcționează ca un mini-motor de trivia structurat în trei componente principale: partea responsabilă de apelarea API-ului,
partea care gestionează logica jocului și partea care se ocupă de interacțiunea cu utilizatorul. Fiecare componentă își îndeplinește rolul specific,
iar prin analizarea fiecărei secțiuni separat se observă că implementarea respectă pași clasici și bine definiți în Python.
|
IDEI DE EXTINDERE A PROIECTULUI
|
check_circle_outline
|
Iată câteva sugestii pentru a îmbunătăți jocul:
- Alegerea numărului de întrebări înainte de a începe jocul.
- Alegerea categoriei și apoi dificultatea întrebărilor înainte de a începe runda, oferind astfel mai mult control utilizatorului.
- Afișarea scorului parțial după fiecare întrebare, nu doar la final.
- Corectarea automată a inputului dacă utilizatorul greșește și tastează ceva nevalid (eroare detectată la testare cu un răspuns invalid).
- Folosirea unui mesaj de încurajare sau comentariu după fiecare răspuns, pentru a face jocul mai prietenos.
Pont. A se vizualiza și proiectul
[
Traducerea automată a textului].
Tare fain ar fi ca întrebările și răspunsurile să fie în limba română!
Concluzii
Jocul realizat în Python este un exemplu clar de cum conceptele învățate la școală, cum ar fi buclele, listele și funcțiile,
pot fi aplicate într-un proiect interactiv și distractiv. Elevii pot vedea cum un program simplu poate prelua informații de pe Internet,
le poate procesa și apoi transforma într-o experiență de învățare practică.
Pentru elevi, este util să înceapă prin înțelegerea fiecărei părți a codului: cum se preiau întrebările, cum se amestecă răspunsurile
și cum se verifică corectitudinea lor. Este recomandat să experimenteze modificând parametri, cum ar fi numărul de întrebări sau categoria,
pentru a observa efectele directe în joc. De asemenea, pot încerca să adauge mici îmbunătățiri, cum ar fi afișarea scorului după fiecare
întrebare sau personalizarea mesajelor, pentru a exersa creativitatea și logica în programare.
Noțiuni teoretice: variabile, funcții, liste, if, for, import de module
Cuvinte cheie: Python, trivia, joc educativ, cultură generală, Open Trivia DB, programare, elevi, învățare interactivă, API, răspunsuri multiple
Cărțile editurii noastre
O parte dintre manualele și culegerile de probleme se găsește și [
în format electronic]
securizat sub formă
de fișier *.pdf.