Skip to content

Tutorial Pong_sl

Gabe1290 edited this page Sep 10, 2026 · 3 revisions

Vadnica: Ustvari klasično igro Pong

Izberite svoj jezik / Choisissez votre langue / Wählen Sie Ihre Sprache:

English | Français | Deutsch | Italiano | Español | Português | Slovenščina | Українська | Русский


Uvod

V tej vadnici boš ustvaril klasično igro Pong - eno od prvih videoiger, ki je bila kdaj narejena! Pong je igra za dva igralca, kjer vsak igralec nadzira veslo in poskuša zadeti žogo čez veslo nasprotnika, da zbira točke.

Kaj se boš naučil:

  • Ustvarjanje likov za vesla, žogo in stene
  • Obvladovanje vnosov tipkovnice za dva igralca
  • Oteženje objektov med seboj
  • Sledenje in prikaz točk obeh igralcev
  • Uporaba globalnih spremenljivk

Težavnost: Začetnik Prednastavka: Prednastavka za začetnike


Korak 1: Načrtuj svojo igro

Preden začnemo, razumejmo, kaj potrebujemo:

Element Namen
Žoga Skaklje med igralcema
Levo veslo Igralec 1 nadzira s tipkama W/S
Desno veslo Igralec 2 nadzira z gornjim/spodnjim puščico
Stene Zgornja in spodnja meja
Cilji Nevidni predeli za vsakim veslom za zaznavanja točkovanja
Prikaz točk Prikazuje točke obeh igralcev

Korak 2: Ustvari like

2.1 Lik žoge

  1. V Drevesu virov desno klikni na Likove in izberi Ustvari lik
  2. Poimenuj ga spr_ball
  3. Klikni Uredi lik da odpreš urejevalnik likov
  4. Nariši majhen bel krog (približno 16x16 pikslov)
  5. Klikni V redu da shraniš

2.2 Liki vesla

Ustvarili bomo dve vesli - eno za vsakega igralca:

Levo veslo (Igralec 1):

  1. Ustvari nov lik imenovan spr_paddle_left
  2. Nariši dolg, tanek pravokotnik, upognjen kot oklepaj ")" - priporočena modra barva
  3. Velikost: približno 16x64 pikslov

Desno veslo (Igralec 2):

  1. Ustvari nov lik imenovan spr_paddle_right
  2. Nariši dolg, tanek pravokotnik, upognjen kot oklepaj "(" - priporočena rdeča barva
  3. Velikost: približno 16x64 pikslov

2.3 Lik stene

  1. Ustvari nov lik imenovan spr_wall
  2. Nariši trdno pravokotnik (siva ali bela barva)
  3. Velikost: 32x32 pikslov (raztegnili ga bomo v sobi)

2.4 Lik cilja (Nevidno)

  1. Ustvari nov lik imenovan spr_goal
  2. Naredi ga 32x32 pikslov
  3. Pusti ga prosojnega ali naredi trdno barvo (v igri bo nevidna)

The Sprite Editor with spr_ball open, origin centered; spr_ball, spr_paddle_left, spr_paddle_right, spr_wall and spr_goal in the resource tree


Korak 3: Ustvari objekt stene

Objekt stene ustvari meje na vrhu in dnu igrišča.

  1. Desno klikni na Predmete in izberi Ustvari predmet
  2. Poimenuj ga obj_wall
  3. Nastavi lik na spr_wall
  4. Označite okence "Trdna" - to je pomembno za odbijanje!
  5. Ni potrebnih dogodkov - stena se samo nahaja tam

obj_wall's Object Events panel: empty -- Solid checked is all it needs


Korak 4: Ustvari objekte vesla

4.1 Levo veslo (Igralec 1)

  1. Ustvari nov predmet imenovan obj_paddle_left
  2. Nastavi lik na spr_paddle_left
  3. Označite okence "Trdna"

Dodaj dogodke tipkovnice za gibanje:

Dogodek: Pritisk na tipko W

  1. Dodaj dogodek → Tipkovnica → Pritisk W
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na -8 (premika se navzgor)

Dogodek: Spustitev tipke W

  1. Dodaj dogodek → Tipkovnica → Spustitev W
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na 0 (preneha se premikati)

Dogodek: Pritisk na tipko S

  1. Dodaj dogodek → Tipkovnica → Pritisk S
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na 8 (premika se navzdol)

Dogodek: Spustitev tipke S

  1. Dodaj dogodek → Tipkovnica → Spustitev S
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na 0 (preneha se premikati)

Dogodek: Trčenje z obj_wall

  1. Dodaj dogodek → Trčenje → obj_wall
  2. Dodaj akcijo: GibanjeOdbij se (konfiguracija ni potrebna — vedno se odbije od trdnih predmetov)

4.2 Desno veslo (Igralec 2)

  1. Ustvari nov predmet imenovan obj_paddle_right
  2. Nastavi lik na spr_paddle_right
  3. Označite okence "Trdna"

Dodaj dogodke tipkovnice za gibanje:

