Naučte se, jak vytvořit jednoduchou hru s Pythonem!

Toto je příspěvek člena týmu Tutorial Juliana Meyera, 13letého vývojáře Pythonu. Najdete ho na Google+ a Twitteru.

Přemýšleli jste někdy, jak se vytvářejí videohry? Není to tak složité, jak si myslíte!

v tomto tutoriálu vytvoříte jednoduchou hru nazvanou zajíčci a jezevci, kde hrdina, zajíček, musí bránit hrad před útočící hordou jezevců., : O

Chcete-li napsat tuto hru, budete používat Python. Ne, nemluvím o velkém hadovi! :]

Python je počítačový programovací jazyk. Pro tento tutoriál jsme si vybrali Python, protože je to jednoduchý jazyk, se kterým můžete začít, a je zábavný a snadno se učí.

Pokud jste v Pythonu noví, než začnete, podívejte se na tuto knihu: myslete na Python: jak myslet jako počítačový vědec. To by tě mělo dostat do rychlosti.

pak se ponořte zpět a připravte se-mezi zajíčky a jezevci přichází válka. Pokračujte ve čtení, abyste skočili do boje!,

Začínáme: instalace Pythonu

Chcete-li vyzkoušet tento tutoriál v počítači se systémem Windows, musíte nainstalovat Python. Ujistěte se, že uchopíte verzi 2.7.3 a ne verzi 3.3.0! Po spuštění instalačního programu byste měli mít nečinnost ve složce Všechny programy v nabídce start. Spusťte nečinnost, abyste mohli začít.

Pokud jste na počítači Mac, máte již nainstalován Python! Stačí otevřít terminál (/aplikace/nástroje / terminál.aplikace), zadejte python a stiskněte klávesu Enter.

Poznámka: Pokud nainstalujete Python z Pythonu.,org (a možná budete muset, pokud chcete, aby PyGame fungovala), pak budete mít také přístup k nečinnosti na počítači Mac. Mělo by být ve složce „/Applications/Python 2.7“.

Pokud jste to udělal správně, měl by jsi vidět něco jako toto:

Poznámka: Pokud chcete opustit Python řádku (triple lomených závorkách, >>>), můžete buď zadejte příkaz exit() v Pythonu řádku a stiskněte tlačítko zpět, nebo můžete stisknout Ctrl+D.,

jakmile jste na řádku Python, Chcete-li otestovat, zda Python funguje správně, zadejte tisk 1+1 a stiskněte klávesu Enter/Return. Měl by vytisknout 2. Právě jste napsali svůj první program Python!

Nyní, když víte, že Python pracuje správně, musíte nainstalovat PyGame, abyste mohli napsat hru pomocí Pythonu.

PyGame je Python knihovna, která dělá psaní her mnohem jednodušší! Poskytuje funkce, jako je manipulace s obrázky a přehrávání zvuku, které můžete snadno začlenit do své hry.,

přejděte sem a stáhněte si instalační program PyGame vhodný pro váš systém. Ujistěte se, že si stáhnete verzi Python 2.7.

Poznámka: instalační program PyGame z výše uvedeného odkazu nebude fungovat s výchozím Pythonem od společnosti Apple, který je nainstalován na počítači Mac. Budete muset stáhnout Python z python.org a nainstalujte jej, abyste mohli používat PyGame. Nebo můžete nainstalovat Python i PyGame přes MacPorts.

Chcete-li ověřit, zda jste PyGame správně nainstalovali, otevřete IDLE nebo spusťte Python přes terminál a zadejte import pygame na řádku Python., Pokud to nevede k žádnému výstupu, pak jste dobří.

Pokud na druhé straně vydá chybu, jako je to, co je uvedeno níže, pak PyGame není nainstalována.

Pokud se objeví taková chyba, zveřejněte na fórech a já vám pomůžu pracovat.

Běží Python Kód ze Souboru

i Když můžete spustit krátké kousky Python kód v Pythonu řádku, pokud chcete pracovat na větší program (jako hra), budete pravděpodobně chtít uložit své kód do souboru, takže nemusíte psát to znovu a znovu.

