Razen če je vaša igra zelo kratka, pomaga, da lahko shranite napredek. Tudi kratke igre lahko koristijo shranjevanju visokih rezultatov.
Če svoji igri dodate sistem za shranjevanje in nalaganje, lahko močno izboljšate izkušnjo igralca. Igralcem omogoča, da vztrajajo pri svojem napredku, nadaljujejo z igranjem in eksperimentirajo z različnimi strategijami, ne da bi izgubili težko prigarane dosežke.
Prijetno boste presenečeni nad tem, kako preprosto je dodati to funkcijo v svojo igro s pomočjo knjižnice Python Arcade.
Ustvari preprosto igro
Začnite z ustvarjanjem preprosta igra, kjer se igralec lahko premika leva in desna.
Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.
Ustvari novo datoteko z imenom simple-game.py in dodajte spodnjo kodo:
uvoz arkada
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_SPEED = 5
modra = arkadna.barva. MODRArazredGameWindow(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
self.player_x = širina // 2defon_draw(sebe):
arcade.start_render()
arcade.draw_rectangle_filled (self.game_state.player_x,
50, 50, 50, modra)defnadgradnja(sam, delta_time):
prehoddefna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.player_x -= PLAYER_SPEED
elif ključ == arcade.key. PRAV:
self.player_x += PLAYER_SPEEDdefglavni():
window = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
če __ime__ == '__glavni__':
glavni ()
Koda ustvari okno z modrim pravokotnikom, ki predstavlja igralca. Igralec se lahko premika levo in desno s smernima tipkama levo in desno.
Upravljanje stanja igre
Če želite implementirati sistem shranjevanja in nalaganja, morate upravljati različna stanja igre. Stanje igre predstavlja trenutno stanje igre, vključno s položaji predmetov, rezultati in drugimi ustreznimi podatki. Za ta primer se osredotočite samo na x-koordinato igralca.
Če želite upravljati stanja igre, uvedite a GameState razred, ki enkapsulira podatke igre in nudi metode za njihovo shranjevanje in nalaganje. Tukaj je koda:
razredGameState:
def__v__(sebe):
self.player_x = 0
Shranjevanje podatkov igre
Če želite shraniti podatke igre, razširite GameWindow razreda in dodajte metodo za shranjevanje stanja igre, kadar koli je to potrebno. Za enostavnost uporabite format JSON. Tukaj je koda:
V shranite igro metoda, ustvarite slovar Python ki vsebuje ustrezne podatke o igri. Nato jo serializirajte v datoteko JSON, imenovano shrani.json.
uvoz json
razredGameWindow(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
self.game_state = GameState()defshranite igro(sebe):
podatki = {
'player_x': self.game_state.player_x
}
z odprto('save.json', 'w') kot mapa:
json.dump (podatki, datoteka)
natis (podatki)defon_draw(sebe):
arcade.start_render()
arcade.draw_rectangle_filled (self.game_state.player_x,
50, 50, 50, modra)defnadgradnja(sam, delta_time):
prehod
defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.game_state.player_x -= PLAYER_SPEED
elif ključ == arcade.key. PRAV:
self.game_state.player_x += PLAYER_SPEED
elif ključ == arcade.key. S:
self.save_game()
Nalaganje podatkov o igri
Če želite naložiti podatke igre, razširite GameWindow razred naprej in dodajte metodo za nalaganje stanja igre. Ustvari novo datoteko z imenom load-game.py in dodajte kodo s spodnjimi posodobitvami:
razredGameWindow(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
self.game_state = GameState()
self.load_game()defNaloži igro(sebe):
poskusi:
z odprto('save.json', 'r') kot mapa:
podatki = json.load (datoteka)
self.game_state.player_x = podatki['player_x']
razen FileNotFoundError:
prehod
defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. L:
self.load_game()
The Naloži igro metoda poskuša odpreti shrani.json datoteko in pridobite podatke o igri. Nato posodobi stanje igre z naloženimi podatki. Če datoteka ne obstaja, lahko izjemo preprosto prezrete in pustite privzeto stanje igre.
Vključno z dodatnimi funkcijami
Dodate lahko več funkcij za izboljšanje sistema shranjevanja in nalaganja igre.
Shranjevanje najboljših rezultatov
Shranjevanje visokih rezultatov poleg stanja igre je pogosta značilnost mnogih iger. Ti lahko upravljajte z rezultati in s tem sistemom shranite visoko oceno. Ustvari novo datoteko z imenom high-score.py in dodajte kodo s spodnjimi posodobitvami:
razredGameWindow(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
self.high_score = 0defNaloži igro(sebe):
poskusi:
z odprto('save.json', 'r') kot mapa:
podatki = json.load (datoteka)
natis (podatki)
self.player_x = data.get('player_x', self.player_x)
self.high_score = data.get('high_score', self.high_score)
razen FileNotFoundError:
prehoddefshranite igro(sebe):
podatki = {
'player_x': self.player_x,
'high_score': self.high_score
}
z odprto('save.json', 'w') kot mapa:
json.dump (podatki, datoteka)
natis (podatki)
defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.player_x -= PLAYER_SPEED
elif ključ == arcade.key. PRAV:
self.player_x += PLAYER_SPEED
self.high_score += 1
Funkcija samodejnega shranjevanja
Če želite igralcem zagotoviti brezskrbnost in preprečiti izgubo napredka, lahko samodejno shranite stanje igre v rednih intervalih. Ustvari novo datoteko z imenom auto-save.py in dodajte kodo s spodnjimi posodobitvami:
uvoz čas
razredGameWindow(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
self.game_state = GameState()# Shrani vsakih 6 sekund
self.autosave_interval = 6
self.last_save_time = time.time()defnadgradnja(sam, delta_time):
trenutni_čas = čas.čas()
časovna_razlika = trenutni_čas - samo.zadnji_shranjevalni_čas
če time_diff >= self.autosave_interval:
self.save_game()
natisni("Shranjeno")
self.last_save_time = trenutni_čas
V tem izrezku kode je nadgradnja metoda preveri, ali je od zadnjega shranjevanja pretekel določeni časovni interval. Če je tako, sproži shranite igro metoda GameWindow razred za samodejno shranjevanje stanja igre. Prilagodite interval_samodejnega_shranjevanja vrednost glede na zahteve vaše igre.
Preverjanje podatkov igre
Preverjanje naloženih podatkov o igri je bistveno za zagotovitev njihove celovitosti in doslednosti. Preverjanje podatkov lahko preprosto vključite v naš sistem za shranjevanje in nalaganje:
razredGameState:
def__v__(sebe):
self.player_x = 0defshrani_stanje(sebe):
če self.is_valid_state():
podatki = {
'player_x': self.player_x
}z odprto('save.json', 'w') kot mapa:
json.dump (podatki, datoteka)defload_state(sebe):
z odprto('save.json', 'r') kot mapa:
podatki = json.load (datoteka)če self.validate_loaded_data (podatki):
self.player_x = podatki['player_x']
drugače:
natisni("Napaka!")defje_veljavno_stanje(sebe):
# Tukaj izvedite logiko preverjanja
# Vrni True, če je stanje veljavno, v nasprotnem primeru False
prehod
defpotrdi_naložene_podatke(jaz, podatki):
# Izvedite validacijo naloženih podatkov
# Vrni True, če so podatki veljavni, v nasprotnem primeru False
prehod
Z vključitvijo teh dodatnih funkcij v sistem za shranjevanje in nalaganje lahko ustvarite bolj vsestransko in robustno igranje izkušnjo, ki igralcem ponuja možnost shranjevanja več stanj igre, sledenja visokim rezultatom, omogočanja samodejnega shranjevanja in zagotavljanja podatkov celovitost.
Najboljše prakse za sistem za shranjevanje in nalaganje
Implementacija sistema za shranjevanje in nalaganje je pomemben vidik razvoja igre. Za zagotovitev robustnega in zanesljivega sistema je nujno upoštevati najboljše prakse. Tukaj je nekaj ključnih praks, ki jih je treba upoštevati:
Šifrirajte občutljive podatke
Če vaša igra vključuje občutljive podatke, kot so gesla, osebni podatki ali nakupi v aplikaciji, je ključnega pomena, da šifrirate stanje shranjene igre. Šifriranje dodaja dodatno raven varnosti, ščiti igralčevo zasebnost in preprečuje nepooblaščen dostop do njegovih podatkov. Za zaščito občutljivih informacij uporabite šifrirne algoritme in knjižnice.
Preveri naložene podatke
Preden naložite podatke o igri, jih morate nujno preveriti, da zagotovite njihovo celovitost in doslednost. Preverite, ali so naloženi podatki v skladu s pričakovano obliko, strukturo in omejitvami vaše igre.
Izvedite potrditvena preverjanja kritičnih podatkovnih polj, da se izognete zrušitvam ali goljufanju. Izvedite robustne mehanizme za preverjanje veljavnosti podatkov za obravnavanje morebitnih napak ali nepričakovanih podatkov.
Napake obravnavajte elegantno
Pri delu z V/I operacijami datotek lahko pride do napak. Ključnega pomena je, da te napake obravnavate elegantno in predvajalniku zagotovite informativna sporočila o napakah. Ulovi in obravnavaj izjeme, kot je npr FileNotFoundError oz PermissionError, med operacijami shranjevanja in nalaganja.
Prikažite uporabniku prijazna sporočila o napakah za usmerjanje igralcev in preprečevanje frustracij. Poleg tega razmislite o implementaciji beleženja napak, da boste lažje diagnosticirali in odpravili težave.
Preizkusite funkcijo shranjevanja in nalaganja
Temeljito preizkusite funkcijo shranjevanja in nalaganja vaše igre, da zagotovite njeno zanesljivost in pravilnost. Ustvarite testne primere, ki pokrivajo različne scenarije, kot je shranjevanje v različnih stanjih igre, nalaganje iz veljavnih in neveljavnih shranjevalnih datotek ter testiranje robnih primerov.
Preverite, ali je stanje igre pravilno shranjeno in naloženo ter ali se pojavi pričakovano vedenje. Samodejni testni okviri lahko pomagajo pri ustvarjanju celovitih preskusnih paketov.
Naredite igre bolj zabavne s sistemom za shranjevanje in nalaganje
Če dodate sistem shranjevanja in nalaganja, lahko naredite igre bolj privlačne, tako da igralcem zagotovite občutek kontinuitete in napredka. Igralci lahko svobodno eksperimentirajo, preizkušajo različne pristope in se pozneje vrnejo k igri, ne da bi izgubili svoje dosežke.
Ta funkcija prav tako omogoča igralcem, da tekmujejo s prijatelji ali se izzovejo, da premagajo svoje prejšnje visoke rezultate, kar vaši igri doda možnost ponovnega igranja in dolgoročno sodelovanje.