MakeCode Arcade kan kodes med blokke eller JavaScript/Python. Skift mellem dem øverst. Skærmen er 160×120 pixels. Hvert eksempel står alene.
let spiller = sprites.create(img`
. . . . f f . .
. . f f f f . .
. f 5 5 5 5 f .
`, SpriteKind.Player)
let fjende = sprites.create(img`...`,
SpriteKind.Enemy)
let mønt = sprites.create(img`...`,
SpriteKind.Food)
// Position og hastighed
spiller.setPosition(80, 60)
spiller.vx = 50 // pixel/sekund
spiller.ay = 200 // tyngdekraft
SpriteKind (Player, Enemy, Food, Projectile osv.). Glemmer du at sætte kind, rammer dine overlap-events aldrig. Lav egne via sprites.create(img`...`, SpriteKind.create()) eller udvid listen.// Controller: pilene styrer spilleren
controller.moveSprite(spiller, 100, 100)
// Manuel fysik
spiller.vy = -100 // hop (y peger NED)
spiller.ay = 300 // tyngdekraft trækker ned
spiller.fx = 100 // friktion
// Hold spilleren på banen
spiller.setStayInScreen(true)
// Spring af vægge
bold.setBounceOnWall(true)
// Følg en anden sprite
skygge.follow(spiller)
// Køres når Player rører Enemy
sprites.onOverlap(SpriteKind.Player,
SpriteKind.Enemy,
function(spiller, fjende) {
info.changeLifeBy(-1)
fjende.destroy(effects.fire, 100)
})
// Spørg direkte
if (spiller.overlapsWith(mønt)) {
info.changeScoreBy(1)
}
// Når en sprite ødelægges
sprites.onDestroyed(SpriteKind.Enemy,
function(sprite) {
info.changeScoreBy(10)
})
onOverlap er som et event: defineres én gang og kører hver gang de to kinds rører hinanden. Parametrene er de to sprites – brug dem, ikke globale variabler.
controller.A.onEvent(
ControllerButtonEvent.Pressed,
function() {
let skud = sprites
.createProjectileFromSprite(
img`...`, // billede
spiller, // fra denne sprite
0, -100) // vx, vy (op = negativ y)
skud.setKind(SpriteKind.Projectile)
})
// Ødelæg fjende ved ram
sprites.onOverlap(SpriteKind.Projectile,
SpriteKind.Enemy,
function(skud, fjende) {
skud.destroy()
fjende.destroy(effects.disintegrate, 100)
info.changeScoreBy(50)
})
// Info-panel vises automatisk øverst
info.setScore(0)
info.changeScoreBy(10)
info.setLife(3)
info.changeLifeBy(-1)
// Nedtælling
info.startCountdown(60) // 60 sekunder
info.onCountdownEnd(function() {
game.gameOver(false) // tabt
})
// Når liv = 0
info.onLifeZero(function() {
game.gameOver(false)
})
// Opret kortet i Tilemap-editoren først
scene.setTileMap(assets.tilemap`bane1`)
// Baggrundsfarve (eller billede)
scene.setBackgroundColor(9)
scene.setBackgroundImage(assets.image`baggrund`)
// Kamera følger spilleren
scene.cameraFollowSprite(spiller)
// Spawn ved tiles
tiles.placeOnRandomTile(spiller,
assets.tile`start`)
// Vægge: tiles med "wall" markeret
// gør at sprites ikke kan gå igennem
Workflow: klik på Assets → Tilemap → tegn banen. Markér nogle tiles som vægge (wall) i editoren – så stopper sprites automatisk ved dem uden kode.
// Køres hver frame (~30 gange/sek)
game.onUpdate(function() {
if (spiller.y > 120) { // faldet ud?
info.changeLifeBy(-1)
spiller.setPosition(80, 60)
}
})
// Køres hvert X millisekund
game.onUpdateInterval(2000, function() {
// spawn en fjende hvert 2. sekund
let fjende = sprites.create(img`...`,
SpriteKind.Enemy)
fjende.setPosition(160,
randint(0, 120))
fjende.vx = -50
})
music.play(music.createSoundEffect(
WaveShape.Square, 500, 1, 255, 0,
100, SoundExpressionEffect.None,
InterpolationCurve.Linear),
PlaybackMode.UntilDone)
// Partikel-effekt ved død
fjende.destroy(effects.fire, 200)
// Game over med stil
game.setGameOverEffect(true,
effects.confetti)
game.setGameOverMessage(false,
"Prøv igen!")
game.gameOver(true) // vundet
// Tilfældigt tal
let x = randint(0, 160)
// Sprite siger noget (boble)
spiller.say("Av!", 500) // i ms
// Flag: gennemgennemsigtig
spiller.setFlag(SpriteFlag.Ghost, true)
// Fjern ALLE fjender
for (let f of sprites.allOfKind(
SpriteKind.Enemy)) {
f.destroy()
}
// Spritedata: gem værdi på sprite
sprites.setDataNumber(fjende,
"liv", 3)
sprites.create(img, kind)ny sprite med kind
controller.moveSprite(s, vx, vy)pile styrer sprite
sprites.onOverlap(k1, k2, f)kollision-event
info.changeScoreBy(n)opdatér score
info.changeLifeBy(n)opdatér liv
game.onUpdate(f)kør hver frame
game.gameOver(vundet)afslut spillet
scene.setTileMap(t)sæt bane
sprite.destroy(effekt, ms)fjern med effekt
randint(min, max)tilfældigt heltal
sprite.setFlag(flag, on)fx Ghost gennem vægge
SpriteKind → overlap-events rammer aldrig.vy = -100, tyngdekraft er ay = +300.sprites.create() inde i onUpdate → tusindvis af sprites og spillet fryser. Spawn via onUpdateInterval i stedet.sprite.say("test") eller game.splash("x=" + spiller.x) for at se værdier.