existuje několik způsobů, jak spustit program Python jako soubor., Jedním ze způsobů je použití prostého textového editoru, jako je Poznámkový blok (Windows) nebo TextEdit (Mac). Otevřete nový textový soubor, zadejte kód Pythonu (například tisk 1+1). Pak ji uložte jako XXX.py (XXX může být jakýkoli popisný název souboru).

pak v systému Windows poklepejte na tento soubor a spusťte jej. V systému Mac otevřete terminál a zadejte python, poté přetáhněte soubor, který jste uložili, do okna terminálu a stiskněte klávesu Enter.

dalším způsobem je zadat kód pomocí nečinného editoru, což je to, co budete dělat v tomto tutoriálu. Chcete-li spustit nečinnost, jednoduše zadejte nečinnost z terminálu., Poté vyberte Soubor \ Nové okno z nabídky nečinnosti a měli byste mít okno textového editoru, kde můžete zadat kód Pythonu. Změny kódu můžete uložit pomocí souboru \ Uložit a dokonce spustit kód pomocí modulu Run \ Run (F5).

Upozorňujeme, že nabídka spustit je k dispozici pouze v případě, že máte soubor otevřený v okně editoru.

přidání herních zdrojů

jste téměř připraveni vytvořit hru. Ale co je to hra bez nějaké skvělé grafiky a zvukových efektů? Sestavil jsem všechny grafické a zvukové efekty, které budete potřebovat pro vaši hru, do archivu ZIP. Můžete si ji stáhnout zde.,

Jakmile jste si stáhli soubor, vytvořit složku pro své hry na pevný disk a rozbalte složku prostředky do této složky tak, že vaše hra složka má podsložky pojmenované zdrojů, s různými zdroji seskupeny do další složky uvnitř ní, jako je tato:

nyní Jste připraveni začít vytvářet Králíčky a Jezevci. :]

Krok 1: Ahoj Bunny

spusťte nečinnost a otevřete nové okno textového editoru, Jak je uvedeno v předchozí části., Zadejte následující kód do okna editor:

Uložte soubor do složky hry (ten, kde zdroje podadresáře) a název game.py.

Pojďme si projít kód oddílu-by-sekce:

  1. Import PyGame knihovny. To vám umožní používat funkce z knihovny ve vašem programu.
  2. inicializovat PyGame a nastavit okno Zobrazení.
  3. načtěte obrázek, který budete používat pro zajíčka.
  4. Pokračujte ve smyčce nad následujícím odsazeným kódem.,

    Poznámka: tam, Kde jiné jazyky, jako je Objective-C, Java nebo PHP použít složené závorky ukázat blok kódu, které mají být provedeny v rámci while nebo if, Python používá odsazení identifikovat bloky kódu. Takže správné odsazení je v Pythonu velmi důležité-mějte to na paměti. :]

  5. vyplňte obrazovku černou, než něco nakreslíte.
  6. přidejte obrázek zajíčka, který jste vložili na obrazovku na x=100 a y=100.
  7. Aktualizujte obrazovku.
  8. zkontrolujte všechny nové události a pokud existuje, a jedná se o příkaz ukončit, ukončete program.,

    Poznámka: Podle dokumentace PyGame byste neměli volat pygame.ukončete (), protože tlumočník jej automaticky zavolá, když se tlumočník vypne. Nicméně, alespoň na Mac OS, hra by viset na výstupu, pokud pygame.quit () byl povolán.

Pokud narazíte na kód (přes Run\Run Modul v Nečinnosti menu), uvidíte obrazovku podobnou té níže:

w00t zajíček je na scéně, a připraven k akci!

ale hra vypadá děsivě a osaměle s zajíčkem, který tam stojí na černém pozadí., Je čas to trochu přetvařovat. :]

Krok 2: Přidejte scenérii

začněme přidáním pozadí do herní scény. To lze provést pomocí několika dalších obrazovek.blit ().

na konci sekce #3 Přidejte po načtení obrázku přehrávače následující Kód:

grass = pygame.image.load("resources/images/grass.png")castle = pygame.image.load("resources/images/castle.png")

načte obrázky a vloží je do specifických proměnných. Nyní je třeba je nakreslit na obrazovce. Pokud však zkontrolujete obrázek trávy, všimnete si, že nepokryje celou plochu obrazovky, která je 640 x 480., To znamená, že musíte obkladat trávu přes oblast obrazovky, abyste ji úplně zakryli.

