Code Sketch


Sample Game Code
By: Soham Dabral
Category: Programming
cleari()
clearOutput()

drawStage(black)

val cb = canvasBounds
val len = 180
val len2 = 420

val stage = Picture.rectangle(cwidth, cheight)
stage.setPenColor(cm.white)
stage.setPosition(-cwidth / 2, -cheight / 2)
draw(stage)

val player = Picture.rectangle(50, 50)
player.setPenColor(noColor)
player.setFillColor(cm.white)
drawCentered(player)

val obstacle = Picture.circle(20)

val obstacles = picStack(
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len))
)
obstacles.setPosition(len2, 0)
obstacles.setPenColor(cm.white)
draw(obstacles)

val obstacle2 = picStack(
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len))
)
obstacle2.setPosition(len2 * 2, 0)
obstacle2.setPenColor(cm.white)
draw(obstacle2)

val obstacle3 = picStack(
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len))
)
obstacle3.setPosition(len2 * 3, 0)
obstacle3.setPenColor(cm.white)
draw(obstacle3)

val obstacle4 = picStack(
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len))
)
obstacle4.setPosition(len2 * 4, 0)
obstacle4.setPenColor(cm.white)
draw(obstacle4)

val obstacle5 = picStack(
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len))
)
obstacle5.setPosition(len2 * 5, 0)
obstacle5.setPenColor(cm.white)
draw(obstacle5)

val obstacle6 = picStack(
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len))
)
obstacle6.setPosition(len2 * 6, 0)
obstacle6.setPenColor(cm.white)
draw(obstacle6)

val obstacle7 = picStack(
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len)),
    obstacle.withTranslation(0, random(-len, len))
)
obstacle7.setPosition(len2 * 7, 0)
obstacle7.setPenColor(cm.white)
draw(obstacle7)

animate {
    obstacles.translate(-5, 0)
    obstacle2.translate(-5, 0)
    obstacle3.translate(-5, 0)
    obstacle4.translate(-5, 0)
    obstacle5.translate(-5, 0)
    obstacle6.translate(-5, 0)
    obstacle7.translate(-5, 0)

    if (isKeyPressed(Kc.VK_UP)) {
        player.translate(0, 5)
    }

    if (isKeyPressed(Kc.VK_DOWN)) {
        player.translate(0, -5)
    }

    if (isKeyPressed(Kc.VK_LEFT)) {
        player.translate(-5, 0)
    }

    if (isKeyPressed(Kc.VK_RIGHT)) {
        player.translate(5, 0)
    }

    if (player.collidesWith(obstacles)) {
        stopAnimation()
        activateEditor()
        drawCenteredMessage("You Lose", red, 30)
    }

    if (player.collidesWith(obstacle2)) {
        stopAnimation()
        activateEditor()
        drawCenteredMessage("You Lose", red, 30)
    }

    if (player.collidesWith(obstacle3)) {
        stopAnimation()
        activateEditor()
        drawCenteredMessage("You Lose", red, 30)
    }

    if (player.collidesWith(obstacle4)) {
        stopAnimation()
        activateEditor()
        drawCenteredMessage("You Lose", red, 30)
    }

    if (player.collidesWith(obstacle5)) {
        stopAnimation()
        activateEditor()
        drawCenteredMessage("You Lose", red, 30)
    }

    if (player.collidesWith(obstacle6)) {
        stopAnimation()
        activateEditor()
        drawCenteredMessage("You Lose", red, 30)
    }

    if (player.collidesWith(obstacle7)) {
        stopAnimation()
        activateEditor()
        drawCenteredMessage("You Lose", red, 30)
    }

    if (player.collidesWith(stage)) {
        drawCenteredMessage("You Lose", red, 30)
        stopAnimation()
        activateEditor()
    }
}

showGameTimeCountdown(15, "You Win", green, 30, 0, 40)

activateCanvas()