Opdracht
Na het doorlopen van de microStudio tutorial heb je een eenvoudige maar werkende game. De code staat hieronder.
Code
init = function()
gameover = 0
running = 0
blades = [200,300,400]
passed = [0,0,0]
score = 0
position = 0
speed = 2
end
update = function()
if gameover>0 then
gameover = gameover+1
if gameover>300 then init() end
elsif running then
position = position+speed
speed = speed + 0.001
if touch.touching and hero_y == 0 then
hero_vy = 7
audio.beep("square tempo 20000 volume 10 span 100 C4 to C6")
end
hero_vy -= 0.3
hero_y = max(0,hero_y+hero_vy)
for i=0 to blades.length-1
if blades[i]<position-120 then
blades[i] = position+280+random.next()*200
passed[i] = 0
end
if abs(position-blades[i])<10 then
if hero_y<10 then
running = 0
gameover = 1
audio.beep("saw tempo 10000 volume 50 span 50 C2 to C4 to C2 to C4")
elsif not passed[i] then
passed[i] = 1
score += 1
audio.beep("saw tempo 960 volume 50 span 20 C6")
end
end
end
else
if touch.touching then running = 1 end
end
end
draw = function()
screen.fillRect(0,0,screen.width,screen.height,"rgb(57,0,57)")
for i=-6 to 6 by 1
screen.drawSprite("wall",i*40-position%40,-80,40)
end
screen.drawSprite("hero",-80,-50+hero_y,20)
for i=0 to blades.length-1
screen.drawSprite("blade",blades[i]-position-80,-50,20)
end
screen.drawText(score,120,80,20,"#FFF")
if gameover then
screen.fillRect(0,0,screen.width,screen.height,"rgba(255,0,0,.5)")
screen.drawText("GAME OVER",0,0,50,"#FFF")
elsif not running then
screen.drawText("READY?",0,30,50,"#FFF")
end
end
Opdrachten
- Pas de start en eindtekst aan.
- Pas de achtergrondkleur van het spel en het eindscherm aan.
Assets
In deze opdracht worden de getekende sprites vervangen door assets uit het Pixel Platormer pack van Kenney. Het is mogelijk om assets toe te voegen aan microStudio door ze vanaf je computer naar Sprites te slepen.

Download voor deze opdracht microstudio-kenney-assets.zip . Open deze zip-map en sleep de bestanden naar Sprites.
- Verwijder de sprites
wall,bladeenhero - Hernoem
tile_0002naarwall - Hernoem
tile_0042naarblade - Hernoem
tile_0006naarhero
Test nu je spel. Als alles goed is gegaan ziet het spel er nu uit zoals de screenshot hierboven.
Opdracht
- Verander de huidige sprites door sprites naar keuze, dat mag ook uit een ander asset-pack.
Animation
Je kunt sprites animeren door bij een sprite linksonder op Animation te klikken.

Opdracht
- Geef de
heroeen animatie van miniaal 2 frames.
High Score
In deze opdracht gaan we de high score bijhouden.

- Voeg boven
init = function()het volgende toe:high_score = 0 - Voeg na
if gameover thenhet volgende toe:if score > high_score then high_score = score end - Voeg onder
screen.drawText("GAME OVER",0,0,50,"#FFF")het volgende toe:screen.drawText("HIGHSCORE: " + high_score,0,-50,20,"#FFF")
De code is dan als hieronder.
Code
high_score = 0
init = function()
gameover = 0
running = 0
blades = [200,300,400]
passed = [0,0,0]
score = 0
position = 0
speed = 2
end
update = function()
if gameover>0 then
gameover = gameover+1
if gameover>300 then init() end
elsif running then
position = position+speed
speed = speed + 0.001
if touch.touching and hero_y == 0 then
hero_vy = 7
audio.beep("square tempo 20000 volume 10 span 100 C4 to C6")
end
hero_vy -= 0.3
hero_y = max(0,hero_y+hero_vy)
for i=0 to blades.length-1
if blades[i]<position-120 then
blades[i] = position+280+random.next()*200
passed[i] = 0
end
if abs(position-blades[i])<10 then
if hero_y<10 then
running = 0
gameover = 1
audio.beep("saw tempo 10000 volume 50 span 50 C2 to C4 to C2 to C4")
elsif not passed[i] then
passed[i] = 1
score += 1
audio.beep("saw tempo 960 volume 50 span 20 C6")
end
end
end
else
if touch.touching then running = 1 end
end
end
draw = function()
screen.fillRect(0,0,screen.width,screen.height,"rgb(57,0,57)")
for i=-6 to 6 by 1
screen.drawSprite("wall",i*40-position%40,-80,40)
end
screen.drawSprite("hero",-80,-50+hero_y,20)
for i=0 to blades.length-1
screen.drawSprite("blade",blades[i]-position-80,-50,20)
end
screen.drawText(score,120,80,20,"#FFF")
if gameover then
if score > high_score then high_score = score end
screen.fillRect(0,0,screen.width,screen.height,"rgba(255,0,0,.5)")
screen.drawText("GAME OVER",0,0,50,"#FFF")
screen.drawText("HIGH SCORE: " + high_score,0,-50,20,"#FFF")
elsif not running then
screen.drawText("READY?",0,30,50,"#FFF")
end
end
Toelichting
| code | toelichting |
|---|---|
high_score = 0 | Bij start spel is de high_score gelijk aan 0. |
if score > high_score then high_score = score end | Als de huidige score groter is dan de high_score wordt de high_score gelijk aan de score. Deze code wordt uitgevoerd zodra de gebruiker 'game over' is. |
screen.drawText("HIGH SCORE: " + high_score,0,-50,20,"#FFF") | Geeft de high_score weer in beeld op positie 0,-50 met lettergrootte 20 en in de kleur wit (#FFF). |
Opdracht
- Pas de code aan zodat er
NEW HIGH SCORE:komt te staan zodra er een nieuwe high score is. Is de high score niet verbeterd dan staat erHIGH SCORE:.
Aanvullende opdrachten
- Voeg munten of gems toe om te verzamelen. Deze verhogen de score met
+2.