Přidejte následující kód game.py na začátku sekce #6 (předtím, než hráč je nakreslena na obrazovce):

Jak můžete vidět, pro prohlášení smyčky přes x první. Pak, v rámci toho pro smyčku, to smyčky přes y a kreslí trávu na X a Y hodnoty generované for smyček. Další pár řádků stačí nakreslit hrady na obrazovce.

Pokud spustíte program, měli byste dostat něco jako tohle:

Mnohem lepší – to začíná vypadat dobře!, :]

Krok 3: udělejte zajíček tah

Dále musíte přidat některé skutečné herní prvky, jako je například reakce zajíčka na stisknutí kláves.

nejprve budete realizovat dobrý způsob, jak sledovat, které klávesy jsou stisknuté v daném okamžiku. Můžete to udělat jednoduše tím, že řadu klíčových stavů, které drží stav každého klíče, který chcete použít pro hru.

Přidejte následující kód game.py na konci sekce č. 2 (po nastavení výšky a šířky obrazovky):

keys = playerpos=

Tento kód je docela samo-vysvětlující., Pole klíče sleduje stisknuté klávesy v následujícím pořadí: WASD. Každá položka v poli odpovídá jednomu klíči-prvnímu W, druhému A a tak dále.

proměnná playerpos je místo, kde program kreslí hráče. Vzhledem k tomu, že hra přesune hráče na různé pozice, je snazší mít proměnnou, která obsahuje pozici hráče, a pak jednoduše nakreslit hráče na této pozici.

nyní musíte upravit stávající kód pro kreslení přehrávače, abyste mohli použít novou proměnnou playerpos., Změňte následující řádek v sekci #6:

 screen.blit(player, (100,100))

:

 screen.blit(player, playerpos)

Next, update klíče pole na základě které klávesy jsou stisknuté. PyGame usnadňuje detekci stisknutí kláves přidáním události.klíčové funkce.

na konci sekce #8, hned za blokovou kontrolou události.Typ= = pygame.Ukončete, vložte tento kód (na stejné úrovni odsazení jako pygame.QUIT if block):

Wow! To je spousta řádků kódu. Pokud ji však rozdělíte do prohlášení if, není to tak složité.,

nejprve zkontrolujte, zda je klávesa stisknuta nebo uvolněna. Poté zkontrolujete, která klávesa je stisknuta nebo uvolněna, a pokud je stisknutá nebo uvolněná klávesa jednou z kláves, které používáte, odpovídajícím způsobem aktualizujete proměnnou klíče.

nakonec je třeba aktualizovat proměnnou playerpos v reakci na stisknutí kláves. To je vlastně velmi jednoduché.

přidejte následující kód na konec hry.,py (s jednu úroveň odsazení, uvedení na stejné úrovni, jako pro smyčky):

 # 9 - Move player if keys: playerpos-=5 elif keys: playerpos+=5 if keys: playerpos-=5 elif keys: playerpos+=5

Tento kód jednoduše kontroly, které klávesy jsou stisknuté a přidá nebo odečte od hráče, x a y pozice (v závislosti na stisknutí klávesy) pohyb hráče.

spusťte hru a měli byste získat hráče stejně jako předtím. Zkuste stisknout WASD. Jupí! Funguje to.,

Krok 4: Zapnutí Bunny

Ano, váš králíček nyní se pohybuje při stisknutí klávesy, ale nebylo by to být ještě lepší, kdyby jste mohli pomocí myši otáčet bunny tvář a směr vašeho výběru, takže není čelí stejným způsobem? Je to dost jednoduché implementovat pomocí trigonometrie.,

podívejte se na následující obrázek:

na obrázku výše, pokud (5,3) je pozice zajíček a (2,4) je aktuální pozice myši, můžete najít úhel rotace (z) použitím goniometrické funkce atan2, aby se rozdíl ve vzdálenosti mezi dvěma body. Samozřejmě, jakmile znáte úhel natočení,můžete králíka jednoduše otočit. :]

Pokud jste o této části trochu zmateni, nebojte se – stejně můžete pokračovat. Ale to je důvod, proč byste měli věnovat pozornost ve třídě matematiky!, :] Budete používat tyto věci po celou dobu v programování her.

