Begynder Scratch Spil Blokprogrammering

Boldundvigelsesspil

Lav et platformspil hvor du undviger rullende bolde, og hvor du skal nå slutzonen.


Start

Dette er Scratch 3 versionen af projektet. Der er også en Scratch 2 version af projektet.

Introduktion

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.

dodgeball spil i gang

  • infoHvad du vil lære
    • Hvordan man bruger tastaturet til at styre en sprite
    • Hvordan man bruger if, then, else Scratch blokkene
    • Hvordan man kloner en sprite

Næste

Figur bevægelse

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:

dodgeball projekt baggrund

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.

vælg en sprite

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:

pico bevægelses sprite

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.

sæt sprite størrelse så det passer

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?

screenshot

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?

screenshot

Hvis dette sker, kan du fikse det ved at klikke på direction elementet af din figur, og derefter klikke på venstre-højre pilen.

screenshot

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.

pico gå sprite

	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?

screenshot


Tilbage Næste

Udfordring: afslutte niveauet

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)

screenshot


Tilbage Næste

Tyngdekraft og at hoppe

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?

screenshot

For at fikse dette, skal du tilføje tyngdekraft til dit spil. Du gør dette ved at lave en ny variabel kaldt gravity.

  • infoTilføj en variabel i Scratch
    • Klik på Variabler på fanen Kode, klik derefter på Lav en variabel.

      Variabel blokke

    • 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.

      Opret variabel

    • Når du har oprettet variablen, vises den på scenen, eller du kan afmarkere variablen på fanen Scripts for at skjule den.

      Variabel på scenen

Hvis du foretrækker det, kan du skjule denne variabel fra dit niveau.

screenshot

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:

pico gå sprite

	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?

screenshot

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:

pico gå sprite

	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?

screenshot

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:

pico gå sprite

	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:

pico gå sprite

	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.


Tilbage Næste

Udfordring: bedre hop

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)


Tilbage Næste

Undvige bolde

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.

screenshot

Æ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.

screenshot

Tilføj denne kode til din bold sprite:

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.

screenshot

Tilføj mere kode til din bold sprite så dets kloner bevæger sig langs alle tre platforme.

screenshot

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:

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:

pico gå sprite

	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.


Tilbage Næste

Udfordring: tilfældige bolde

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:

  • Ikke ser ens ud?
  • Skabes efter en tilfældig mængde tid? (Hint: brug random)
  • Er en tilfældig størrelse?

screenshot


Tilbage Næste

Lasere!

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’.

screenshot

screenshot

Placer din nye laser sprite mellem to platforme.

screenshot

Tilføj kode til din laser sprite, der får den til at skifte mellem dens to kostumer.

laser sprite

	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.


Tilbage Næste

Udfordring: flere forhindringer

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:

  • En farlig sommerfugl
  • Platforme, som dukker op og forsvinder
  • Tennisbolde som falder ned og skal undviges

screenshot

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:

pico gå sprite

	if <touching color [#00FF00]?> then
		switch backdrop to (next backdrop v)
		go to x: (-210) y: (-120)
		wait (1) seconds
	end

Tilbage Næste

Udfordring: forbedret tyngdekraft

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:

screenshot

For at fikse bug’en, skal du først give din figur sprite nye bukser, som har en anderledes farve (på alle kostumer).

screenshot

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!


Tilbage Næste

Udfordring: flere liv

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:

  • Spillet starter med tre liv for figuren
  • Når figuren bliver ramt, mister den et liv og flytter tilbage til starten
  • Hvis der ikke er flere liv tilbage, stopper spillet

Tilbage Næste

Hvad er det næste?

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.


Tilbage
login