Hogyan hozzunk létre egy 2D-s játék Python és az Arcade library

Python egy kiváló nyelv az emberek tanulási program, és tökéletes, hogy bárki akar “dolgokat tenni”, és nem töltenek rengeteg időt boilerplate kódot. Arcade egy Python könyvtár létrehozására 2D-s videojátékok, hogy könnyű elkezdeni használni, és nagyon képes, ahogy tapasztalatokat szerezni. Ebben a cikkben elmagyarázom, hogyan kell elkezdeni a Python és Arcade használatát a videojátékok programozásához.

elkezdtem fejlesztés Arcade tanítás után a diákok a PyGame könyvtár., Majdnem 10 évig tanítottam személyesen a PyGame-ot, és fejlődtem. ProgramArcadeGames.com tanítani online. A PyGame nagyszerű, de végül úgy éreztem, hogy pazarolom az időt, hogy fedezzem azokat a hibákat, amelyeket soha nem javítottak meg.

aggódtam, hogy olyan dolgokat tanítok, mint az eseményhurok, ami már nem volt az, ahogyan kódolunk. Volt egy egész szakaszom, amelyben elmagyaráztam, miért fordították meg az y-koordinátákat. Mivel PyGame ritkán frissítették, és ez alapján egy régi SDL 1 könyvtár, ahelyett, hogy valami modernebb, mint OpenGL, nem volt sok remény a jövőre nézve.,

olyan könyvtárat akartam, amely könnyebben használható, erősebb, és a Python 3 néhány új funkcióját használta, mint például a dekorátorok és a típushinting. Arcade az. És így kell elkezdeni.

telepítés

Arcade, mint sok más csomagok, keresztül érhető PyPi, ami azt jelenti, hogy telepíteni Arcade segítségével a pip parancs (vagy a pipenv parancs)., Ha már telepítve van a Python, akkor valószínűleg csak nyissa meg a parancssor a Windows és írja be:

pip install arcade

vagy MacOS és Linux Típus:

pip3 install arcade

részletesebb telepítési utasításokat, akkor olvassa el az Arcade telepítési dokumentáció.

egyszerű rajz

megnyithat egy ablakot, és egyszerű rajzokat hozhat létre néhány sornyi kóddal. Hozzunk létre egy példát, amely olyan mosolygó arcot rajzol, mint az alábbi ábra:

az alábbi szkript megmutatja, hogyan használhatja az Arcade rajzparancsait ehhez., Ne feledje, hogy nem kell tudnia, hogyan kell osztályokat használni, vagy akár funkciókat meghatározni. A gyors vizuális visszajelzéssel történő programozás nagyszerű mindenki számára, aki el akarja kezdeni a programozás tanulását.

funkciók használata

természetesen a kód írása a globális kontextusban nem jó forma. Szerencsére a program javítása a funkciók használatával egyszerű. Itt látható egy példa a rajz egy fenyőfa egy adott (x, y) helyen egy függvény segítségével:

a teljes példa, lásd rajz funkciókkal.,

a tapasztaltabb programozó tudni fogja, hogy a modern grafikus programok először a rajzinformációkat töltik be a grafikus kártyára, majd kérje meg a grafikus kártyát, hogy később tételként rajzolja meg. Arcade támogatja ezt is. Rajz 10.000 téglalapok egyenként körülbelül 0.800 másodperc. Rajz őket, mint egy tétel kevesebb, mint 0,001 másodperc.

az Ablakosztály

nagyobb programok általában az Ablakosztályból származnak, vagy dekorátorokat használnak. Ez lehetővé teszi a programozó számára, hogy kódot írjon a felhasználó rajzolásának, frissítésének és bevitelének kezelésére., A sablon egy kezdő Window – alapú program alatt.

aWindow osztálynak számos módja van, amelyeket a programok felülírhatnak a Program funkcionalitásának biztosítása érdekében. Íme néhány a leggyakrabban használt:

  • on_draw: a képernyő rajzolásához szükséges összes kód itt található.
  • update: a játék logikájának mozgatásához szükséges összes kód itt található. Ezt másodpercenként körülbelül 60-szor hívják.,
  • on_key_press: kezelje az eseményeket egy gomb megnyomásakor, például adjon egy játékosnak sebességet.
  • on_key_release: kezelje, amikor egy kulcs felszabadul, itt megakadályozhatja a játékos mozgását.
  • on_mouse_motion: ezt minden alkalommal hívják, amikor az egér mozog.
  • on_mouse_press: egérgomb megnyomásakor hívják.
  • set_viewport: ezt a funkciót görgetős játékokban használják, ha sokkal nagyobb a világ, mint amit egy képernyőn lehet látni., A set_viewport hívás lehetővé teszi a programozó számára, hogy beállítsa, hogy a világ melyik része jelenleg látható.

Sprites

