Lav et platformspil hvor du undviger rullende bolde, og hvor du skal nå slutzonen.
Dette er Scratch 3 versionen af projektet. Der er også en Scratch 2 version af projektet.
Du vil lære hvordan man laver et platformspil, hvor spilleren skal undvige kugler, der bevæger sig, og nå slutningen af levelet.
Klik det grønne flag for at starte, og brug derefter piletasterne til at gå og mellemrumstasten til at hoppe.
if, then, else
Scratch blokkeneHvis du har brug for at udskrive dette projekt, brug venligst den printer-venlige version.
Du kan finde det færdige projekt her.
Start med at lave en figur, som kan bevæge sig til venstre og til højre, og som kan klatre op af stiger.
Åben ‘Dodgeball’ Scratch starterprojektet.
Online: åben starterprojektet ved rpf.io/dodgeball-on.
Hvis du har en Scratch konto, kan du lave en kopi ved at klikke Remix.
Offline: download starterprojektet fra rpf.io/p/en/dodgeball-get og åben det derefter med offline redigeringsprogrammet.
Projektet indeholder en baggrund med platforme:
Vælg en ny sprite som den figur, spilleren vil styre, og tilføj det til dit projekt. Det vil være bedst hvis du vælger en sprite med flere stillinger (kaldt kostumer - ‘costumes’ - i Scratch), så du kan få figuren til at se ud som om, at den går rundt.
ARTICLE NOT FOUND!
Tilføj kodeblokke til din figur sprite, så spilleren kan bruge piletasterne til at bevæge figuren. Når spilleren trykker den højre pil, bør figuren pege til højre, bevæge sig nogle få skridt, og skifte til det næste kostume:
when flag clicked
forever
if <key (right arrow v) pressed? > then
point in direction (90 v)
move (3) steps
next costume
end
end
Hvis din sprite ikke passer, så juster dets størrelse.
Test din figur ved at klikke på flaget og derefter trykke på den højre piletast. Bevæger din figur til højre? Ligner det, at figuren går rundt?
Tilføj kodeblokke til forever
loopet af figurens sprite, så den vil gå til venstre, når der trykkes på venstre pil.
Test din nye kode for at sikre, at det virker. Vender din figur på hovedet, når den går til venstre?
Hvis dette sker, kan du fikse det ved at klikke på direction elementet af din figur, og derefter klikke på venstre-højre pilen.
Hvis du foretrækker det, kan du i stedet fikse problemet ved at tilføje denne blok til starten af din figurs script:
set rotation style [left-right v]
For at klatre en lyserød stige bør din figur sprite bevæge nogle trin opad på banen, når op pilen er trykket og figuren rører den rette farve.
Tilføj følgende kode til din figur’s forever
loop for at ændre - change
- figurens y
(lodrette) position hvis - if
- op pilen er trykket - up arrow is pressed
- og figuren rører farven lyserød - touching the colour pink
.
if < <key (up arrow v) pressed?> and <touching color [#FF69B4]?> > then
change y by (4)
end
Test din kode. Kan du få figuren til at klatre de lyserøde stiger og nå slutningen af levelet?
Kan du tilføje flere kodeblokke til din figur sprite for at få spriten til at sige noget hvis den når den grønne dør? (Hint: du skal bruge if
)
Nu skal du få din figur til at bevæge sig mere realistisk: du kommer til at tilføje tyngdekraft til dit spil, og give figuren evnen til at hoppe.
Bevæg din figur i spillet så den træder ud over kanten af en platform. Kan du se at den kan gå på luften?
For at fikse dette, skal du tilføje tyngdekraft til dit spil. Du gør dette ved at lave en ny variabel kaldt gravity
.
Klik på Variabler på fanen Kode, klik derefter på Lav en variabel.
Skriv navnet på din variabel. Du kan vælge, om du vil have din variabel tilgængelig for alle sprites eller kun denne sprite. Tryk på OK.
Når du har oprettet variablen, vises den på scenen, eller du kan afmarkere variablen på fanen Scripts for at skjule den.
Hvis du foretrækker det, kan du skjule denne variabel fra dit niveau.
Tilføj disse nye kodeblokke som sætter gravity
til et negativt tal og bruger værdien af gravity
til at ændre din figurs y-koordinat konstant:
when flag clicked
set [gravity v] to [-4]
forever
change y by (gravity)
end
Tryk på flaget, og derefter træk din figur til toppen af niveauet. Hvad sker der? Opfører tyngdekraften sig som forventet?
Tyngdekraft burde ikke flytte figur spriten igennem en platform eller en stige! Tilføj en if
blok til din kode som gør, at tyngdekraften kun virker, når figuren er i luften. Tyngdekraftskoden bør nu se således ud:
when flag clicked
set [gravity v] to [-4]
forever
if < not < <touching color [#0000FF]?> or <touching color [#FF69B4]?> > > then
change y by (gravity)
end
end
Test spillet igen for at se om tyngdekraften virker rigtigt nu. Stopper din figur sprite med at falde, når den rører en platform eller en stige? Kan du få figuren til at træde ud over kanten af en platform og falde ned til platformen nedenunder?
Du skal du tilføje kode der får din figur til at hoppe, når spilleren trykker på mellemrumstasten. En meget let måde at gøre dette er at flytte din figur op et par gange:
when [space v] key pressed
repeat (10)
change y by (4)
end
Eftersom tyngdekraften hele tiden skubber din figur ned med 4 pixels, er du nødt til at vælge et tal større end 4
i din change y by (4)
blok. Ændre tallet indtil du er tilfreds med den højde, din figur hopper.
Test din kode. Bemærk at overgangen fra hop til fald er ret pludselig. For at få det til at være mere glidende, er du nødt til at få din figur til at bevæge sig mindre og mindre, indtil den ikke stiger længere.
For at gøre dette, skal du lave en ny variabel kaldt jump height
. Ligesom med gravity
kan du skjule denne variabel, hvis du foretrækker det.
Slet hoppekoden du tilføjede til din figur sprite, og tilføj denne kode i stedet for:
when [space v] key pressed
set [jump height v] to [8]
repeat until < (jump height) = [0] >
change y by (jump height)
change [jump height v] by (-0.5)
end
Denne kode flytter din figur op, først med 8 pixels, og derefter 7.5 pixels, 7 pixels, og så videre, indtil den ikke længere flytter op. Dette får hoppebevægelsen til at se bedre ud.
Ændre værdien af jump height
variablen, som er sat før repeat
starter. Test derefter dit spil.
Gentag disse to trin, indtil du er tilfreds med den højde, din figur hopper.
Selv hvis figuren allerede er midt i luften, vil den hoppe når spilleren trykker på mellemrumstasten. Du kan se, at dette sker, hvis du holder mellemrumstasten trykket ned.
Kan du ændre figur spritens hoppekode, så figuren kun kan hoppe, hvis den rører en blå platform? (Hint: du skal bruge if
)
Din figur kan nu gå rundt og hoppe, så det er tid til at tilføje bolde, som figuren skal undvige.
Lav en ny bold sprite. Du kan frit vælge den type bold, du kan lide.
Ændre boldens størrelse så figuren kan hoppe over den. Prøv at få figuren til at hoppe over bolden for at teste, om bolden har den rigtige størrelse.
Tilføj denne kode til din bold sprite:
when green flag clicked
hide
forever
wait (3) seconds
create clone of (myself v)
end
when I start as a clone
go to x: (160) y: (160)
show
repeat (22)
change y by (-4)
end
repeat (170)
change x by (-2)
turn ccw (6) degrees
end
repeat (30)
change y by (-4)
end
delete this clone
Denne kode laver en ny klon af bold spriten hvert tredje sekund. Hver klon bevæger sig langs den øverste platform og falder derefter ned.
Klik på flaget for at teste spillet.
Tilføj mere kode til din bold sprite så dets kloner bevæger sig langs alle tre platforme.
Tilføj nu nogle kodeblokke til at udsende en besked, hvis din figur bliver ramt af en bold! (broadcast
)
Tilføj denne kode til din bold sprite:
when I start as a clone
forever
if < touching (Pico walking v)? > then
broadcast (hit v)
end
end
Tilføj til sidst kodeblokke til din figur sprite, der får den til at flytte tilbage til dens startposition, når den modtager hit
-beskeden:
when I receive [hit v]
point in direction (90)
go to x: (-210) y: (-120)
Test din kode. Undersøg, om figuren flytter tilbage til starten, når den rører en bold.
Boldene, som din figur skal undgå, er allesammen ens, og de skabes med tre-sekunder intervaller. Kan du tilføje kode til dit spil, så boldene:
random
)For at gøre dit spil en smule sværere at vinde, vil du nu tilføje lasere!
Tilføj en ny sprite til dit spil og kald det laser
. Den bør have to kostumer: en kaldt ‘on’, og en kaldt ‘off’.
Placer din nye laser sprite mellem to platforme.
Tilføj kode til din laser sprite, der får den til at skifte mellem dens to kostumer.
when flag clicked
forever
switch costume to (on v)
wait (2) seconds
switch costume to (off v)
wait (2) seconds
end
Hvis du foretrækker det, kan du ændre koden vist ovenover, så spriten venter en tilfældig mængde tid mellem hver kostumeskift (her skal du bruge wait
og random
).
Tilføj til sidst kode til din laser sprite så den udsender en ‘hit’ besked, når den rører figur spriten.
Du behøver ikke at tilføje ekstra kode til din figur sprite, eftersom den allerede ved hvad den skal gøre, når den modtager broadcast 'hit'
!
Test dit spil for at se, om du kan flytte figuren forbi laseren. Hvis laseren er for let eller for svær at undgå, kan du ændre wait
tiderne i koden for laser spriten.
Hvis du tror at dit spil stadigvæk er for let, kan du tilføje flere forhindringer til det. Du kan frit bestemme hvad forhindringerne skal være! Her er nogle ideer:
Du kunne endda skabe det næste niveau ved at designe en anden baggrund med platforme. For at tilgå det næste niveau, skal du tilføje kode der gør, at når din figur rører den grønne dør, så skifter spillet til den næste baggrund:
if <touching color [#00FF00]?> then
switch backdrop to (next backdrop v)
go to x: (-210) y: (-120)
wait (1) seconds
end
Der er en anden, lille bug i dit spil: tyngdekraften hiver ikke figur spriten ned, så længe at en hvilken som helst del af spriten rører en blå platform. Så selv hvis spritens hoved rører en platform, vil spriten ikke falde! Du kan teste dette: få din figur til at klatre op det meste af en stige, og derefter flyt figuren til siden under en platform:
For at fikse bug’en, skal du først give din figur sprite nye bukser, som har en anderledes farve (på alle kostumer).
Derefter erstatter du denne kodeblok:
< touching color [#0000FF]? >
Med denne kodeblok:
< color [#00FF00] is touching [#0000FF]? >
Test spillet efter du har lavet disse ændringer, for at sikre at du har fikset bug’en!
Lige nu bliver din figur sendt tilbage til starten, når den bliver ramt. Kan du også give figur spriten tre liv og få den til at tabe et liv (lives
), når den bliver ramt? Dit spil bør virke således:
Prøv at arbejde med vores Brain game projekt, hvor du kan lave din egen matematikquiz.
Tryk på knappen for at starte. Indtast svaret til spørgsmålet, og derefter tryk Enter tasten.