Code Sketch


Bixuu02
By: Mhalsakant School
Category: Programming
// ============================================================
// BIXUU'S SPECIAL GAME COLLECTION
// 4 KEYBOARD GAMES
// SNAKE - CAR - ANIME SHOOTER - COLLECT APPLE
// ============================================================

cleari()
originBottomLeft()

// ============================================================
// SCREENS
// 0 = LETTER
// 1 = MENU
// 2 = SNAKE
// 3 = CAR
// 4 = SHOOTER
// 5 = APPLE
// 6 = GAME OVER
// 7 = VICTORY
// ============================================================

var screen = 0

// ============================================================
// KEYBOARD
// ============================================================

var keyUp = false
var keyDown = false
var keyLeft = false
var keyRight = false

// ============================================================
// SNAKE
// ============================================================

var snakeX = 400.0
var snakeY = 250.0

var snakeFoodX = 700.0
var snakeFoodY = 250.0

var snakeScore = 0
var snakeSpeed = 6.0

// ============================================================
// CAR
// ============================================================

var carX = 100.0
var carY = 180.0

var carSpeed = 7.0
var carScore = 0

var car1X = 900.0
var car1Y = 110.0

var car2X = 1200.0
var car2Y = 170.0

var car3X = 1500.0
var car3Y = 240.0

var car4X = 1800.0
var car4Y = 300.0

// ============================================================
// SHOOTER
// ============================================================

var heroX = 100.0
var heroY = 250.0

var bulletX = -100.0
var bulletY = -100.0

var enemyX = 900.0
var enemyY = 250.0

var shooterScore = 0
var canShoot = true

// ============================================================
// APPLE
// ============================================================

var applePlayerX = 400.0
var applePlayerY = 250.0

var appleX = 700.0
var appleY = 300.0

var appleScore = 0

var appleSpeed = 7.0


// ============================================================
// RESET KEYS
// ============================================================

def resetKeys() {

    keyUp = false
    keyDown = false
    keyLeft = false
    keyRight = false
}


// ============================================================
// EXIT TO MENU
// ============================================================

def exitToMenu() {

    screen = 1

    resetKeys()
}


// ============================================================
// EXIT BUTTON
// ============================================================

def drawExitButton(canvas: CanvasDraw) {

    canvas.fill(200, 40, 40)
    canvas.noStroke()

    canvas.rect(
        cwidth - 140,
        cheight - 65,
        110,
        40
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "EXIT",
        cwidth - 105,
        cheight - 40
    )
}


// ============================================================
// RESET SNAKE
// ============================================================

def resetSnake() {

    snakeX = 400.0
    snakeY = 250.0

    snakeFoodX = 700.0
    snakeFoodY = 250.0

    snakeScore = 0

    resetKeys()
}


// ============================================================
// RESET CAR
// ============================================================

def resetCar() {

    carX = 100.0
    carY = 180.0

    carScore = 0

    car1X = cwidth + 100.0
    car2X = cwidth + 400.0
    car3X = cwidth + 700.0
    car4X = cwidth + 1000.0

    car1Y = 110.0
    car2Y = 170.0
    car3Y = 240.0
    car4Y = 300.0

    resetKeys()
}


// ============================================================
// RESET SHOOTER
// ============================================================

def resetShooter() {

    heroX = 100.0
    heroY = 250.0

    bulletX = -100.0
    bulletY = -100.0

    enemyX = cwidth + 100.0
    enemyY = 250.0

    shooterScore = 0
    canShoot = true

    resetKeys()
}


// ============================================================
// RESET APPLE
// ============================================================

def resetApple() {

    applePlayerX = 400.0
    applePlayerY = 250.0

    appleX = 700.0
    appleY = 300.0

    appleScore = 0

    resetKeys()
}


// ============================================================
// LETTER
// ============================================================