Dogodek: Pritisk na gornji puščico

  1. Dodaj dogodek → Tipkovnica → Pritisk Gor
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na -8

Dogodek: Spustitev gornje puščice

  1. Dodaj dogodek → Tipkovnica → Spustitev Gor
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na 0

Dogodek: Pritisk na spodnjo puščico

  1. Dodaj dogodek → Tipkovnica → Pritisk Dol
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na 8

Dogodek: Spustitev spodnje puščice

  1. Dodaj dogodek → Tipkovnica → Spustitev Dol
  2. Dodaj akcijo: GibanjeNastavi navpično hitrost
  3. Nastavi navpično hitrost na 0

Dogodek: Trčenje z obj_wall

  1. Dodaj dogodek → Trčenje → obj_wall
  2. Dodaj akcijo: GibanjeOdbij se (konfiguracija ni potrebna — vedno se odbije od trdnih predmetov)

obj_paddle_left's Object Events panel: Keyboard (held) and Keyboard Release with W/S, plus Collision with obj_wall (Bounce). obj_paddle_right is the same with the Up/Down arrows


Korak 5: Ustvari objekt žoge

  1. Ustvari nov predmet imenovan obj_ball
  2. Nastavi lik na spr_ball

Dogodek: Ustvari

  1. Dodaj dogodek → Ustvari
  2. Dodaj akcijo: GibanjeZačni se premikati (smer)
  3. Izberi diagonalno polje v 3x3 izbirniku smeri (ne ravno navzgor ali navzdol)
  4. Nastavi hitrost na 6

Dogodek: Trčenje z obj_paddle_left

  1. Dodaj dogodek → Trčenje → obj_paddle_left
  2. Dodaj akcijo: GibanjeOdbij se (konfiguracija ni potrebna — vedno se odbije od trdnih predmetov)

Dogodek: Trčenje z obj_paddle_right

  1. Dodaj dogodek → Trčenje → obj_paddle_right
  2. Dodaj akcijo: GibanjeOdbij se (konfiguracija ni potrebna — vedno se odbije od trdnih predmetov)

Dogodek: Trčenje z obj_wall

  1. Dodaj dogodek → Trčenje → obj_wall
  2. Dodaj akcijo: GibanjeOdbij se (konfiguracija ni potrebna — vedno se odbije od trdnih predmetov)

obj_ball's Object Events panel: Create (Start Moving), and Collision with obj_paddle_left, obj_paddle_right and obj_wall (each a Bounce)


Korak 6: Ustvari objekte ciljev

Cilji so nevidni predeli za vsakim veslom. Ko žoga vstopi v cilj, nasprotnik zbere točko.

6.1 Levi cilj

  1. Ustvari nov predmet imenovan obj_goal_left
  2. Nastavi lik na spr_goal
  3. Odkljukaj "Vidna" - cilj bi moral biti neviden
  4. Označite okence "Trdna"

6.2 Desni cilj

  1. Ustvari nov predmet imenovan obj_goal_right
  2. Nastavi lik na spr_goal
  3. Odkljukaj "Vidna"
  4. Označite okence "Trdna"

6.3 Dodaj dogodke trčenja ciljev v žogo

global.p1score/global.p2score sta spremenljivki po meri, ena za vsakega igralca — vgrajena akcija Set Score tukaj ne ustreza, saj vedno zapiše enotni vgrajeni rezultat, brez možnosti, da bi kazala na ime spremenljivke. Set Variable je prava akcija za spremenljivko po meri in podpira obseg global:

Pojdi nazaj k obj_ball in dodaj te dogodke:

Dogodek: Trčenje z obj_goal_left

  1. Dodaj dogodek → Trčenje → obj_goal_left
  2. Dodaj akcijo: GibanjeSkoči na začetni položaj (ponastavi žogo)
  3. Dodaj akcijo: NadzorSet Variable
    • Spremenljivka: p2score
    • Vrednost: 1
    • Obseg: global
    • Označite "Relative" (dodaja 1 trenutnim točkam)

Dogodek: Trčenje z obj_goal_right

  1. Dodaj dogodek → Trčenje → obj_goal_right
  2. Dodaj akcijo: GibanjeSkoči na začetni položaj
  3. Dodaj akcijo: NadzorSet Variable
    • Spremenljivka: p1score
    • Vrednost: 1
    • Obseg: global
    • Označite "Relative"

obj_ball after Step 6: the two paddle/wall bounces from Step 5 plus Collision with obj_goal_left and obj_goal_right (Jump to Start + Set Variable). obj_goal_left/obj_goal_right themselves have no events -- they're invisible, solid, shown here in green only so the placement reads


Korak 7: Ustvari objekt za prikaz točk

  1. Ustvari nov predmet imenovan obj_score
  2. Lik ni potreben

Dogodek: Ustvari

  1. Dodaj dogodek → Ustvari
  2. Dodaj akcijo: NadzorSet Variable
    • Spremenljivka: p1score, Vrednost: 0, Obseg: global
  3. Dodaj akcijo: NadzorSet Variable
    • Spremenljivka: p2score, Vrednost: 0, Obseg: global

Dogodek: Risanje

  1. Dodaj dogodek → Risanje
  2. Dodaj akcijo: RisanjeNariši besedilo
    • Besedilo: Igralec 1:
    • X: 10
    • Y: 10
  3. Dodaj akcijo: RisanjeNariši spremenljivko
    • Spremenljivka: global.p1score
    • X: 100
    • Y: 10
  4. Dodaj akcijo: RisanjeNariši besedilo
    • Besedilo: Igralec 2:
    • X: 10
    • Y: 30
  5. Dodaj akcijo: RisanjeNariši spremenljivko
    • Spremenljivka: global.p2score
    • X: 100
    • Y: 30

obj_score's Object Events panel: Create (two Set Variable actions) and Draw (two Draw Text + two Draw Variable actions), with no sprite set


Korak 8: Oblikuj sobo

  1. Desno klikni na Sobe in izberi Ustvari sobo
  2. Poimenuj jo room_pong
  3. Nastavi velikost sobe (npr. 640x480)

Postavi predmete:

  1. Stene: Postavi instance obj_wall vzdolž zgornjih in spodnjih robov sobe
  2. Levo veslo: Postavi obj_paddle_left blizu levega roba, naravnano navpično
  3. Desno veslo: Postavi obj_paddle_right blizu desnega roba, naravnano navpično
  4. Žoga: Postavi obj_ball v sredino sobe
  5. Cilji:
    • Postavi instance obj_goal_left vzdolž levega roba (za veslom)
    • Postavi instance obj_goal_right vzdolž desnega roba
  6. Prikaz točk: Postavi obj_score kjerkoli (nima lika, samo izrisuje besedilo)

Primer razporeditve sobe:

[STENA STENA STENA STENA STENA STENA STENA STENA STENA STENA]
[CILJ]  [VESLO_L]            [ŽOGA]            [VESLO_D]  [CILJ]
[CILJ]  [VESLO_L]                              [VESLO_D]  [CILJ]
[CILJ]                                                    [CILJ]
[STENA STENA STENA STENA STENA STENA STENA STENA STENA STENA]

The Room Editor for room_pong: tan wall rows across the top and bottom, green goal columns down the left and right edges, the blue and red paddles near each side, the ball in the centre, and obj_score just inside the top wall


Korak 9: Testiraj svojo igro!

  1. Klikni Zaženi ali pritisni F5 da testiraš svojo igro
  2. Igralec 1 uporablja W (gor) in S (dol)
  3. Igralec 2 uporablja Gornjo puščico in Spodnjo puščico
  4. Poskusi zadeti žogo čez veslo nasprotnika!

Izboljšave (Izbirne)

Povečanje hitrosti

Naredi žogo hitrejšo vsakič, ko zadene veslo. speed tukaj ni neposredno uporabna — v tem pogonu je to hitrost animacije spritea, ne hitrost gibanja — zato hitrost žoge sledi v spremenljivki po meri:

  1. V dogodku Ustvari za obj_ball dodaj NadzorSet Variable (Spremenljivka: ball_speed, Vrednost: 6) takoj za akcijo Začni se premikati.
  2. V vsakem dogodku trčenja z veslom, po akciji Odbij se, dodaj NadzorSet Variable (Spremenljivka: ball_speed, Vrednost: 0.5, označeno "Relative"), nato GibanjeNastavi hitrost z vrednostjo self.ball_speed, da uveljaviš novo hitrost ob ohranitvi trenutne smeri (Odbij se jo je že obrnil).

Zvočni efekti

Dodaj zvoke kadar:

  • Žoga zadene veslo
  • Žoga zadene steno
  • Igralec zbere točko

Pogoj za zmago

Dodaj preverjanje v dogodek risanja:

  • Če global.p1score >= 10, prikaži "Igralec 1 je zmagal!"
  • Če global.p2score >= 10, prikaži "Igralec 2 je zmagal!"

Odpravljanje napak

Problem Rešitev
Žoga gre skozi veslo Prepričaj se, da imajo vesla označeno "Trdna"
Veslo se ne ustavi pri stenah Dodaj dogodek trčenja z obj_wall
Točke se ne posodabljajo Preveri, da se imena spremenljivk natančno ujemajo (global.p1score, global.p2score)
Žoga se ne premika Preveri, da ima dogodek ustvarjanja akcijo gibanja

Kaj si se naučil

Čestitke! Ustvaril si popolno igro Pong za dva igralca! Naučil si se:

  • Kako upravljati vhode tipkovnice za dva različna igralca
  • Kako uporabiti dogodke spustitve tipke za zaustavitev gibanja
  • Kako narediti, da se objekti odbijajo med seboj
  • Kako uporabiti globalne spremenljivke za sledenje točkam
  • Kako prikazati besedilo in spremenljivke na zaslonu

Glej tudi

Clone this wiki locally