Tee pelihallipeleistäsi entistä nautinnollisempia ja jännittävämpiä lisäämällä satunnaisia ​​liikkuvia esineitä.

Satunnaiset liikkuvat esineet voivat tuoda jännitystä ja arvaamattomuutta peleihin. Se tekee niistä kiinnostavampia ja haastavampia pelaajille. Pythonin Arcade-kirjasto tarjoaa yksinkertaisen ja tehokkaan tavan sisällyttää satunnaisia ​​liikkuvia kohteita peleihin.

Luo yksinkertainen peli

Ennen kuin aloitat, varmista, että sinulla on pip asennettuna laitteellesi. Käytä tätä komentoa asentaaksesi pelihalli kirjasto:

pip asennus arcade

Luo sen jälkeen ikkuna käyttämällä pelihalli. Ikkuna luokkaa ja aseta taustaväriksi valkoinen.

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

Aseta soittimen sijainti näytön keskelle vaakasuoraan ja lisää pieni etäisyys yläreunasta. Voit ohjata pelaajan liikettä nuolinäppäimillä.

Tässä on peruspelimme koodi:

tuonti pelihalli

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 15

luokkaaMyGame(pelihalli. Ikkuna):


def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
arcade.set_background_color (arcade.color. VALKOINEN)

self.player_x = SCREEN_WIDTH // 2
self.player_y = PLAYER_RADIUS + 10

defon_draw(itse):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, PLAYER_RADIUS, arcade.color. SININEN)

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

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

jos __nimi__ == "__main__":
peli = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Useiden objektien lisääminen

Voit lisätä peliisi satunnaisia ​​liikkuvia objekteja luomalla luettelon objektien sijainnin tallentamiseksi ja päivittämällä ne joka kehys. Voit myös käyttää spritejä esineinä.

Lisää pelikoodiisi luettelo nimeltä esineitä tallentaaksesi satunnaisten liikkuvien kohteiden sijainnit. Luo sen jälkeen objektien lukumäärä (NUM_OBJECTS) satunnaisilla x- ja y-koordinaateilla näytön rajojen sisällä. Kohteet piirretään punaisina ympyröinä käyttämällä arcade.draw_circle_filled toiminto.

tuonti pelihalli
tuonti satunnainen

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 15
OBJECT_RADIUS = 10
NUM_OBJECTS = 10

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
arcade.set_background_color (arcade.color. VALKOINEN)

self.player_x = SCREEN_WIDTH // 2
self.player_y = PLAYER_RADIUS + 10

self.objects = []
varten _ sisään alue (NUM_OBJECTS):
x = random.randint(0, SCREEN_WIDTH)
y = random.randint(0, SCREEN_HEIGHT)
self.objects.append((x, y))

defon_draw(itse):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, PLAYER_RADIUS, arcade.color. SININEN)

varten obj sisään self.objects:
x, y = obj
arcade.draw_circle_filled (x, y, OBJECT_RADIUS, arcade.color. PUNAINEN)

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

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

jos __nimi__ == "__main__":
peli = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Alla on tulos:

Satunnaisen liikealgoritmin toteuttaminen

Jos haluat saada objektit liikkumaan satunnaisesti, päivitä niiden sijainti päivittää menetelmä käyttäen satunnaista liikealgoritmia.

Iteroi jokaisen kohteen läpi ja luo satunnaisia ​​arvoja dx ja dy, joka edustaa muutosta x- ja y-koordinaateissa. Päivitä sitten kohteen sijainti lisäämällä nämä arvot. Tässä on muokattu koodi:

defpäivittää(itse, delta_aika):
varten i sisään alue (NUM_OBJECTS):
x, y = itse.objektit[i]
dx = random.randint(-5, 5)
dy = random.randint(-5, 5)
x += dx
y += dy
self.objects[i] = (x, y)

Alla on tulos:

Esineet liikkuvat kohti pelaajaa

Jos haluat lisätä vuorovaikutusta, aseta objektit liikkumaan soitinta kohti. Voit saavuttaa tämän laskemalla kohteen ja soittimen välisen suuntavektorin ja säätämällä kohteen sijaintia vastaavasti.

Tätä varten laske x- ja y-koordinaattien erot kohteen ja soittimen välillä. Normalisoimalla nämä arvot saadaan suuntavektori. Kerro sitten tämä vektori nopeuskertoimella (tässä tapauksessa 3) ja lisää se kohteen sijaintiin. Tässä päivitetty päivittää menetelmä:

defpäivittää(itse, delta_aika):
varten i sisään alue (NUM_OBJECTS):
x, y = itse.objektit[i]
dx = self.player_x - x
dy = self.player_y - y
etäisyys = math.sqrt (dx ** 2 + dy** 2)
dx /= etäisyys
dy /= etäisyys
x += dx * 3
y += dy * 3
self.objects[i] = (x, y)

Alla on tulos:

Esineet alkavat liikkua, kun pelaaja saapuu ympäristöön

Lisää dynamiikkaa muokkaamalla koodia niin, että esineet alkavat liikkua vasta, kun pelaaja saapuu ympäröivälle alueelleen. Lisää pelaajan liikkeen koodi ja määritä säde, jonka sisällä kohteista tulee aktiivisia.

defpäivittää(itse, delta_aika):
varten i sisään alue (NUM_OBJECTS):
x, y = itse.objektit[i]
dx = self.player_x - x
dy = self.player_y - y
etäisyys = math.sqrt (dx ** 2 + dy** 2)

jos etäisyys < 100: # Säädä säde tarpeen mukaan
dx /= etäisyys
dy /= etäisyys
x += dx * 3
y += dy * 3
self.objects[i] = (x, y)

Törmäysten havaitseminen ja vuorovaikutus

Lisää nyt törmäyksentunnistus soittimen ja esineiden välille ja määritä käyttäytyminen törmäyksen sattuessa. Muokkaa päivittää tapa käsitellä törmäyksiä:

defpäivittää(itse, delta_aika):
varten i sisään alue (NUM_OBJECTS):
x, y = itse.objektit[i]
dx = self.player_x - x
dy = self.player_y - y
etäisyys = math.sqrt (dx ** 2 + dy** 2)

jos etäisyys < PLAYER_RADIUS + OBJECT_RADIUS:
# Jos törmäys tapahtui, käsittele se tässä
self.objects.pop (i)
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))

elif etäisyys < 100:
dx /= etäisyys
dy /= etäisyys
x += dx * 3
y += dy * 3
self.objects[i] = (x, y)

Satunnaisuuden tasapainottaminen

Tasapainoisen pelikokemuksen luomiseksi on tärkeää hienosäätää esineiden satunnaista liikettä ja syntyä. Tässä on muutamia esimerkkejä siitä, kuinka voit säätää koodia saadaksesi paremman tasapainon pelissäsi:

Maksiminopeuden rajoittaminen

Voit estää esineiden liikkumisen liian nopeasti ottamalla käyttöön enimmäisnopeusrajoituksen. Muokkaa päivittää menetelmä nopeusrajoitusten sisällyttämiseksi:

defpäivittää(itse, delta_aika):
varten i sisään alue (NUM_OBJECTS):
x, y = itse.objektit[i]
dx = self.player_x - x
dy = self.player_y - y
etäisyys = math.sqrt (dx ** 2 + dy** 2)

jos etäisyys < PLAYER_RADIUS + OBJECT_RADIUS:
self.objects.pop (i)
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))
elif etäisyys < 100:
dx /= etäisyys
dy /= etäisyys

nopeus = 3# Säädä nopeusarvoa tarpeen mukaan
dx = min (max (dx * nopeus, -MAX_SPEED), MAX_SPEED)
dy = min (max (dy * nopeus, -MAX_SPEED), MAX_SPEED)

x += dx
y += dy
self.objects[i] = (x, y)

Spawn-nopeuden hallinta

Voit myös hallita nopeutta, jolla uusia esineitä syntyy pelissä. Säädä koodia niin, että se sisältää viiveen uusien objektien synnyttämisen välillä:

tuonti aika

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
arcade.set_background_color (arcade.color. VALKOINEN)

self.player_x = SCREEN_WIDTH // 2
self.player_y = PLAYER_RADIUS + 10

self.objects = []
self.last_spawn_time = aika.aika()

defpäivittää(itse, delta_aika):
# ohjaa kutunopeutta täällä
jos aika.aika() - self.last_spawn_time > SPAWN_DELAY:
jos len (self.objects) < MAX_OBJECTS:
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))
self.last_spawn_time = aika.aika()

varten i sisään kantama (len (self.objects)):
x, y = itse.objektit[i]
dx = self.player_x - x
dy = self.player_y - y
etäisyys = math.sqrt (dx ** 2 + dy** 2)

jos etäisyys < PLAYER_RADIUS + OBJECT_RADIUS:
self.objects.pop (i)
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))
elif etäisyys < 100:
dx /= etäisyys
dy /= etäisyys

x += dx * 3
y += dy * 3
self.objects[i] = (x, y)

Säädä SPAWN_DELAY ja MAX_OBJECTS arvot löytääksesi oikean tasapainon peliisi. Pidempi viive tai pienempi enimmäismäärä esineitä tekee pelistä vähemmän täynnä. Sitä vastoin lyhyempi viive tai suurempi maksimi lisää vaikeutta.

Tee peleistä hauskempaa liikkuvien esineiden avulla

Satunnaisten liikkuvien esineiden lisääminen peleihin voi parantaa huomattavasti kokonaiskokemusta. Ne tuovat mukanaan arvaamattomuuden ja haasteen, mikä tekee pelistä mukaansatempaavamman ja dynaamisemman. Pelaajien on sopeuduttava ja reagoitava nopeasti välttääkseen törmäyksiä tai tarttumasta esineisiin, mikä antaa jännityksen ja saavutuksen tunteen.