nyní musíte tento koncept aplikovat na vaši hru. K tomu můžete použít povrch PyGame.otočit (stupně) funkce. Mimochodem, mějte na paměti, že hodnota Z je v radiánech. : A co nechat zajíčka střílet nepřátele pomocí šipek? To není žádný mírný králík!

Tento krok je trochu složitější, protože musíte sledovat všechny šípy, aktualizovat je, otáčet je, a odstranit je, když jdou mimo obrazovku.,

za Prvé, přidejte potřebné proměnné na konec inicializační části, oddílu #2:

acc=arrows=

první proměnná udržuje hráče přesnost a druhé pole sleduje všechny šípy. Proměnná přesnosti je v podstatě seznam počtu vypálených výstřelů a počtu zasažených jezevců. Později budeme tyto informace používat k výpočtu procenta přesnosti.

Next, vložte šipku obrázek na konci sekce č. 3:

arrow = pygame.image.load("resources/images/bullet.png")

Nyní, když uživatel klikne myší, šipka musí vyhodit., Přidat následující konec oddílu #8 jako nový event handler:

Tento kód kontroluje, zda myši bylo kliknuto, a pokud to bylo, tak to dostane myši pozici a vypočítá šipka otáčení na základě otáčet pozici hráče a na pozici kurzoru. Tato hodnota rotace je uložena v poli šipek.

Dále musíte skutečně nakreslit šipky na obrazovce. Přidejte následující kód hned za Oddíl # 6.1:

hodnoty vely a velx se vypočítají pomocí základní trigonometrie. 10 je rychlost šipek., Příkaz if pouze zkontroluje, zda je kulka mimo hranice a pokud ano, odstraní šipku. Druhý pro výpis smyčky přes šipky a kreslí je se správnou rotací.

zkuste spustit program. Měli byste mít zajíček, který střílí šipky, když kliknete myší! : D

Krok 6: vezměte zbraně! Jezevci!

OK, máte hrad a máte hrdinu, který se může pohybovat a střílet. Takže co chybí? Nepřátelé, kteří útočí na hrad, že hrdina může střílet na!,

v tomto kroku vytvoříte náhodně generované jezevce, které běží na zámku. V průběhu hry bude stále více jezevců. Takže, pojďme si vytvořit seznam toho, co budete potřebovat, aby to udělat.

  1. přidat padouchy do seznamu pole.
  2. Aktualizujte pole bad guy každý snímek a zkontrolujte, zda jsou mimo obrazovku.
  3. ukázat padouchy.

snadné, že?, :]

za Prvé, přidejte následující kód na konec oddílu #2:

badtimer=100badtimer1=0badguys=]healthvalue=194

výše uvedené nastaví časovač (stejně jako několik dalších hodnot) tak, že hra přidává novou jezevec po uplynutí určité doby. Snížíte badtimer každý snímek, dokud není nula a pak budete plodit nový jezevec.

přidat následující konec oddílu č. 3:

badguyimg1 = pygame.image.load("resources/images/badguy.png")badguyimg=badguyimg1

první řádek výše je podobný jako všechny předchozí obrázek-vkládání kódu. Druhý řádek nastavuje kopii obrázku, takže můžete mnohem snadněji animovat padoucha.,

Dále musíte aktualizovat a ukázat padouchy. Přidejte tento kód hned za oddíl # 6.2:

spousta kódu přejít. :] První řádek zkontroluje, zda je badtimer nulový, a pokud ano, vytvoří jezevec a nastaví badtimer znovu na základě toho, kolikrát badtimer dosud běžel. První Pro loop aktualizuje pozici X jezevce, zkontroluje, zda je jezevec mimo obrazovku, a odstraní jezevec, pokud je mimo obrazovku. Druhý pro smyčku čerpá všechny jezevce.

Chcete-li použít náhodnou funkci ve výše uvedeném kódu, musíte také importovat náhodnou knihovnu., Takže přidat následující konec oddílu #1:

import random