Sprites egy egyszerű módja annak, hogy hozzon létre egy 2D bitmapped objektum Arcade. Az Arcade-nek olyan módszerei vannak, amelyek megkönnyítik a Sprite rajzolását, mozgatását és animálását. A spritek segítségével könnyedén észlelheti az objektumok közötti ütközéseket.

létrehozása sprite

létrehozása például Arcade Sprite osztály ki egy grafikus könnyű. A programozónak csak a kép fájlnevére van szüksége ahhoz, hogy a sprite-ot le lehessen alapozni, opcionálisan pedig egy számot a kép felfelé vagy lefelé történő méretezéséhez., Például:

SPRITE_SCALING_COIN = 0.2
coin = arcade.Sprite("coin_01.png", SPRITE_SCALING_COIN)

Ez a kód létrehoz egy sprite-ot a coin_01.png – ban tárolt kép segítségével. A kép az eredeti magasság és Szélesség 20% – ára lesz méretezve.

Sprite listák

a sprite-ok általában listákba vannak rendezve. Ezek a listák megkönnyítik a spritek kezelését. Sprites egy listában fogja használni OpenGL kötegelt-felhívni a Sprite, mint egy csoport. Az alábbi kód létrehoz egy játékot egy játékossal,valamint egy csomó érmét a játékos számára. Két listát használunk, egyet a játékosnak, egyet az érméknek.,

mi könnyen felhívni az összes érmét az érme listák:

def on_draw(self):
""" Draw everything """
arcade.start_render()
self.coin_list.draw()
self.player_list.draw()

kimutatására sprite ütközések

a funkció check_for_collision_with_list lehetővé teszi számunkra, hogy ha egy sprite fut egy másik sprite egy listában. Tudjuk használni ezt, hogy az összes érmét a játékos sprite érintkezik. Egy egyszerű for hurok segítségével megszabadulhatunk az érmétől a játékból, és növelhetjük a pontszámunkat.

a teljes példához lásd: collect_coins.py.

játékfizika

sok játék tartalmaz valamilyen fizikát., A legegyszerűbbek a felülről lefelé irányuló programok, amelyek megakadályozzák a játékos áthaladását a falakon. A platformerek bonyolultabbá teszik a gravitációt és a mozgó platformokat. Egyes játékok egy teljes 2D fizikai motort használnak tömeggel, súrlódással, rugókkal stb.

felülről lefelé játékok

az egyszerű felülről lefelé alapú játékokhoz egy Arcade programnak olyan falak listájára van szüksége, amelyeken a játékos (vagy bármi más) nem tud mozogni. Ezt általában wall_list – nak hívom., Ezután egy fizikai motor jön létre a Window osztály beállítási kódjában:

self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list)

a player_sprite két attribútummal rendelkező mozgásvektort kap és change_y. Egy egyszerű példa erre az lenne, hogy a játékos mozog a billentyűzeten. Például ez lehet a Window osztály egyéni gyermeke:

bár ez a kód beállítja a játékos sebességét, nem mozgatja a lejátszót., Aupdate módszer aWindow osztály, amelybenphysics_engine.update() mozog a játékos, de nem a falakon keresztül.

def update(self, delta_time):
""" Movement and game logic """
self.physics_engine.update()

a teljes példát lásd sprite_move_walls.py.

Platformers

az oldalnézeti platformerre való áttérés meglehetősen egyszerű. A programozónak csak át kell váltania a fizikai motort PhysicsEnginePlatformer – ra, majd hozzá kell adnia a gravitációs állandót.

self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
self.wall_list,
gravity_constant=GRAVITY)

használhat olyan programot, mint a csempézett, hogy a szintet alkotó csempéket/blokkokat elhelyezze.

például lásd: sprite_tiled_map.,py.

a teljes 2D fizika integrálhatja a PyMunk könyvtár.

Tanulj példával

a tanulás egyik legjobb módja a példa. Az Arcade könyvtár hosszú listát tartalmaz azokról a példaprogramokról, amelyeket egy személy rajzolhat játékok létrehozására. Ezek a példák mindegyike olyan játékkoncepciót mutat, amelyet a diákok az osztályaimban vagy az interneten kértek az évek során.

ezeknek a demóknak a futtatása egyszerű, ha az Arcade telepítve van., Mindegyik mintának van egy megjegyzése A program elején egy parancs segítségével beírhatja a parancssorba a minta futtatásához, például:

python -m arcade.examples.sprite_moving_platforms

összefoglaló

Az Arcade lehetővé teszi a grafika és a játékok programozását könnyen érthető kóddal. Sok új programozó nagyszerű játékokat hozott létre nem sokkal az indulás után. Próbáld meg!

Ha többet szeretne megtudni, vegyen részt Paul Vincent Craven beszélgetésében, könnyű 2d játék létrehozása Arcade-vel, a PyCon Cleveland 2018-ban.

Share

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük