// All KPL programs start with the word "Program" followed by the // name of your program, and end with the words "End Program". Program Escape Structure BaddyStructure Name As String x As Int y As Int Speed As Decimal End Structure Define YCoordinateofMainSprite As Int Define XCoordinateofMainSprite As Int Define Angle As Int Define InvisibilityCount As Int Define InvisibleCount As Int Define Invisible As Bool Define Baddy As BaddyStructure[9] Method Main() Define StillPlaying As Bool LoadBaddies() LoadBackground() LoadMainSprite() InvisibilityCount = 0 InvisibleCount = 0 StillPlaying = True While StillPlaying = True Delay(30) CheckForAnArrowKey() CheckForInvisibility() AnimateBaddies() If ArrayLength(GetSpritesThatIntersectWith("MainSprite")) > 0 Then StillPlaying = False End If End While End Method Method AnimateBaddies() Define Count As Int Define DeltaX As Decimal Define DeltaY As Decimal Define Theta As Decimal If Invisible = False Then For Count = 1 To 9 If XCoordinateofMainSprite <= Baddy[Count].x Then Baddy[Count].x = Baddy[Count].x - Baddy[Count].Speed End If If XCoordinateofMainSprite >= Baddy[Count].x Then Baddy[Count].x = Baddy[Count].x + Baddy[Count].Speed End If If YCoordinateofMainSprite <= Baddy[Count].y Then Baddy[Count].y = Baddy[Count].y - Baddy[Count].Speed End If If YCoordinateofMainSprite >= Baddy[Count].y Then Baddy[Count].y = Baddy[Count].y + Baddy[Count].Speed End If MoveSpriteToPoint(Baddy[Count].Name, Baddy[Count].x, Baddy[Count].y) DeltaY = YCoordinateofMainSprite - Baddy[Count].Y DeltaX = XCoordinateofMainSprite - Baddy[Count].X If (DeltaX <> 0) And (DeltaY <> 0) Then Theta = ArcTan(DeltaY/DeltaX) End If Theta = 180 * Theta / 3.1415 RotateSprite(Baddy[Count].Name, Theta) Next End If End Method Method LoadBaddies() Define Count As Int For Count = 1 To 9 Baddy[Count].Name = "Baddy" + Count LoadSprite(Baddy[Count].Name, "missile1.gif") ScaleSprite(Baddy[Count].Name, 0.7) ShowSprite(Baddy[Count].Name) Baddy[Count].Speed = (Random(1,6)) //FlipSpriteHorizontally(Baddy[Count].Name) Baddy[Count].x = (Random(1,300) + 300) Baddy[Count].y = (Random(1,300) + 300) Next End Method Method LoadBackground() LoadSprite("Background", "Space.png") SetSpriteCanCollide("Background", False) StampSprite("Background") End Method Method LoadMainSprite() LoadSprite("MainSprite", "Ship1Top.gif") MoveSpriteToPoint("MainSprite", 50, 50) ShowSprite("MainSprite") StretchSprite("MainSprite", 0.3, 0.3) Angle = 180 RotateSprite("MainSprite", Angle) End Method Method CheckForAnArrowKey() If IsKeyDown("Down") Then XCoordinateofMainSprite = XCoordinateofMainSprite + 11 * Cos((Angle * 3.14)/180) YCoordinateofMainSprite = YCoordinateofMainSprite + 11 * Sin((Angle * 3.14)/180) End If If IsKeyDown("Up") Then XCoordinateofMainSprite = XCoordinateofMainSprite - 11 * Cos((Angle * 3.14)/180) YCoordinateofMainSprite = YCoordinateofMainSprite - 11 * Sin((Angle * 3.14)/180) End If If IsKeyDown("Left") Then Angle = Angle - (361 * 3.14)/180 RotateSprite("MainSprite", Angle) End If If IsKeyDown("Right") Then Angle = Angle + 5//(361 * 3.14/180) RotateSprite("MainSprite", Angle) End If MoveSpriteToPoint("MainSprite", XCoordinateofMainSprite, YCoordinateofMainSprite) End Method Method CheckForInvisibility() Define Timeline As Int[13] Define NoTimeline As Int[1] InvisibleCount = InvisibleCount + 1 If Invisible = False Then If IsKeyDown("Space") And InvisibilityCount < 4 Then Timeline[1] = 100 Timeline[2] = 100 Timeline[3] = 100 Timeline[4] = 100 Timeline[5] = 100 Timeline[6] = 100 Timeline[7] = 100 Timeline[8] = 100 Timeline[9] = 100 Timeline[10] = 100 Timeline[11] = 100 Timeline[12] = 100 Timeline[13] = 1000 SetSpriteAnimationTimeline( "MainSprite", True, Timeline) SetSpriteActiveFrame("MainSprite", 13) SetSpriteAnimationTimeline( "MainSprite", False, Timeline) Invisible = True InvisibilityCount = InvisibilityCount + 1 End If Else If InvisibleCount > 100 Then StopSpriteAnimation("MainSprite") InvisibleCount = 0 Invisible = False SetSpriteActiveFrame("MainSprite", 1) End If End If End Method End Program