Level 4Pong

Skrevet av: Geir Arne Hjelle

Oversatt av: Stein Olav Romslo

Kurs: Scratch
Tema: Blokkbasert, Spill
Fag: Matematikk, Programmering, Kunst og håndverk
Klassetrinn: 5.-7. klasse, 8.-10. klasse
Bilde av BokmålPå Bokmål

Introduksjon

Pong er eitt av dei aller fyrste dataspela som vart laga, og det fyrste dataspelet som vart ein kommersiell suksess. Sjølve spelet er ein forenkla variant av tennis der to spelarar slår ein ball fram og tilbake. Viss ein av spelarane ikkje klarar å returnere ballen får den andre spelaren poeng.

Illustrasjon av eit ferdig pong-spel

Oversikt over prosjektet

Mesteparten av kodinga av Pong skal du gjere på eiga hand. Me gir nokre tips undervegs. Spesielt skal me sjå på korleis me kontrollerer ein ballfigur medan den sprett rundt på skjermen. I reisten av oppgåva finn du følgjande:

checkPlan

Steg 1: Ein sprettande ball

Når ein lagar nye program og spel er det alltid lurt å starte med ein enkel versjon som gjer litt av det det ferdige programmet skal gjere. Då kan du teste at programmet virkar som det skal nesten med ein gong.

I den enkle versjonen vår skal me berre få ein ball til å sprette over skjermen. Ingen spelarar, ingen poeng, ingenting anna enn ein sprettande ball!

checkSjekkliste

  • når eg får meldinga [Ny ball v]
    set [hastigheit v] til [7]
    gå til x: (0) y: (0)
    peik i retning (tilfeldig tal frå (1) til (360))
    gjenta for alltid
        gå (hastigheit) steg
        viss ved kant, sprett
    slutt
    

    Les koden nøye når du legg den til på ball-figuren. Pass på at du forstår kva kvar enkelt kloss gjer, for du skal endre denne koden sjølv seinare.

Ein betre måte å starte programmet på

Me har laga meldinga Ny ball sidan me tenker at i sjølve spelet skal ballen starte frå midten av skjermen etter kvar gong ein spelar har fått poeng. I denne enkle versjonen kan me sende meldinga Ny ball kvar gong det grøne flagget blir klikka på, for at det skal vere enklare å starte spelet.

  • Legg til denne enkle kodesnutten på scena:

    når @greenFlag vert trykt på
    send meldinga [Ny ball v]
    

Steg 2: Litt meir kontroll over ballen

Klossen viss ved kant, sprett er veldig enkel å bruke, men diverre har me ikkje så mykje kontroll med den. Til dømes kan me ikkje bruke den viss ballen skal sprette andre stader enn ved kanten (til dømes i ein racket). Den er vanskeleg å bruke viss me vil at andre ting skal skje når ballen sprett, kanskje me vil spele ein lyd, endre hastigheita eller endre på retninga.

Me vil bruke sansing-klossar for å kunne kontrollere korleis ballen sprett. Då kan me oppdage når ballen er borti andre figurar (til dømes racketane til spelarane) eller når den er borti spesielle farger.

checkSjekkliste

  • Bilete av bakgrunnen til Pong-spelet
  • gjenta for alltid
    slutt
    

    med

    gjenta til <rører fargen [#0000FF]>
    slutt
    send meldinga [Poeng v]
    
  • viss ved kant, sprett
    

    med til dømes

    viss <rører fargen [#9999FF]>
        peik i retning ((180) - (retning))
        trommeslag (15 v) som varer (0.01) takter
    slutt
    

    forstår du kva talet 180 gjer? Prøv å tenke på korleis ein ordentleg ball sprett i ein ordentleg vegg og korleis retninga endrar seg.

Steg 3: Racketar til spelarane

No som ballen sprett fint kan me lage racketane som spelarane skal styre. Desse vil vere veldig like kvarandre, slik at me fyrst kan lage den eine racketen og så kopiere den.

checkSjekkliste

  • viss <<tasten [w v] er trykt?> og <(y-posisjon) < [150]>>
    slutt
    

Steg 4: Vidareutvikling av spelet

No har me laga ein enkel versjon av eitt av dei fyrste dataspela i historia. Men det er mange moglegheiter for vidareutvikling av spelet.

Du står heilt fritt til å bestemme korleis du vil jobbe vidare med spelet ditt. Her er nokre idear som kan gjere spelet endå meir morosamt å spele:

checkIdear til vidareutvikling

Lisens: CC BY-SA 4.0

Forbedre denne siden

Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!