a Konečně, přidejte tento řádek hned po chvíli prohlášení (§#4) snížit hodnotu badtimer pro každý rám:

badtimer-=1

Zkuste tento kód se spuštěním hry. Nyní byste měli začít vidět nějakou skutečnou hru-můžete střílet, pohybovat se, otáčet se a jezevci se na vás snaží běžet.

ale počkejte! Proč jezevci nevyfukují hrad? Pojďme to rychle přidat…

přidejte tento kód těsně před indexem + =1 na první smyčce v sekci # 6.,3:

tento kód je poměrně jednoduchý. Pokud je hodnota x jezevce menší než 64 vpravo, odstraňte toho padoucha a snižte hodnotu zdraví hry o náhodnou hodnotu mezi 5 a 20. (Později se zobrazí aktuální zdravotní hodnotu na obrazovce.)

pokud sestavíte a spustíte program, měli byste dostat spoustu útočících jezevců, kteří zmizí, když narazí na hrad. I když to nevidíte, jezevci ve skutečnosti snižují vaše zdraví.,

Krok 7: Kolize s Jezevci a Šípy

jezevci útočí na váš hrad, ale své šípy na ně nemají vliv! Jak má králíček bránit svůj domov?

čas nastavit šipky zabít jezevce, takže si můžete chránit svůj hrad a vyhrát hru! V podstatě, budete muset smyčku přes všechny padouchy a uvnitř každého z těchto smyček, budete muset smyčku přes všechny šipky a zkontrolujte, zda se srazí. Pokud ano, odstraňte jezevec, odstraňte šipku a přidejte ji do poměru přesnosti.

hned za oddílem #6.3.,1, přidejte toto:

v tomto kódu je třeba poznamenat pouze jednu důležitou věc. Příkaz if je vestavěná funkce PyGame, která kontroluje, zda se protínají dva obdélníky. Dalších pár řádků dělá to, co jsem vysvětlil výše.

Pokud spustíte program, měli byste být konečně schopni střílet a zabíjet jezevce.

Krok 8: Přidejte HUD s měřičem zdraví a hodinami

hra postupuje docela dobře. Máte své útočníky a máte svého obránce. Nyní vše, co potřebujete, je způsob, jak udržet skóre a ukázat, jak dobře zajíček dělá.,

nejjednodušší způsob, jak to udělat, je přidat HUD (Heads Up Display), který zobrazuje aktuální zdravotní úroveň hradu. Můžete také přidat hodiny ukázat, jak dlouho hrad přežil.

nejprve přidejte hodiny. Přidejte následující kód před začátkem bod #7:

výše uvedený kód prostě vytváří nové písmo pomocí výchozí PyGame písmo nastavit velikost 24. Pak se toto písmo používá k vykreslení textu času na povrch. Poté je text umístěn a nakreslen na obrazovce.

Dále přidejte lištu zdraví., Ale před nakreslením zdravotní lišty musíte načíst obrázky pro lištu. Na konec sekce #3 Přidejte následující Kód:

healthbar = pygame.image.load("resources/images/healthbar.png")health = pygame.image.load("resources/images/health.png")

první je červený obrázek použitý pro celý řádek zdraví. Druhým je zelený obrázek používaný k zobrazení aktuální úrovně zdraví.

přidejte následující kód po sekci #6.4 (který jste právě přidali) čerpat zdravotní bar na obrazovce:

 # 6.5 - Draw health bar screen.blit(healthbar, (5,5)) for health1 in range(healthvalue): screen.blit(health, (health1+8,8))

kód první kreslí all-červené zdravotní bar. Pak čerpá určité množství zeleně nad barem,podle toho, kolik života zámek zbývá.,

pokud sestavíte a spustíte program, měli byste mít časovač a zdravotní lištu.

Krok 9: Win nebo Lose

ale co je to? Pokud hrajete dostatečně dlouho, i když vaše zdraví klesne na nulu, hra stále pokračuje! Nejen to, můžete i nadále střílet na jezevce, také. To nebude fungovat, že ne? Potřebujete nějaký scénář win/lose, aby hra stála za to hrát.

takže pojďme přidat výhru a ztratit stav, stejně jako vyhrát nebo ztratit obrazovku. :] Uděláte to tak, že opustíte hlavní smyčku a vstoupíte do smyčky win/lose., Ve smyčce win/lose musíte zjistit, zda uživatel vyhrál nebo ztratil, a podle toho zobrazit obrazovku.

