Pane oma peategelane liikuma vastuseks mängija sisendile Arcade raamatukogu klaviatuuri ja hiire sündmustega.

Arkaad on populaarne Pythoni raamatukogu, mida saate kasutada 2D arkaadmängude loomiseks. See on lihtsalt kasutatav teek, mis pakub lihtsat raamistikku Pythoniga mängude loomiseks.

Iga mängu üks olulisi komponente on mängija liikumine.

Lihtsa mängu loomine arkaadis

Täieliku leiate kood selles GitHubi repos.

Enne alustamist veenduge, et teil on pip teie seadmesse installitud. Kasutage seda käsku arkaadteegi installimiseks:

pip installi raamatukogu

Pärast seda looge mängija klass alamklassina arkaad. Sprite klass ja a Minu Mäng klass alamklassina arkaad. Aken. The Minu Mäng klassis on meetodid mänguobjektide seadistamiseks, nende ekraanil renderdamiseks, mängu oleku värskendamiseks ja kasutaja sisendite käsitlemiseks. Mänguekraani ja mängija objekti loomise kood on järgmine:

importida arkaad

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

klassMängija(arkaad. Sprite):
def__selles__(ise):
super().__init__("player.png", 0.5)
self.center_x = SCREEN_WIDTH // 2
self.center_y = EKRAANI_KÕRGUS // 2

instagram viewer

klassMinu Mäng(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Minu mäng")
ise.mängija = Mitte ühtegi
arcade.set_background_color (arcade.color. MUST)

defseadistamine(ise):
self.player = Mängija()

defon_draw(ise):
arcade.start_render()
self.player.draw()

defvärskendada(ise, delta_aeg):
üle andma

MyGame().run()

Mängija liikumise lisamine klaviatuurisisendiga

Nüüd, kui olete loonud mänguekraani ja mängija objekti, saate mängijat liigutada vastuseks klaviatuuri sisendile. Määratlege on_key_press() ja on_key_release() meetodid, mida kutsute välja, kui mängija klahvi vajutab või vabastab.

defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player.change_x = -5
elif võti == arcade.key. PAREMALE:
self.player.change_x = 5
elif võti == arcade.key. UP:
self.player.change_y = 5
elif võti == arcade.key. ALLA:
self.player.change_y = -5

defon_key_release(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE või võti == arcade.key. PAREMALE:
self.player.change_x = 0
elif võti == arcade.key. ÜLES või võti == arcade.key. ALLA:
self.player.change_y = 0

Mängija liikumise lisamisel klaviatuurisisenditega saate liikumiskiirust kohandada, muutes sellele määratud väärtust self.player.change_x ja self.player.change_y. Samuti saate lisada tingimusi, et piirata mängija liikumist mänguekraanil.

Mängija liikumise lisamine hiire sisendiga

Lisaks klaviatuurisisenditele saate lisada mängija liikumist ka hiire sisendi abil. Määratlege on_mouse_motion() meetod, mis käivitub, kui mängija hiirt liigutab. Seadistage meetodi sees keskus_x ja keskus_y mängija objekti omadused hiire praegusesse asendisse.

defon_mouse_motion(ise, x, y, dx, dy):
self.player.center_x = x
self.player.center_y = y

Kui lisate mängija liikumise hiire sisendiga, saate kohandada mängija objekti käitumist, kui kasutaja klõpsab või hoiab hiirt all, määrates sellised meetodid nagu on_mouse_press() või on_mouse_drag(). Sõltuvalt mängumehaanikast saate kasutada neid meetodeid, et käivitada mängija tegevusi, nagu tulistamine või hüppamine.

Tutvustame lisafunktsioone

Mängija liikumist saate veelgi suurendada, võttes arvesse kiirendust ja aeglustumist. Muutke on_key_press() meetod lahutamiseks või liitmiseks muuda_x ja muutus_y mängija objekti omadused, olenevalt liikumissuunast. Määrake ka muuda_x ja muutus_y omadused 0-le on_key_release() meetod, nagu varemgi.

defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player.change_x -= 5
elif võti == arcade.key. PAREMALE:
self.player.change_x += 5
elif võti == arcade.key. UP:
self.player.change_y += 5
elif võti == arcade.key. ALLA:
self.player.change_y -= 5

defon_key_release(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE või võti == arcade.key. PAREMALE:
self.player.change_x = 0
elif võti == arcade.key. ÜLES või võti == arcade.key. ALLA:
self.player.change_y = 0

Nii nagu PyGame, saate ka seda teha lisage mängija objekti vahel kokkupõrketuvastus ja muud mänguobjektid, nagu vaenlased või takistused arkaadis. Saate seda saavutada, lisades järgmise koodi värskenda() meetod Minu Mäng klass:

defvärskendada(ise, delta_aeg):
self.player.update()

# Kontrollige kokkupõrkeid mängija ja teiste mänguobjektide vahel
kokkupõrked = arcade.check_for_collision_with_list (self.player, self.enemy_list)

jaoks kokkupõrge sisse kokkupõrked:
kokkupõrge.kill()

Tehke kaasahaaravaid mänge interaktiivse mängija liikumisega

Interaktiivne mängija liikumine on iga kaasahaarava mängu oluline aspekt. Erinevat tüüpi liikumismehaanika, nagu hüppamine, jooksmine, lendamine ja libisemine, kasutamine võib mängule vaheldust ja põnevust lisada.

Mängijatele oma liikumise üle kontrolli andmine lisab agentuuri ja keelekümbluse tunnet, mis võib tuua kaasa rahuldust pakkuvama mängukogemuse.