Code Sketch
sniper_0718
Category: Art
cleari()
// =========================
// PURE WHITE DEFENDER - MONOCHROME EDITION
// =========================
// Deep black asphalt road
val road = Picture.rectangle(400, 700)
road.setFillColor(Color(18, 18, 18, 255))
road.setPenColor(noColor)
road.setPosition(-200, -350)
road.draw()
// Asphalt road borders (dark grey shoulders)
val leftShoulder = Picture.rectangle(12, 700)
leftShoulder.setFillColor(Color(35, 35, 35, 255))
leftShoulder.setPenColor(noColor)
leftShoulder.setPosition(-200, -350)
leftShoulder.draw()
val rightShoulder = Picture.rectangle(12, 700)
rightShoulder.setFillColor(Color(35, 35, 35, 255))
rightShoulder.setPenColor(noColor)
rightShoulder.setPosition(188, -350)
rightShoulder.draw()
// Crisp white center lane dividers
val dash1 = Picture.rectangle(4, 50)
dash1.setFillColor(white)
dash1.setPenColor(noColor)
dash1.draw()
val dash2 = Picture.rectangle(4, 50)
dash2.setFillColor(white)
dash2.setPenColor(noColor)
dash2.draw()
val dash3 = Picture.rectangle(4, 50)
dash3.setFillColor(white)
dash3.setPenColor(noColor)
dash3.draw()
val dash4 = Picture.rectangle(4, 50)
dash4.setFillColor(white)
dash4.setPenColor(noColor)
dash4.draw()
val dash5 = Picture.rectangle(4, 50)
dash5.setFillColor(white)
dash5.setPenColor(noColor)
dash5.draw()
// =========================
// PLAYER DEFENDER (ALL WHITE / ALPINE SPEC)
// =========================
// Main Body (Pure White)
val car = Picture.rectangle(64, 106)
car.setFillColor(white)
car.setPenColor(Color(225, 225, 225, 255))
car.draw()
// Roof Top (Also matching White for a sleek full-white look)
val roofTop = Picture.rectangle(58, 80)
roofTop.setFillColor(white)
roofTop.setPenColor(Color(210, 210, 210, 255))
roofTop.draw()
// Roof Rack Frame (Subtle grey accent)
val roofRack = Picture.rectangle(52, 70)
roofRack.setFillColor(noColor)
roofRack.setPenColor(Color(180, 180, 180, 255))
roofRack.draw()
// Premium Dark Tint Windshield & Windows
val windshield = Picture.rectangle(52, 24)
windshield.setFillColor(Color(15, 25, 35, 255))
windshield.setPenColor(Color(5, 10, 15, 255))
windshield.draw()
val sideWindowL = Picture.rectangle(10, 32)
sideWindowL.setFillColor(Color(15, 25, 35, 255))
sideWindowL.setPenColor(noColor)
sideWindowL.draw()
val sideWindowR = Picture.rectangle(10, 32)
sideWindowR.setFillColor(Color(15, 25, 35, 255))
sideWindowR.setPenColor(noColor)
sideWindowR.draw()
// Front Grille & Signature Round Headlights
val grille = Picture.rectangle(36, 12)
grille.setFillColor(Color(30, 30, 30, 255))
grille.setPenColor(white)
grille.draw()
val headlightL = Picture.circle(5)
headlightL.setFillColor(yellow)
headlightL.setPenColor(noColor)
headlightL.draw()
val headlightR = Picture.circle(5)
headlightR.setFillColor(yellow)
headlightR.setPenColor(noColor)
headlightR.draw()
// Heavy Duty All-Terrain Wheels
val wheel1 = Picture.rectangle(14, 28)
wheel1.setFillColor(Color(15, 15, 15, 255))
wheel1.setPenColor(black)
wheel1.draw()
val wheel2 = Picture.rectangle(14, 28)
wheel2.setFillColor(Color(15, 15, 15, 255))
wheel2.setPenColor(black)
wheel2.draw()
val wheel3 = Picture.rectangle(14, 28)
wheel3.setFillColor(Color(15, 15, 15, 255))
wheel3.setPenColor(black)
wheel3.draw()
val wheel4 = Picture.rectangle(14, 28)
wheel4.setFillColor(Color(15, 15, 15, 255))
wheel4.setPenColor(black)
wheel4.draw()
// =========================
// ENEMY TRAFFIC (DARK GRAY SUV)
// =========================
val enemy = Picture.rectangle(60, 100)
enemy.setFillColor(Color(70, 75, 80, 255))
enemy.setPenColor(Color(40, 40, 40, 255))
enemy.draw()
val enemyWindshield = Picture.rectangle(48, 22)
enemyWindshield.setFillColor(Color(15, 25, 35, 255))
enemyWindshield.setPenColor(noColor)
enemyWindshield.draw()
val enemyTaillightL = Picture.rectangle(8, 4)
enemyTaillightL.setFillColor(Color(255, 0, 0, 255))
enemyTaillightL.setPenColor(noColor)
enemyTaillightL.draw()
val enemyTaillightR = Picture.rectangle(8, 4)
enemyTaillightR.setFillColor(Color(255, 0, 0, 255))
enemyTaillightR.setPenColor(noColor)
enemyTaillightR.draw()
// =========================
// DASHBOARD & HUD
// =========================
val title = Picture.text("DEFENDER 4X4 (FULL WHITE)", 22)
title.setFillColor(white)
title.setPosition(-360, 310)
title.draw()
val speedText = Picture.text("SPEED: 0 KM/H", 20)
speedText.setFillColor(Color(0, 255, 100, 255))
speedText.setPosition(-360, 270)
speedText.draw()
val gearText = Picture.text("GEAR: 1 (LOW)", 18)
gearText.setFillColor(white)
gearText.setPosition(-360, 235)
gearText.draw()
val terrainText = Picture.text("TERRAIN: HIGHWAY ASPHALT", 18)
terrainText.setFillColor(Color(0, 230, 255, 255))
terrainText.setPosition(-360, 200)
terrainText.draw()
val brakeText = Picture.text("BRAKE: OFF", 18)
brakeText.setFillColor(white)
brakeText.setPosition(120, 300)
brakeText.draw()
val controls = Picture.text(
"? ? STEER 1-5 GEAR SPACE ACCELERATE B BRAKE R RESET",
13
)
controls.setFillColor(Color(0, 230, 255, 255))
controls.setPosition(-360, -320)
controls.draw()
// =========================
// VARIABLES & PHYSICS
// =========================
var carX = -29.0
var carVelocityX = 0.0
var speed = 10.0
var gear = 1
var enemyX = 40.0
var enemyY = 350.0
var enemySpeed = 35.0
var dashY = 0.0
var braking = false
var crashed = false
// =========================
// POSITIONS
// =========================
def updatePositions() = {
car.setPosition(carX, -230)
roofTop.setPosition(carX - 29, -195)
roofRack.setPosition(carX - 26, -190)
windshield.setPosition(carX - 26, -190)
sideWindowL.setPosition(carX - 28, -155)
sideWindowR.setPosition(carX + 18, -155)
grille.setPosition(carX - 18, -132)
headlightL.setPosition(carX - 22, -130)
headlightR.setPosition(carX + 16, -130)
wheel1.setPosition(carX - 32, -150)
wheel2.setPosition(carX + 18, -150)
wheel3.setPosition(carX - 32, -220)
wheel4.setPosition(carX + 18, -220)
enemy.setPosition(enemyX, enemyY)
enemyWindshield.setPosition(enemyX - 24, enemyY + 25)
enemyTaillightL.setPosition(enemyX - 24, enemyY + 90)
enemyTaillightR.setPosition(enemyX + 16, enemyY + 90)
dash1.setPosition(0, dashY + 250)
dash2.setPosition(0, dashY + 90)
dash3.setPosition(0, dashY - 70)
dash4.setPosition(0, dashY - 230)
dash5.setPosition(0, dashY - 390)
speedText.update("SPEED: " + speed.toInt + " KM/H")
gearText.update("GEAR: " + gear + (if(gear <= 2) " (4X4 LOW)" else " (HIGHWAY)"))
if (crashed) {
brakeText.update("ROLLED OVER! PRESS R")
} else if (braking) {
brakeText.update("BRAKE: ON")
} else {
brakeText.update("BRAKE: OFF")
}
}
// =========================
// ANIMATION LOOP
// =========================
animate {
if (!crashed) {
// Steering momentum
if (isKeyPressed(Kc.VK_LEFT)) {
carVelocityX -= 0.6
} else if (isKeyPressed(Kc.VK_RIGHT)) {
carVelocityX += 0.6
} else {
carVelocityX *= 0.75
}
if (carVelocityX > 5.0) carVelocityX = 5.0
if (carVelocityX < -5.0) carVelocityX = -5.0
carX += carVelocityX
// Road boundaries
if (carX < -150) {
carX = -150
carVelocityX = 0
}
if (carX > 90) {
carX = 90
carVelocityX = 0
}
// Gearbox limits
val maxSpeed = gear match {
case 1 => 35
case 2 => 70
case 3 => 110
case 4 => 150
case 5 => 180
}
if (isKeyPressed(Kc.VK_1)) gear = 1
if (isKeyPressed(Kc.VK_2)) gear = 2
if (isKeyPressed(Kc.VK_3)) gear = 3
if (isKeyPressed(Kc.VK_4)) gear = 4
if (isKeyPressed(Kc.VK_5)) gear = 5
// Acceleration & Drag
if (isKeyPressed(Kc.VK_SPACE)) {
if (speed < maxSpeed) speed += 0.6
} else if (isKeyPressed(Kc.VK_B)) {
braking = true
speed -= 3.0
} else {
braking = false
speed -= 0.4
}
if (speed < 0) speed = 0
if (speed > maxSpeed) speed = maxSpeed
// Road lines scrolling
dashY -= speed * 0.12
if (dashY < -160) dashY = 0
// Enemy traffic
enemyY -= (speed - enemySpeed) * 0.10
if (enemyY < -450) {
enemyY = 450
val lanes = Array(-120.0, -10.0, 70.0)
enemyX = lanes((Math.random() * 3).toInt)
enemySpeed = 25.0 + (Math.random() * 25.0)
}
// Collision
if (
Math.abs(carX - enemyX) < 50 &&
Math.abs(-230 - enemyY) < 85
) {
crashed = true
speed = 0
}
}
updatePositions()
}
// =========================
// RESET
// =========================
onKeyPress {
case Kc.VK_R =>
carX = -29.0
carVelocityX = 0.0
speed = 10.0
gear = 1
enemyX = 40.0
enemyY = 350.0
dashY = 0.0
braking = false
crashed = false
updatePositions()
}