Code Sketch
bubble fighter
def p1 = Picture {
}
def p2 = p1
def p3 = Picture {
}
def p4 = p3
def p6 = Picture {
}
def p5 = Picture
{
repeat(360) {
forward(0.05)
right(1)
}
}
def p7 = Picture {
}
val tgreen = Color(153, 153, 255)
def guy = GPics(
rot(120) -> p3,
rot(1) -> p1,
rot(1) -> p7,
rot(1) -> p5,
rot(1)-> p4,
rot(1) -> p2,
rotp(30, d4, 0) -> p6
)
def border(size: Float) = Picture {
forward(size)
}
val lostMsg = trans(-20, 0) -> Picture {
write("K.O")
}
val wonMsg = trans(-20, 0) -> Picture {
write("You Won!")
}
clearWithUL(Cm)
val cb = canvasBounds
val xmax = cb.x.abs
val ymax = cb.y.abs
val goodguy = fillColor(yellow) * trans(xmax / 3, 2) * scale(0.3) -> guy
val badguy = fillColor(black) * scale(0.3) -> guy
val badguy2 = fillColor(black) * trans(-xmax / 2, 0) * scale(0.3) -> guy
val badguy3 = fillColor(black) * trans(2 * xmax / 3, 0) * scale(0.3) -> guy
val badguy4 = fillColor(black) * trans(-xmax / 2, ymax / 2) * scale(0.3) -> guy
val badguy5 = fillColor(black) * trans(2 * xmax / 3, ymax / 2) * scale(0.3) -> guy
playMp3Loop("E:/Tring tring/Digital/track.mp3")
invisible()
draw(goodguy, badguy, badguy2, badguy3, badguy4, badguy5)
drawAndHide(lostMsg, wonMsg)
drawStage(Color(153, 0, 204))
val bf = 100
//val sf = 2
val speed =.4
var velocities = Map(
badguy -> vec,
badguy2 -> vec2,
badguy3 -> vec3,
badguy4 -> vec4,
badguy5 -> vec5
)
def badBehavior(self: Picture) {
var newv = velocities(self).rotate(random(10) - 5)
self.transv(newv)
if (self.collidesWith(stage)) {
newv = bounceVecOffStage(newv, self)
self.transv(newv)
}
velocities += self -> newv
}
badguy.react(badBehavior)
badguy2.react(badBehavior)
badguy3.react(badBehavior)
badguy4.react(badBehavior)
badguy5.react(badBehavior)
goodguy.react { self =>
if (isKeyPressed(Kc.VK_RIGHT)) {
self.translate(speed , 0)
}
if (isKeyPressed(Kc.VK_LEFT)) {
self.translate(-speed, 0)
}
if (isKeyPressed(Kc.VK_UP)) {
self.translate(0, speed )
}
if (isKeyPressed(Kc.VK_DOWN)) {
self.translate(0, -speed )
}
}
def time = System.currentTimeMillis
val startTime = time
val others = List(badguy, badguy2, badguy3, badguy4, badguy5)
goodguy.react { self =>
if (self.collision(others).isDefined) {
stopAnimation()
self.setFillColor(brown)
lostMsg.setPosition(0, 0)
lostMsg.visible()
}
}