Ellei pelisi ole kovin lyhyt, edistymisen säästäminen auttaa. Jopa lyhyet pelit voivat hyötyä korkeiden tulosten säästämisestä.

Tallenna ja lataa -järjestelmän lisääminen peliisi voi parantaa pelaajakokemusta huomattavasti. Sen avulla pelaajat voivat jatkaa edistymistään, jatkaa pelisessiota ja kokeilla erilaisia ​​strategioita menettämättä kovalla työllä ansaittuja saavutuksia.

Tulet iloisesti yllättymään siitä, kuinka yksinkertaista on lisätä tämä ominaisuus peliisi Pythonin Arcade-kirjaston avulla.

Luo yksinkertainen peli

Aloita luomalla yksinkertainen peli, jossa pelaaja voi liikkua vasen ja oikea.

Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.

Luo uusi tiedosto nimeltä simple-game.py ja lisää alla oleva koodi:

tuonti pelihalli

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_SPEED = 5
sininen = arcade.color. SININEN

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
self.player_x = leveys // 2

instagram viewer

defon_draw(itse):
arcade.start_render()
arcade.draw_rectangle_filled (self.game_state.player_x,
50, 50, 50, sininen)

defpäivittää(itse, delta_aika):
kulkea

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= PLAYER_SPEED
elif avain == arcade.key. OIKEALLA:
self.player_x += PLAYER_SPEED