Zde je základní přehled výhra/prohra scénáře:

Když čas je nahoru (90000 ms nebo 90 sekund), pak:

  • Zastavit běžící hru
  • Nastavit výsledku hra pro 1 nebo vyhrát

Pokud hradu je zničena, pak:

  • Zastavit běžící hru
  • Nastavit výsledku hra pro 1 nebo vyhrát

Vypočítat přesnost v obou směrech.

Poznámka: acc * 1.0 právě převádí acc na plovák., Pokud to neuděláte, divize operand a vrátí celé číslo, jako je 1 nebo 2 místo vznášet se jako 1.5

Přidejte tyto řádky na konec game.py:

Toto je nejdelší kus kódu, ještě! Ale není to tak složité.

první if prohlášení kontroluje, zda je čas vypršel. Druhý kontroluje, zda je hrad zničen. Třetí vypočítá poměr přesnosti. Poté rychlé prohlášení if zkontroluje, zda jste vyhráli nebo ztratili, a zobrazí správný obrázek.

samozřejmě, pokud chcete zobrazit obrázky pro obrazovky win a lose, musí být tyto obrázky nejprve načteny., Takže přidejte následující kód na konec sekce #3:

gameover = pygame.image.load("resources/images/gameover.png")youwin = pygame.image.load("resources/images/youwin.png")

ještě jedna rychlá věc. Změna sekce č. 4 z:

# 4 - keep looping throughwhile 1: badtimer-=1

:

# 4 - keep looping throughrunning = 1exitcode = 0while running: badtimer-=1

běh proměnná sleduje, když hra je u konce a kód ukončení proměnná sleduje, zda hráč vyhrál nebo prohrál.

spusťte hru znovu a nyní můžete buď triumfovat,nebo zemřít! Pohoda. :]

Krok 10: bezdůvodná Hudba a zvukové efekty!

hra vypadá docela dobře, ale jak to zní? Je trochu ticho, že?, Přidání některých zvukových efektů může změnit celý pocit hry.

PyGame dělá načítání a přehrávání zvuků super jednoduché. Za prvé, budete muset inicializovat mixéru přidáním na konci oddílu #2:

pygame.mixer.init()

Pak nahrát zvuky a nastavit hlasitost na konci sekce č. 3:

výše uvedený kód je jednoduše načítání zvukových souborů a nastavení audio úrovně hlasitosti. Ale věnujte pozornost pygame.směšovač.hudba.load line – tento řádek načte hudbu na pozadí pro hru a další řádek nastaví hudbu na pozadí opakovat navždy.,

, která se stará o konfiguraci zvuku. :] Nyní vše, co musíte udělat, je hrát různé zvukové efekty podle potřeby. Udělej to podle návodu v komentářích na kód níže:

Spustit hru ještě jednou a všimněte si, že nyní máte hudbu na pozadí a zvukové efekty pro kolize a fotografování. Hra cítí, že mnohem živější! :]

kam jít odtud?

měli Byste být na sebe hrdý: jste právě dokončili vytvoření zábavné hry baleny s hudbou, zvukové efekty, vrah králík, kamikaze, jezevci a další. Říkal jsem ti, že to dokážeš!, :]

konečný zdrojový kód hry si můžete stáhnout zde.

v tomto bodě, neváhejte rozšířit tuto hru do své vlastní tvorby! Možná zkuste nahradit umění vlastními kresbami nebo přidat do hry Různé zbraně nebo typy příšer!

máte nějaké dotazy nebo připomínky k tomu, co jste udělali v tomto tutoriálu? Pokud ano, připojte se k diskusi na fórech! Rád bych od vás slyšel.


Toto je příspěvek člena týmu Tutorial Juliana Meyera, 13letého vývojáře Pythonu.

raywenderlich.,com Týdně

raywenderlich.com newsletter je nejjednodušší způsob, jak zůstat up-to-date na vše, co potřebujete vědět jako mobilní vývojáře.

Získejte týdenní přehled našich výukových programů a kurzů a získejte bezplatný hloubkový e-mailový kurz jako bonus!

Průměr

4.1/5

Přidat hodnocení pro tento obsah

přihlaste se pro přidání hodnocení

15 hodnocení

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *