Naredite svoje arkadne igre še bolj prijetne in razburljive z dodajanjem naključno premikajočih se predmetov.

Naključno premikajoči se predmeti lahko v igre prinesejo razburjenje in nepredvidljivost. Zaradi tega so bolj zanimivi in ​​izziv za igralce. Pythonova knjižnica Arcade ponuja preprost in učinkovit način za vključitev naključno premikajočih se predmetov v vaše igre.

Ustvari preprosto igro

Preden začnete, se prepričajte, da imate pip nameščen v vaši napravi. S tem ukazom namestite arkada knjižnica:

pip install arkada

Po tem ustvarite okno z uporabo arkada. Okno razreda in nastavite barvo ozadja na belo.

Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.

Nastavite položaj igralca na vodoravno sredino zaslona in dodajte majhno razdaljo od vrha. S puščičnimi tipkami lahko nadzorujete gibanje igralca.

Tukaj je koda za našo osnovno igro:

uvoz arkada

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 15

razredMyGame(arkadne. okno):

instagram viewer

def__v__(jaz, širina, višina):
super().__init__(širina, višina)
arcade.set_background_color (arcade.color. BELA)

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

defon_draw(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, PLAYER_RADIUS, arcade.color. MODRA)

defnadgradnja(sam, delta_time):
prehod

defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.player_x -= 5
elif ključ == arcade.key. PRAV:
self.player_x += 5

če __ime__ == "__glavni__":
igra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Dodajanje več predmetov

Če želite svoji igri dodati naključne premikajoče se predmete, ustvarite seznam za shranjevanje položajev predmetov in jih posodabljajte vsak okvir. Uporabite lahko tudi sprite kot objekte.

V svojo kodo igre dodajte seznam imenovan predmetov za shranjevanje položajev naključno premikajočih se predmetov. Po tem ustvarite število predmetov (NUM_OBJECTS) z naključnima koordinatama x in y znotraj meja zaslona. Predmeti so narisani kot rdeči krogi z uporabo arcade.draw_circle_filled funkcijo.

uvoz arkada
uvoz naključen

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

razredMyGame(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
arcade.set_background_color (arcade.color. BELA)

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

self.objects = []
za _ v obseg (NUM_OBJECTS):
x = naključno.randint(0, SCREEN_WIDTH)
y = naključno.randint(0, SCREEN_HEIGHT)
self.objects.append((x, y))

defon_draw(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, PLAYER_RADIUS, arcade.color. MODRA)

za obj v self.objekti:
x, y = obj
arcade.draw_circle_filled (x, y, OBJECT_RADIUS, arcade.color. RDEČA)

defnadgradnja(sam, delta_time):
prehod

defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.player_x -= 5
elif ključ == arcade.key. PRAV:
self.player_x += 5

če __ime__ == "__glavni__":
igra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Spodaj je rezultat:

Izvajanje algoritma naključnega gibanja

Če želite, da se predmeti premikajo naključno, posodobite njihove položaje v nadgradnja metoda z uporabo algoritma naključnega gibanja.

Iterirajte skozi vsak predmet in ustvarite naključne vrednosti za dx in dy, ki predstavlja spremembo koordinat x in y. Nato posodobite položaj predmeta z dodajanjem teh vrednosti. Tukaj je spremenjena koda:

defnadgradnja(sam, delta_time):
za jaz v obseg (NUM_OBJECTS):
x, y = self.objects[i]
dx = naključno.randint(-5, 5)
dy = naključno.randint(-5, 5)
x += dx
y += dy
self.objects[i] = (x, y)

Spodaj je rezultat:

Predmeti, ki se premikajo proti igralcu

Če želite dodati več interakcije, naj se predmeti premikajo proti igralcu. To lahko dosežete tako, da izračunate vektor smeri med objektom in igralcem ter ustrezno prilagodite položaj predmeta.

Za to izračunajte razlike v koordinatah x in y med objektom in igralcem. Z normalizacijo teh vrednosti dobite smerni vektor. Nato ta vektor pomnožite s faktorjem hitrosti (3 v tem primeru) in ga dodajte položaju predmeta. Tukaj je posodobljeno nadgradnja metoda:

defnadgradnja(sam, delta_time):
za jaz v obseg (NUM_OBJECTS):
x, y = self.objects[i]
dx = self.player_x - x
dy = self.player_y - y
razdalja = math.sqrt (dx ** 2 + dy ** 2)
dx /= razdalja
dy /= razdalja
x += dx * 3
y += dy * 3
self.objects[i] = (x, y)

Spodaj je rezultat:

Predmeti se začnejo premikati, ko igralec vstopi v okolico

Če želite dodati dodatno dinamiko, spremenite kodo tako, da se predmeti začnejo premikati šele, ko igralec vstopi v njihovo okolico. Dodajte koda za gibanje igralca in določite radij, znotraj katerega postanejo objekti aktivni.

defnadgradnja(sam, delta_time):
za jaz v obseg (NUM_OBJECTS):
x, y = self.objects[i]
dx = self.player_x - x
dy = self.player_y - y
razdalja = math.sqrt (dx ** 2 + dy ** 2)

če razdalja < 100: # Po potrebi prilagodite polmer
dx /= razdalja
dy /= razdalja
x += dx * 3
y += dy * 3
self.objects[i] = (x, y)

Zaznavanje trka in interakcija

Zdaj dodajte zaznavanje trka med igralcem in predmeti ter določite vedenje, ko pride do trka. Spremenite nadgradnja metoda za reševanje trkov:

defnadgradnja(sam, delta_time):
za jaz v obseg (NUM_OBJECTS):
x, y = self.objects[i]
dx = self.player_x - x
dy = self.player_y - y
razdalja = math.sqrt (dx ** 2 + dy ** 2)

če razdalja < PLAYER_RADIUS + OBJECT_RADIUS:
# če je prišlo do kolizije, jo obravnavajte tukaj
self.objects.pop (i)
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))

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

Uravnoteženje naključnosti

Če želite ustvariti uravnoteženo izkušnjo igranja, je pomembno, da natančno prilagodite naključno gibanje in ustvarjanje predmetov. Tukaj je nekaj primerov, kako lahko prilagodite kodo, da dosežete boljše ravnotežje v svoji igri:

Omejitev največje hitrosti

Če želite preprečiti prehitro premikanje predmetov, lahko uvedete največjo omejitev hitrosti. Spremenite nadgradnja metoda za vključitev omejitev hitrosti:

defnadgradnja(sam, delta_time):
za jaz v obseg (NUM_OBJECTS):
x, y = self.objects[i]
dx = self.player_x - x
dy = self.player_y - y
razdalja = math.sqrt (dx ** 2 + dy ** 2)

če razdalja < PLAYER_RADIUS + OBJECT_RADIUS:
self.objects.pop (i)
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))
elif razdalja < 100:
dx /= razdalja
dy /= razdalja

hitrost = 3# Po potrebi prilagodite vrednost hitrosti
dx = min (max (dx * hitrost, -MAX_SPEED), MAX_SPEED)
dy = min (max (dy * hitrost, -MAX_SPEED), MAX_SPEED)

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

Nadzorovanje stopnje drstenja

Prav tako lahko nadzorujete hitrost, s katero se v igri pojavijo novi predmeti. Prilagodite kodo tako, da vključuje zamik med ustvarjanjem novih predmetov:

uvoz čas

razredMyGame(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
arcade.set_background_color (arcade.color. BELA)

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

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

defnadgradnja(sam, delta_time):
# tukaj nadzirajte stopnjo drstenja
če time.time() - self.last_spawn_time > SPAWN_DELAY:
če len (samopredmeti) < MAX_OBJECTS:
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))
self.last_spawn_time = time.time()

za jaz v razpon (len (samopredmeti)):
x, y = self.objects[i]
dx = self.player_x - x
dy = self.player_y - y
razdalja = math.sqrt (dx ** 2 + dy ** 2)

če razdalja < PLAYER_RADIUS + OBJECT_RADIUS:
self.objects.pop (i)
self.objects.append((random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT)))
elif razdalja < 100:
dx /= razdalja
dy /= razdalja

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

Prilagodite SPAWN_DELAY in MAX_OBJECTS vrednosti, da najdete pravo ravnovesje za svojo igro. Daljši zamik ali manjše največje število predmetov bo zmanjšalo gnečo v igri. Medtem ko bo krajša zakasnitev ali večji maksimum povečal težavo.

Naredite igre bolj zabavne z uporabo premikajočih se predmetov

Dodajanje naključno premikajočih se predmetov v igre lahko znatno izboljša celotno izkušnjo. Predvajajo nepredvidljivost in izziv, zaradi česar je igranje bolj privlačno in dinamično. Igralci se bodo morali prilagoditi in hitro odzvati, da bi se izognili trkom ali ujeli predmete, kar bo zagotovilo občutek navdušenja in dosežka.