defpää():
ikkuna = Peliikkuna (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

jos __nimi__ == '__main__':
pää()

Koodi luo ikkunan, jossa on sininen suorakulmio, joka edustaa pelaajaa. Pelaaja voi liikkua vasemmalle ja oikealle käyttämällä vasenta ja oikeaa nuolinäppäintä.

Pelitilojen hallinta

Tallenna ja lataa -järjestelmän toteuttamiseksi sinun on hallittava erilaisia ​​pelitiloja. Pelin tila edustaa pelin nykyistä tilaa, mukaan lukien esineiden sijainnit, tulokset ja muut asiaankuuluvat tiedot. Keskity tässä esimerkissä vain pelaajan x-koordinaattiin.

Voit hallita pelin tiloja ottamalla käyttöön a GameState luokka, joka kapseloi pelin tiedot ja tarjoaa menetelmiä sen tallentamiseen ja lataamiseen. Tässä on koodi:

luokkaaGameState:
def__sen sisällä__(itse):
self.player_x = 0

Pelitietojen tallentaminen

Tallenna pelitiedot laajentamalla GameWindow luokkaan ja lisää menetelmä pelin tilan tallentamiseksi tarvittaessa. Käytä JSON-muotoa yksinkertaisuuden vuoksi. Tässä on koodi:

Vuonna tallentaa pelin menetelmä, luo Python-sanakirja sisältää asiaankuuluvat pelitiedot. Sarjaa se sitten JSON-tiedostoksi nimeltä save.json.

tuonti json

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
self.game_state = GameState()

deftallentaa pelin(itse):
data = {
'player_x': self.game_state.player_x
}
kanssa avata("save.json", 'w') kuten tiedosto:
json.dump (data, tiedosto)
tulostaa (data)

defon_draw(itse):
arcade.start_render()
arcade.draw_rectangle_filled (self.game_state.player_x,
50, 50, 50, sininen)

defpäivittää(itse, delta_aika):
kulkea

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.game_state.player_x -= PELAAJAN_NOPEUS
elif avain == arcade.key. OIKEALLA:
self.game_state.player_x += PLAYER_SPEED
elif avain == arcade.key. S:
self.save_game()

Ladataan pelitietoja

Lataa pelitiedot laajentamalla GameWindow luokkaa edelleen ja lisää menetelmä pelin tilan lataamiseksi. Luo uusi tiedosto nimeltä load-game.py ja lisää koodi alla olevilla päivityksillä:

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
self.game_state = GameState()
self.load_game()

deflataa peli(itse):
yrittää:
kanssa avata("save.json", 'r') kuten tiedosto:
data = json.load (tiedosto)
self.game_state.player_x = data['player_x']
paitsi FileNotFoundError:
kulkea

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. L:
self.load_game()

The lataa peli menetelmä yrittää avata save.json tiedosto ja noutaa pelitiedot. Sitten se päivittää pelin tilan ladatuilla tiedoilla. Jos tiedostoa ei ole olemassa, voit jättää poikkeuksen huomioimatta jättäen pelin oletustilan.

Sisältää lisäominaisuuksia

Voit lisätä ominaisuuksia parantaaksesi pelin tallennus- ja latausjärjestelmää.

Huippupisteiden säästäminen

Eniten tulosten tallentaminen pelitilan rinnalla on yleinen ominaisuus monissa peleissä. Sinä pystyt hallita pisteitä ja tallenna huippupisteet tämän järjestelmän avulla. Luo uusi tiedosto nimeltä high-score.py ja lisää koodi alla olevilla päivityksillä:

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
self.high_score = 0

deflataa peli(itse):
yrittää:
kanssa avata("save.json", 'r') kuten tiedosto:
data = json.load (tiedosto)
tulostaa (data)
self.player_x = data.get('player_x', self.player_x)
self.high_score = data.get('ennätys', self.high_score)
paitsi FileNotFoundError:
kulkea

deftallentaa pelin(itse):
data = {
'player_x': self.player_x,
'ennätys': self.high_score
}
kanssa avata("save.json", 'w') kuten tiedosto:
json.dump (data, tiedosto)
tulostaa (data)

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= PLAYER_SPEED
elif avain == arcade.key. OIKEALLA:
self.player_x += PLAYER_SPEED
self.high_score += 1

Automaattinen tallennusominaisuus

Voit antaa pelaajille mielenrauhan ja estää etenemisen menettämisen tallentamalla pelin tilan automaattisesti säännöllisin väliajoin. Luo uusi tiedosto nimeltä auto-save.py ja lisää koodi alla olevilla päivityksillä:

tuonti aika

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
self.game_state = GameState()

# Tallenna 6 sekunnin välein
self.autosave_interval = 6
self.last_save_time = aika.aika()

defpäivittää(itse, delta_aika):
nykyinen_aika = aika.aika()
aika_ero = nykyinen_aika - itse.viimeinen_säästöaika

jos time_diff >= self.autosave_interval:
self.save_game()
Tulosta("Tallennettu")
self.last_save_time = nykyinen_aika

Tässä koodinpätkässä päivittää menetelmä tarkistaa, onko määritetty aikaväli kulunut viimeisestä tallennuksesta. Jos näin on, se laukaisee tallentaa pelin menetelmä GameWindow luokka tallentaaksesi pelin tilan automaattisesti. Säädä autosave_interval arvo pelisi vaatimusten mukaan.

Pelitietojen vahvistaminen

Ladattujen pelitietojen validointi on välttämätöntä niiden eheyden ja johdonmukaisuuden varmistamiseksi. Voit helposti sisällyttää tietojen validoinnin tallennus- ja latausjärjestelmäämme:

luokkaaGameState:
def__sen sisällä__(itse):
self.player_x = 0

defsave_tila(itse):
jos self.is_valid_state():
data = {
'player_x': self.player_x
}

kanssa avata("save.json", 'w') kuten tiedosto:
json.dump (data, tiedosto)

defload_state(itse):
kanssa avata("save.json", 'r') kuten tiedosto:
data = json.load (tiedosto)

jos self.validate_loaded_data (data):
self.player_x = data['player_x']
muu:
Tulosta("Virhe!")

defon_valid_state(itse):
# Suorita vahvistuslogiikka tässä
# Palauta True, jos tila on kelvollinen, False muussa tapauksessa
kulkea

defvalidate_loaded_data(itse, data):
# Suorita ladattujen tietojen validointi
# Palauta True, jos tiedot ovat kelvollisia, False muussa tapauksessa
kulkea

Kun sisällytät nämä lisäominaisuudet tallennus- ja latausjärjestelmään, voit luoda monipuolisemman ja kestävämmän pelin kokemus, joka tarjoaa pelaajille mahdollisuuden tallentaa useita pelitiloja, seurata huipputuloksia, ottaa käyttöön automaattisen tallennuksen ja varmistaa datan eheys.

Tallenna ja lataa -järjestelmän parhaat käytännöt

Tallenna ja lataa -järjestelmän käyttöönotto on tärkeä osa pelin kehitystä. Vahvan ja luotettavan järjestelmän varmistamiseksi on tärkeää noudattaa parhaita käytäntöjä. Tässä on joitain keskeisiä käytäntöjä, jotka on otettava huomioon:

Salaa arkaluontoiset tiedot

Jos pelisi sisältää arkaluontoisia tietoja, kuten salasanoja, henkilökohtaisia ​​tietoja tai sovelluksen sisäisiä ostoksia, on tärkeää salata tallennettu pelitila. Salaus lisää ylimääräisen suojauskerroksen, joka suojaa pelaajan yksityisyyttä ja estää luvattoman pääsyn heidän tietoihinsa. Käytä salausalgoritmeja ja kirjastoja arkaluonteisten tietojen suojaamiseen.

Vahvista ladatut tiedot

Ennen pelitietojen lataamista on tärkeää tarkistaa ne sen eheyden ja johdonmukaisuuden varmistamiseksi. Varmista, että ladatut tiedot noudattavat pelisi odotettua muotoa, rakennetta ja rajoituksia.

Suorita kriittisten tietokenttien validointitarkistuksia välttääksesi kaatumiset tai huijaukset. Ota käyttöön vankat tietojen validointimekanismeja mahdollisten virheiden tai odottamattomien tietojen käsittelemiseksi.

Käsittele virheet hienosti

Tiedostojen I/O-toimintoja käsiteltäessä voi tapahtua virheitä. On erittäin tärkeää käsitellä näitä virheitä sulavasti ja antaa soittimelle informatiivisia virheilmoituksia. Ota kiinni ja käsittele poikkeuksia, kuten FileNotFoundError tai PermissionError, tallennus- ja lataustoimintojen aikana.

Näytä käyttäjäystävälliset virheilmoitukset, jotka ohjaavat pelaajia ja estävät turhautumisen. Harkitse myös virhelokien käyttöönottoa ongelmien diagnosoimiseksi ja korjaamiseksi.

Testaa tallennus- ja lataustoimintoja

Testaa huolellisesti pelisi tallennus- ja lataustoimintoja varmistaaksesi sen luotettavuuden ja oikeellisuuden. Luo testitapauksia, jotka kattavat erilaisia ​​skenaarioita, kuten tallentamisen eri pelitiloissa, lataamisen kelvollisista ja virheellisistä tallennustiedostoista ja testausreunatapauksia.

Tarkista, että pelin tila on tallennettu ja ladattu oikein ja että odotettu toiminta tapahtuu. Automaattiset testauskehykset voivat auttaa luomaan kattavia testipaketteja.

Tee peleistä hauskempia Tallenna ja lataa -järjestelmän avulla

Tallenna ja lataa -järjestelmän lisääminen voi tehdä peleistä kiinnostavampia tarjoamalla pelaajille jatkuvuuden ja edistymisen tunteen. Pelaajat voivat kokeilla vapaasti, kokeilla erilaisia ​​lähestymistapoja ja palata peliin myöhemmin menettämättä saavutuksiaan.

Tämän ominaisuuden avulla pelaajat voivat myös kilpailla ystävien kanssa tai haastaa itsensä päihittämään aiemmat huippupisteensä, mikä lisää peliisi uusittavuutta ja pitkäaikaista sitoutumista.