Tavs šīs stundas izaicinājums: Diferencēt mainīgo redzamību programmā, izmantot vārdnīcas kompleksu datu glabāšanai un optimizēt spēles tēla īpašību pārvaldību.
2.4.13. Lieto mainīgos, datu tipus un pamatkonstrukcijas.Lai veidotu sarežģītas spēles, mums jāzina, kur mainīgie "dzīvo" un kā efektīvi glabāt tēla statistiku.
zelts = 100 # Globāls
def veikt_pirkumu():
cena = 20 # Lokāls (ārpus funkcijas neeksistē)
print(f"Iztērēti {cena}")
{}Dictionary ir datu struktūra, kas glabā informāciju pāros: Key (Atslēga) : Value (Vērtība). Tas ir ideāls veids, kā glabāt spēlētāja statistiku vienuviet.
# Vārdnīcas izveide
speletajs = {"vards": "Artūrs", "hp": 100, "limenis": 5}
# Piekļūšana vērtībai pēc atslēgas
print(speletajs["vards"]) # Izvada: Artūrs
# Vērtības atjaunināšana
speletajs["hp"] -= 10
Eksperimentē ar mainīgo tvērumu, lai saprastu, kāpēc funkcijas iekšienē radīti mainīgie nav pieejami galvenajā programmā.
tverums.py.uzbrukums(). Funkcijas iekšpusē izveido mainīgo bojajums = 25 un izdrukā to.uzbrukums().bojajums.Aizstāj vairākus atsevišķus mainīgos ar vienu strukturētu vārdnīcu un izmanto to funkcijās.
statistika.py.varonis ar atslēgām: "vards", "hp", "speks", "zelts" un piešķir tām sākuma vērtības.paradi_datus(tels), kas saņem vārdnīcu kā parametru un glīti izdrukā visus datus, izmantojot f-string.varonis vārdnīcu.varonis["zelts"] += 50) un izsauc funkciju vēlreiz, lai redzētu izmaiņas.Izveido funkciju, kas meklē informāciju vārdnīcā un atgriež (return) datus galvenajai programmai.
veikals.py.cenradis, kur atslēgas ir priekšmetu nosaukumi (piem., "Zobens", "Vairogs"), bet vērtības — to cenas (int).pirkt_lietu(nosaukums).nosaukums eksistē vārdnīcā (izmanto if nosaukums in cenradis:).Izpēti situāciju, kad globālais un lokālais mainīgais saucas vienādi (Shadowing).
prioritate.py.vards = "Globālais".mainit_vardu(), kuras iekšpusē nodefinē vards = "Lokālais" un izdrukā to.vards ārpus funkcijas.return, lai atgrieztu jauno vērtību."HP" vietā "hp").
# Slikti:
print(tels["HP"]) # Ja atslēga ir "hp" (mazie burti)
# Labi:
print(tels.get("HP", "Nav atrasts")) # .get() drošai piekļuvei
# Atceries:
# Lokālie mainīgie pieder tikai tai funkcijai, kurā tie radīti!
# Globālie dati
ienaidnieks = {"tips": "Orks", "hp": 50}
def sanemt_bojajumu(tels, punkti):
"""Samazina tēla hp par norādīto punktu skaitu."""
tels["hp"] = tels["hp"] - punkti
print(f"{tels['tips']} saņēma triecienu!")
# Izsaukums
sanemt_bojajumu(ienaidnieks, 15)
print(f"Atlikušais HP: {ienaidnieks['hp']}")