def drawLetter(canvas: CanvasDraw) {

    canvas.background(20, 30, 55)

    canvas.fill(255, 248, 220)
    canvas.stroke(212, 175, 55)
    canvas.strokeWeight(4)

    canvas.rect(
        cwidth/2 - 270,
        cheight/2 - 190,
        540,
        380
    )

    canvas.fill(200, 30, 30)

    canvas.text(
        "DEAR BIXUU!",
        cwidth/2 - 70,
        cheight/2 + 135
    )

    canvas.fill(40, 40, 40)

    canvas.text(
        "Thank you for playing all my games!",
        cwidth/2 - 180,
        cheight/2 + 90
    )

    canvas.text(
        "You played every game.",
        cwidth/2 - 120,
        cheight/2 + 60
    )

    canvas.text(
        "So I made a special collection",
        cwidth/2 - 145,
        cheight/2 + 30
    )

    canvas.text(
        "especially for you!",
        cwidth/2 - 90,
        cheight/2
    )

    canvas.fill(220, 50, 50)
    canvas.noStroke()

    canvas.rect(
        cwidth/2 - 120,
        cheight/2 - 110,
        240,
        55
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "OPTION",
        cwidth/2 - 45,
        cheight/2 - 75
    )
}


// ============================================================
// MENU
// ============================================================

def drawMenu(canvas: CanvasDraw) {

    canvas.background(15, 20, 50)

    canvas.fill(255, 215, 0)

    canvas.text(
        "BIXUU'S GAME COLLECTION",
        cwidth/2 - 150,
        cheight - 45
    )

    // SNAKE

    canvas.fill(40, 180, 80)

    canvas.rect(
        120,
        390,
        320,
        110
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "1. SNAKE GAME",
        205,
        450
    )

    canvas.text(
        "30 APPLES TO WIN",
        190,
        420
    )

    // CAR

    canvas.fill(30, 130, 240)

    canvas.rect(
        600,
        390,
        320,
        110
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "2. CAR GAME",
        695,
        450
    )

    canvas.text(
        "AVOID THE CARS",
        685,
        420
    )

    // SHOOTER

    canvas.fill(190, 40, 100)

    canvas.rect(
        120,
        220,
        320,
        110
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "3. ANIME SHOOTER",
        190,
        280
    )

    canvas.text(
        "30 HITS TO WIN",
        195,
        250
    )

    // APPLE

    canvas.fill(230, 110, 30)

    canvas.rect(
        600,
        220,
        320,
        110
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "4. COLLECT APPLE",
        680,
        280
    )

    canvas.text(
        "30 APPLES TO WIN",
        680,
        250
    )
}


// ============================================================
// SNAKE UPDATE
// ============================================================

def updateSnake() {

    if (keyUp) {
        snakeY += snakeSpeed
    }

    if (keyDown) {
        snakeY -= snakeSpeed
    }

    if (keyLeft) {
        snakeX -= snakeSpeed
    }

    if (keyRight) {
        snakeX += snakeSpeed
    }

    if (snakeX < 10) {
        snakeX = 10
    }

    if (snakeX > cwidth - 55) {
        snakeX = cwidth - 55
    }

    if (snakeY < 80) {
        snakeY = 80
    }

    if (snakeY > cheight - 100) {
        snakeY = cheight - 100
    }

    // EAT APPLE

    if (
        math.abs(snakeX - snakeFoodX) < 45 &&
        math.abs(snakeY - snakeFoodY) < 45
    ) {

        snakeScore += 1

        snakeFoodX =
            50 + randomDouble(cwidth - 100)

        snakeFoodY =
            100 + randomDouble(cheight - 180)

        if (snakeScore >= 30) {
            screen = 7
            resetKeys()
        }
    }
}


// ============================================================
// SNAKE DRAW
// ============================================================

def drawSnake(canvas: CanvasDraw) {

    canvas.background(10, 55, 20)

    canvas.fill(255, 255, 255)

    canvas.text(
        "SNAKE GAME",
        30,
        cheight - 35
    )

    canvas.text(
        s"SCORE: $snakeScore / 30",
        30,
        cheight - 65
    )

    // SNAKE BODY

    canvas.fill(40, 210, 70)

    canvas.rect(
        snakeX,
        snakeY,
        45,
        45
    )

    canvas.fill(20, 150, 50)

    canvas.rect(
        snakeX + 25,
        snakeY + 5,
        20,
        35
    )

    // EYE

    canvas.fill(255, 255, 255)

    canvas.ellipse(
        snakeX + 34,
        snakeY + 28,
        7,
        7
    )

    // APPLE

    canvas.fill(240, 30, 30)

    canvas.ellipse(
        snakeFoodX,
        snakeFoodY,
        32,
        32
    )

    canvas.fill(40, 150, 40)

    canvas.rect(
        snakeFoodX + 13,
        snakeFoodY + 27,
        6,
        10
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "WASD / ARROWS = MOVE",
        cwidth - 250,
        cheight - 35
    )

    drawExitButton(canvas)
}


// ============================================================
// CAR UPDATE
// ============================================================

def updateCar() {

    // PLAYER

    if (keyUp) {
        carY += carSpeed
    }

    if (keyDown) {
        carY -= carSpeed
    }

    if (keyLeft) {
        carX -= carSpeed
    }

    if (keyRight) {
        carX += carSpeed
    }

    if (carX < 20) {
        carX = 20
    }

    if (carX > cwidth - 100) {
        carX = cwidth - 100
    }

    if (carY < 85) {
        carY = 85
    }

    if (carY > cheight - 130) {
        carY = cheight - 130
    }

    // CAR 1

    car1X -= 5

    if (car1X < -100) {
        car1X = cwidth + 150
        car1Y = 100 + randomDouble(230)
        carScore += 1
    }

    // CAR 2

    car2X -= 6

    if (car2X < -100) {
        car2X = cwidth + 300
        car2Y = 100 + randomDouble(230)
        carScore += 1
    }

    // CAR 3

    car3X -= 4

    if (car3X < -100) {
        car3X = cwidth + 450
        car3Y = 100 + randomDouble(230)
        carScore += 1
    }

    // CAR 4

    car4X -= 7

    if (car4X < -100) {
        car4X = cwidth + 600
        car4Y = 100 + randomDouble(230)
        carScore += 1
    }

    // COLLISION 1

    if (
        math.abs(carX - car1X) < 70 &&
        math.abs(carY - car1Y) < 45
    ) {
        screen = 6
        resetKeys()
    }

    // COLLISION 2

    if (
        math.abs(carX - car2X) < 70 &&
        math.abs(carY - car2Y) < 45
    ) {
        screen = 6
        resetKeys()
    }

    // COLLISION 3

    if (
        math.abs(carX - car3X) < 70 &&
        math.abs(carY - car3Y) < 45
    ) {
        screen = 6
        resetKeys()
    }

    // COLLISION 4

    if (
        math.abs(carX - car4X) < 70 &&
        math.abs(carY - car4Y) < 45
    ) {
        screen = 6
        resetKeys()
    }
}


// ============================================================
// DRAW CAR
// ============================================================

def drawSmallCar(
    canvas: CanvasDraw,
    x: Double,
    y: Double,
    r: Int,
    g: Int,
    b: Int
) {

    canvas.fill(r, g, b)

    canvas.rect(
        x,
        y,
        80,
        35
    )

    canvas.fill(220, 240, 255)

    canvas.rect(
        x + 20,
        y + 24,
        40,
        13
    )

    canvas.fill(20, 20, 20)

    canvas.ellipse(
        x + 10,
        y,
        18,
        18
    )

    canvas.ellipse(
        x + 58,
        y,
        18,
        18
    )
}


def drawCar(canvas: CanvasDraw) {

    canvas.background(40, 140, 50)

    // ROAD

    canvas.fill(60, 60, 65)

    canvas.rect(
        0,
        70,
        cwidth,
        300
    )

    canvas.fill(255, 255, 255)

    canvas.rect(
        0,
        70,
        cwidth,
        6
    )

    canvas.rect(
        0,
        364,
        cwidth,
        6
    )

    // ROAD LINE

    canvas.fill(255, 215, 0)

    canvas.rect(0, 215, 45, 6)
    canvas.rect(80, 215, 45, 6)
    canvas.rect(160, 215, 45, 6)
    canvas.rect(240, 215, 45, 6)
    canvas.rect(320, 215, 45, 6)
    canvas.rect(400, 215, 45, 6)
    canvas.rect(480, 215, 45, 6)
    canvas.rect(560, 215, 45, 6)
    canvas.rect(640, 215, 45, 6)
    canvas.rect(720, 215, 45, 6)
    canvas.rect(800, 215, 45, 6)
    canvas.rect(880, 215, 45, 6)

    // PLAYER

    drawSmallCar(
        canvas,
        carX,
        carY,
        30,
        144,
        255
    )

    // ENEMY CARS

    drawSmallCar(
        canvas,
        car1X,
        car1Y,
        220,
        30,
        30
    )

    drawSmallCar(
        canvas,
        car2X,
        car2Y,
        255,
        140,
        0
    )

    drawSmallCar(
        canvas,
        car3X,
        car3Y,
        170,
        40,
        200
    )

    drawSmallCar(
        canvas,
        car4X,
        car4Y,
        0,
        180,
        150
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        s"CARS AVOIDED: $carScore",
        30,
        cheight - 35
    )

    canvas.text(
        "WASD / ARROWS = DRIVE",
        cwidth - 250,
        cheight - 35
    )

    drawExitButton(canvas)
}


