Tavs šīs stundas izaicinājums: Izprast koda arhitektūras pamatprincipus un sadalīt savu spēles loģiku vairākos moduļos, izveidojot pārskatāmu un profesionālu failu sistēmu.
SR 2.4.15. (Programmas sadalīšana moduļos)Python valodā jebkurš .py fails ir modulis. Koda dalīšana moduļos padara to lasāmu un ļauj komandai strādāt vienlaicīgi. Visiem Tavas spēles failiem jāatrodas vienā mapē, lai dators tos varētu atrast.
# Iedomājies, ka vienā mapē tev ir divi faili:
# 1. spele.py (tavs galvenais fails)
# 2. ieroci.py (modulis, kurā ir funkcija saut())
# --- 1. variants: Drošais imports ---
import ieroci
ieroci.saut() # Funkcijai obligāti jāliek priekšā faila "uzvārds"
# --- 2. variants: Ērtais imports ---
from ieroci import saut
saut() # Funkciju var saukt pa tiešo, bez "uzvārda"
import fails – Ielādē visu moduli. Tas ir drošākais veids lieliem projektiem, jo novērš situācijas, kur divos failos ir funkcijas ar vienādiem nosaukumiem (piemēram, ieroci.saut() un ienaidnieki.saut()).from fails import funkcija – Ielādē tikai vienu konkrētu komandu. Tas ir ērtāk, jo ļauj rakstīt īsāku kodu, bet jāuzmanās no nosaukumu konfliktiem.Paredzamais laiks: 15 minūtes
Sāksim ar vienkāršu vizuālo moduli. Tu izveidosi failu, kura vienīgais mērķis ir glīti parādīt spēlētāja datus, un izsauksi to no galvenā faila.
rpg_spele un atver to VS Code.ui.py (User Interface). Tajā definē funkciju def radit_pasi(vards, klase):, kas izvada formatētu tekstu ar spēlētāja vārdu un klasi (piemēram, "Kareivis" vai "Mags").main.py.main.py augšā ieraksti: import ui.ui.radit_pasi("Gendalfs", "Burvis").main.py caur termināli.Paredzamais laiks: 20 minūtes
Izmanto from ... import, lai padarītu kodu īsāku. Tu izveidosi sistēmu, kas no lādēm met ārā nejaušus priekšmetus, apvienojot savu moduli ar Python iebūvēto random moduli.
inventars.py. Faila augšā pievieno: import random.lietas = ["Zobens", "Vairogs", "Dziras pudele", "Koka nūja"].def atvert_ladi():, kas ar random.choice(lietas) atgriež (return) vienu nejaušu priekšmetu.main.py. Pašā augšā pievieno jaunu rindu: from inventars import atvert_ladi.main.py izveido for ciklu, kas atkārtojas 3 reizes. Katrā ciklā izsauc atvert_ladi() un ar print() paziņo spēlētājam, ko viņš atrada.Paredzamais laiks: 35 minūtes
Uzprogrammē spēles galveno cilpu (game loop), kas savieno datu aprēķinus no viena faila ar vizuālo attēlojumu no otra faila. Šis simulē īstu spēļu izstrādes arhitektūru!
kauja.py — Importē random. Definē funkciju def speletaja_uzbrukums():, kas atgriež skaitli no 5 līdz 15. Definē otru funkciju def ienaidnieka_uzbrukums():, kas atgriež skaitli no 2 līdz 10.grafika.py — Definē funkciju def zimet_hp(vārds, hp):. Liec tai izdrukāt vārdu un tik daudz '█' simbolu, cik ir HP (padoms: print(vārds + ": " + "█" * hp)).main.py — Importē kauja un grafika.main.py):
speletaja_hp = 20 un orka_hp = 30.while speletaja_hp > 0 and orka_hp > 0: ciklu.input("Spied Enter, lai uzbruktu!").orka_hp spēlētāja uzbrukuma vērtību (izmantojot funkciju no kauja.py).speletaja_hp orka uzbrukuma vērtību.grafika.zimet_hp abiem tēliem, lai parādītu atlikušo dzīvību.if hp < 0: hp = 0.
random.py vai math.py). Python vispirms ielādēs Tavu failu, "salaužot" īsto bibliotēku. Risinājums: Izmanto unikālus failu nosaukumus.# 1. fails: cina.py (Modulis)
def aprekinat_bojajumu(ierocis):
if ierocis == "zobens":
return 15
return 5
# ==========================================
# 2. fails: main.py (Galvenais skripts)
import cina
speletaja_ierocis = "zobens"
bojajums = cina.aprekinat_bojajumu(speletaja_ierocis)
print(f"Tu cērti ar {speletaja_ierocis} un izdari {bojajums} bojājumu!")