Function initBricks(sprite.typeSprite) Select game\level Case 1 initBricksLevel1 sprite.typeSprite Case 2 initBricksLevel2 sprite.typeSprite Case 3 initBricksLevel3 sprite.typeSprite Case 4 initBricksLevel4 sprite.typeSprite Case 5 initBricksLevel5 sprite.typeSprite Case 6 initBricksLevel6 sprite.typeSprite End Select End Function Function initBricksLevel1(sprite.typeSprite) xMin = 1 yMin = 1 xMax = 14 yMax = 7 For y = yMin To yMax For x = xMin To xMax subClass = 0 upperCorner = (y = yMin) And (x = xMin Or x = xMax) upperMiddle = (y = yMin + 1) And (x = xMin + 4 Or x = xMax - 4) If Not (upperCorner Or upperMiddle) If y = yMax subClass = subClassShield ElseIf x = xMin Or x = xMax subClass = subClassMove ElseIf y = 3 subClass = subClassBonus ElseIf x = xMin + 1 Or x = xMax - 1 subClass = subClassOrder EndIf sprite.typeSprite = New typeSprite pX = 50 + x * (brickWidth + 1) pY = 50 + y * (brickHeight + 1) initSpriteBrick sprite, pX, pY, subClass, x, y If subClass = subClassBonus sprite\speedLimit = 2 EndIf EndIf Next Next End Function Function initBricksLevel2(sprite.typeSprite) xMin = 1 yMin = 1 xMax = 16 yMax = 12 For y = yMin To yMax For x = xMin To xMax subClass = 0 If (x = xMin Xor x = xMax) Or (y = yMin Xor y = yMax) Or y = yMin + 1 If y = yMin subClass = subClassMove ElseIf y = yMin + 1 subClass = subClassBonus EndIf sprite.typeSprite = New typeSprite pX = 20 + x * (brickWidth + 1) pY = 10 + y * (brickHeight + 1) If y = yMax subClass = subClassBoggle EndIf initSpriteBrick sprite, pX, pY, subClass, x, y If subClass = subClassBoggle offset = Abs(xMax / 2 - x) * 4 sprite\y = pY - offset * 6 - 300 sprite\x = pX sprite\targetX = nothing sprite\targetY = pY + offset - 22 sprite\blue = intoLimits(sprite\blue + offset * 2, paletteMin, paletteMax) sprite\green = intoLimits(sprite\blue - offset, paletteMin, paletteMax) ElseIf subClass = subClassMove sprite\red = 200 sprite\green = 180 sprite\blue = 150 ElseIf subClass = subClassBonus sprite\green = 50 sprite\speedLimit = 3.4 sprite\width = brickWidth / 2 sprite\y = pY If x < xMax / 2 sprite\x = pX - screenWidth / 2 Else sprite\x = pX + screenWidth / 2 EndIf sprite\speedLimit = 1.5 EndIf If y = yMax And (x = xMin Xor x = xMax) sprite\subClass = 0 sprite\blue = 200 EndIf EndIf Next Next End Function Function initBricksLevel3(sprite.typeSprite) xMin = 1 yMin = 1 xMax = 14 yMax = 14 For y = yMin To yMax r = r + 1 For x = xMin To xMax subClass = 0 put = Not put If put sprite.typeSprite = New typeSprite pX = 60 + x * (brickWidth + 1) pY = 60 + y * (brickHeight + 1) If r = x subClass = subClassSpecialBonus EndIf initSpriteBrick sprite, pX, pY, subClass, x, y If subClass = subClassSpecialBonus sprite\targetGreen = 90 sprite\speedLimit = 1 sprite\x = screenLeft - sprite\width sprite\y = pY Else sprite\x = screenWidth + pX sprite\y = pY sprite\speedLimit = 6 EndIf EndIf Next Next End Function Function initBricksLevel4(sprite.typeSprite) xMin = 1 yMin = 1 xMax = 11 yMax = 12 For y = yMin To yMax For x = xMin To xMax put = Not put If put subClass = subClassShield sprite.typeSprite = New typeSprite pX = 90 + x * (brickWidth + 1) pY = 130 + y * (brickHeight + 1) initSpriteBrick sprite, pX, pY, subClass, x, y gray = 100 + y * 10 sprite\red = gray sprite\green = gray sprite\blue = gray shift = shift + 1 If shift > 3 Then shift = 1 Select shift Case 1 sprite\x = pX + sprite\width * 2 sprite\y = pY Case 2 sprite\x = pX sprite\y = pY + sprite\height * 2 Case 3 sprite\x = pX - sprite\width * 2 sprite\y = pY End Select EndIf Next Next End Function Function initBricksLevel5(sprite.typeSprite) xMin = -1 yMin = 1 xMax = 19 yMax = 11 For y = yMin To yMax For x = xMin To xMax If y <= yMin + 2 Or y = yMax If y = yMin + 1 Or y = yMin + 2 subClass = subClassBoggle Else subClass = subClassStatic EndIf sprite.typeSprite = New typeSprite pX = x * (brickWidth) - 2 pY = 100 + y * (brickHeight + 1) initSpriteBrick sprite, pX, pY, subClass, x, y If sprite\subClass = subClassStatic If y = yMin sprite\speedX = 1 Else sprite\speedX = -1.01 EndIf sprite\x = pX sprite\y = pY sprite\targetX = nothing sprite\targetY = nothing ElseIf sprite\subClass = subClassBoggle sprite\speedLimit = 10 EndIf EndIf Next Next End Function Function initBricksLevel6(sprite.typeSprite) xMin = 1 yMin = 1 xMax = 16 yMax = 3 For y = yMin To yMax put = Not put For x = xMin To xMax If put If y = yMax subClass = subClassStatic Else subClass = subClassBonus EndIf sprite.typeSprite = New typeSprite pX = x * (brickWidth) - 2 pY = 100 + y * (brickHeight + 1) initSpriteBrick sprite, pX, pY, subClass, x, y If sprite\subClass = subClassStatic sprite\speedX = -1 sprite\x = pX sprite\y = pY sprite\targetX = nothing sprite\targetY = nothing EndIf EndIf Next Next End Function Function initSpriteBrick(sprite.typeSprite, pX, pY, subClass, x, y) initSpriteDefault sprite sprite\width = brickWidth sprite\height = brickHeight sprite\x = pX sprite\y = pY sprite\red = 128 - y * 13 sprite\green = 128 + y * 16 sprite\blue = 255 - y * 7 sprite\layer = layerBack sprite\energy = 3 sprite\colorSpeed = 15 sprite\speedX = 0 sprite\speedY = 0 sprite\speedStep = .1 sprite\class = classBrick sprite\counterMax = 4 sprite\subClass = subClass Select sprite\subClass Case subClassShield sprite\red = paletteMax Case subClassMove sprite\blue = 30 sprite\energy = 3 Case subClassBonus, subClassSpecialBonus sprite\green = paletteMax sprite\layer = layerFront ;Case subClassOrder Case subClassBoggle sprite\red = 0 sprite\green = 100 sprite\blue = 100 sprite\speedLimit = 6 End Select sprite\targetX = sprite\x sprite\targetY = sprite\y sprite\x = sprite\x + Rnd(90) - 30 sprite\y = sprite\y + Rnd(90) - 30 End Function Function initSpriteBoggle(sprite.typeSprite) triggerSound "bump", 1 sprite\subClass = 0 sprite\class = classBoggleBrick sprite\speedY = -6 sprite\targetSpeedY = 1.6 sprite\speedStep = .1 sprite\red = 200 sprite\green = paletteMin sprite\blue = paletteMin sprite\targetRed = paletteMin sprite\targetGreen = 200 sprite\targetBlue = 200 sprite\counterMax = 15 sprite\layer = layerFront End Function