// ============================================================
// SHOOTER UPDATE
// ============================================================

def updateShooter() {

    if (keyUp) {
        heroY += 7
    }

    if (keyDown) {
        heroY -= 7
    }

    if (keyLeft) {
        heroX -= 7
    }

    if (keyRight) {
        heroX += 7
    }

    if (heroX < 10) {
        heroX = 10
    }

    if (heroX > cwidth - 90) {
        heroX = cwidth - 90
    }

    if (heroY < 80) {
        heroY = 80
    }

    if (heroY > cheight - 110) {
        heroY = cheight - 110
    }

    // BULLET

    if (bulletX >= 0) {

        bulletX += 14

        if (bulletX > cwidth) {

            bulletX = -100
            bulletY = -100
        }
    }

    // ENEMY

    enemyX -= 4

    if (enemyX < -100) {

        enemyX = cwidth + 100

        enemyY =
            100 + randomDouble(cheight - 200)
    }

    // HIT

    if (
        bulletX >= 0 &&
        math.abs(bulletX - enemyX) < 70 &&
        math.abs(bulletY - enemyY) < 60
    ) {

        shooterScore += 1

        bulletX = -100
        bulletY = -100

        enemyX = cwidth + 100

        enemyY =
            100 + randomDouble(cheight - 200)

        if (shooterScore >= 30) {

            screen = 7

            resetKeys()
        }
    }
}


// ============================================================
// SHOOTER DRAW
// ============================================================

def drawShooter(canvas: CanvasDraw) {

    canvas.background(5, 5, 35)

    // STARS

    canvas.fill(255, 255, 255)

    canvas.ellipse(100, 420, 5, 5)
    canvas.ellipse(300, 350, 5, 5)
    canvas.ellipse(500, 430, 5, 5)
    canvas.ellipse(700, 330, 5, 5)
    canvas.ellipse(900, 450, 5, 5)
    canvas.ellipse(1050, 300, 5, 5)

    canvas.text(
        "ANIME SHOOTER",
        30,
        cheight - 35
    )

    canvas.text(
        s"SCORE: $shooterScore / 30",
        30,
        cheight - 65
    )

    // HERO

    canvas.fill(40, 150, 255)

    canvas.rect(
        heroX,
        heroY,
        70,
        45
    )

    canvas.fill(255, 220, 180)

    canvas.ellipse(
        heroX + 20,
        heroY + 12,
        25,
        25
    )

    // HAIR

    canvas.fill(40, 40, 120)

    canvas.rect(
        heroX + 15,
        heroY + 30,
        35,
        10
    )

    // ENEMY

    canvas.fill(230, 40, 80)

    canvas.rect(
        enemyX,
        enemyY,
        70,
        45
    )

    canvas.fill(255, 200, 200)

    canvas.ellipse(
        enemyX + 15,
        enemyY + 15,
        12,
        12
    )

    canvas.ellipse(
        enemyX + 43,
        enemyY + 15,
        12,
        12
    )

    // BULLET

    if (bulletX >= 0) {

        canvas.fill(255, 230, 0)

        canvas.rect(
            bulletX,
            bulletY,
            30,
            8
        )
    }

    canvas.fill(255, 255, 255)

    canvas.text(
        "WASD / ARROWS = MOVE",
        cwidth - 250,
        cheight - 35
    )

    canvas.text(
        "SPACE = SHOOT",
        cwidth - 180,
        cheight - 65
    )

    drawExitButton(canvas)
}


// ============================================================
// APPLE UPDATE
// ============================================================

def updateApple() {

    if (keyUp) {
        applePlayerY += appleSpeed
    }

    if (keyDown) {
        applePlayerY -= appleSpeed
    }

    if (keyLeft) {
        applePlayerX -= appleSpeed
    }

    if (keyRight) {
        applePlayerX += appleSpeed
    }

    if (applePlayerX < 10) {
        applePlayerX = 10
    }

    if (applePlayerX > cwidth - 55) {
        applePlayerX = cwidth - 55
    }

    if (applePlayerY < 80) {
        applePlayerY = 80
    }

    if (applePlayerY > cheight - 110) {
        applePlayerY = cheight - 110
    }

    // COLLECT APPLE

    if (
        math.abs(applePlayerX - appleX) < 50 &&
        math.abs(applePlayerY - appleY) < 50
    ) {

        appleScore += 1

        appleX =
            50 + randomDouble(cwidth - 100)

        appleY =
            100 + randomDouble(cheight - 180)

        if (appleScore >= 30) {

            screen = 7

            resetKeys()
        }
    }
}


// ============================================================
// APPLE DRAW
// ============================================================

def drawApple(canvas: CanvasDraw) {

    canvas.background(100, 180, 80)

    canvas.fill(255, 255, 255)

    canvas.text(
        "COLLECT THE APPLES",
        30,
        cheight - 35
    )

    canvas.text(
        s"SCORE: $appleScore / 30",
        30,
        cheight - 65
    )

    // PLAYER

    canvas.fill(40, 100, 220)

    canvas.rect(
        applePlayerX,
        applePlayerY,
        45,
        45
    )

    canvas.fill(255, 255, 255)

    canvas.ellipse(
        applePlayerX + 10,
        applePlayerY + 27,
        7,
        7
    )

    canvas.ellipse(
        applePlayerX + 28,
        applePlayerY + 27,
        7,
        7
    )

    // APPLE

    canvas.fill(230, 30, 30)

    canvas.ellipse(
        appleX,
        appleY,
        35,
        35
    )

    canvas.fill(40, 150, 40)

    canvas.rect(
        appleX + 15,
        appleY + 30,
        6,
        12
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "WASD / ARROWS = MOVE",
        cwidth - 240,
        cheight - 35
    )

    drawExitButton(canvas)
}


// ============================================================
// VICTORY
// ============================================================

def drawVictory(canvas: CanvasDraw) {

    canvas.background(20, 80, 40)

    canvas.fill(255, 215, 0)

    canvas.text(
        "YOU WIN!",
        cwidth/2 - 55,
        cheight/2 + 70
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "Congratulations Bixuu!",
        cwidth/2 - 110,
        cheight/2 + 25
    )

    canvas.text(
        "You completed the game!",
        cwidth/2 - 110,
        cheight/2 - 5
    )

    canvas.fill(0, 170, 90)

    canvas.rect(
        cwidth/2 - 110,
        cheight/2 - 100,
        220,
        50
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "GAME MENU",
        cwidth/2 - 55,
        cheight/2 - 68
    )
}


// ============================================================
// GAME OVER
// ============================================================

def drawGameOver(canvas: CanvasDraw) {

    canvas.background(60, 10, 15)

    canvas.fill(255, 50, 50)

    canvas.text(
        "GAME OVER!",
        cwidth/2 - 70,
        cheight/2 + 50
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "You crashed!",
        cwidth/2 - 55,
        cheight/2 + 10
    )

    canvas.fill(0, 160, 200)

    canvas.rect(
        cwidth/2 - 100,
        cheight/2 - 80,
        200,
        50
    )

    canvas.fill(255, 255, 255)

    canvas.text(
        "GAME MENU",
        cwidth/2 - 55,
        cheight/2 - 48
    )
}


// ============================================================
// KEY PRESS
// ============================================================

