Code Sketch


bubble fighter
By: rahuldhiman

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()
    }

 
}