onKeyPress { key =>

    // ESC

    if (key == 27) {

        if (
            screen == 2 ||
            screen == 3 ||
            screen == 4 ||
            screen == 5
        ) {

            exitToMenu()
        }
    }

    // UP

    if (
        key == Kc.VK_W ||
        key == Kc.VK_UP ||
        key == 87 ||
        key == 38
    ) {

        keyUp = true
    }

    // DOWN

    if (
        key == Kc.VK_S ||
        key == Kc.VK_DOWN ||
        key == 83 ||
        key == 40
    ) {

        keyDown = true
    }

    // LEFT

    if (
        key == Kc.VK_A ||
        key == Kc.VK_LEFT ||
        key == 65 ||
        key == 37
    ) {

        keyLeft = true
    }

    // RIGHT

    if (
        key == Kc.VK_D ||
        key == Kc.VK_RIGHT ||
        key == 68 ||
        key == 39
    ) {

        keyRight = true
    }

    // SPACE

    if (key == 32) {

        if (
            screen == 4 &&
            canShoot
        ) {

            bulletX = heroX + 70
            bulletY = heroY + 18

            canShoot = false
        }
    }
}


// ============================================================
// KEY RELEASE
// ============================================================

onKeyRelease { key =>

    if (
        key == Kc.VK_W ||
        key == Kc.VK_UP ||
        key == 87 ||
        key == 38
    ) {

        keyUp = false
    }

    if (
        key == Kc.VK_S ||
        key == Kc.VK_DOWN ||
        key == 83 ||
        key == 40
    ) {

        keyDown = false
    }

    if (
        key == Kc.VK_A ||
        key == Kc.VK_LEFT ||
        key == 65 ||
        key == 37
    ) {

        keyLeft = false
    }

    if (
        key == Kc.VK_D ||
        key == Kc.VK_RIGHT ||
        key == 68 ||
        key == 39
    ) {

        keyRight = false
    }

    if (key == 32) {

        canShoot = true
    }
}


// ============================================================
// MOUSE
// ============================================================

onMouseClick { (x, y) =>

    // LETTER

    if (screen == 0) {

        if (
            x >= cwidth/2 - 120 &&
            x <= cwidth/2 + 120 &&
            y >= cheight/2 - 110 &&
            y <= cheight/2 - 55
        ) {

            screen = 1
            resetKeys()
        }
    }

    // MENU

    else if (screen == 1) {

        // SNAKE

        if (
            x >= 120 &&
            x <= 440 &&
            y >= 390 &&
            y <= 500
        ) {

            resetSnake()
            screen = 2
        }

        // CAR

        else if (
            x >= 600 &&
            x <= 920 &&
            y >= 390 &&
            y <= 500
        ) {

            resetCar()
            screen = 3
        }

        // SHOOTER

        else if (
            x >= 120 &&
            x <= 440 &&
            y >= 220 &&
            y <= 330
        ) {

            resetShooter()
            screen = 4
        }

        // APPLE

        else if (
            x >= 600 &&
            x <= 920 &&
            y >= 220 &&
            y <= 330
        ) {

            resetApple()
            screen = 5
        }
    }

    // EXIT

    else if (
        screen == 2 ||
        screen == 3 ||
        screen == 4 ||
        screen == 5
    ) {

        if (
            x >= cwidth - 140 &&
            x <= cwidth - 30 &&
            y >= cheight - 65 &&
            y <= cheight - 25
        ) {

            exitToMenu()
        }
    }

    // GAME OVER

    else if (screen == 6) {

        if (
            x >= cwidth/2 - 100 &&
            x <= cwidth/2 + 100 &&
            y >= cheight/2 - 80 &&
            y <= cheight/2 - 30
        ) {

            screen = 1
            resetKeys()
        }
    }

    // VICTORY

    else if (screen == 7) {

        if (
            x >= cwidth/2 - 110 &&
            x <= cwidth/2 + 110 &&
            y >= cheight/2 - 100 &&
            y <= cheight/2 - 50
        ) {

            screen = 1
            resetKeys()
        }
    }
}


// ============================================================
// MAIN LOOP
// ============================================================

animateWithCanvasDraw { canvas =>

    if (screen == 0) {

        drawLetter(canvas)

    } else if (screen == 1) {

        drawMenu(canvas)

    } else if (screen == 2) {

        updateSnake()
        drawSnake(canvas)

    } else if (screen == 3) {

        updateCar()
        drawCar(canvas)

    } else if (screen == 4) {

        updateShooter()
        drawShooter(canvas)

    } else if (screen == 5) {

        updateApple()
        drawApple(canvas)

    } else if (screen == 6) {

        drawGameOver(canvas)

    } else if (screen == 7) {

        drawVictory(canvas)
    }
}