hier mein bescheidener Beitrag zum MiniGameContest
Ziel von "Gridlock" ist es den Masterstein aus dem Durchbruch
in der Mauer zu schieben. Horizontale Steine können nur quer
bewegt werden. Vertikale nur in der Senkrechten. Inspiriert hat
mich dieses Spiel auf meinem SE P900. Die Punktebewertung
habe ich Zug- und Levelabhänig gestaltet - das mißfiel mir beim
"Orginal". Mangels der Contest-Einschränkungen gibts keine
speicherbare Hiscoreliste oder Weiterspielen am aktuellen Level.
Es gibt 40 Level und ich habe kein einziges API-Komando benutzt.
Theoretisch müßte das auch mit Purebasic unter Linux laufen.
Ev. kanns ja einer testen.
Gesteuert wird mit der Maus.
Viel Spaß
FGK
Code: Alles auswählen
;
; ------------------------------------------------------------
; GridLock Clone V0.8
; PB Version von F. Kastl für MiniGameContest '05
; Credits an Riku Salkia dem Autor der P900 Version
;  
; ------------------------------------------------------------
;
#BlockSize=24
#BlockHalf = #BlockSize/2
#StatusX = 220
#StatusY = 10
#Master = 0
#Horizontal = 1
#Vertikal= 2
#Width=320
#Height=200
#MoveCost = 2
#BlockBonus = 10
#LevelValue= 5
#MaxLevel = 40
Structure Block
  Typ.b
  Size.b
  XPos.l
  YPos.l
  dx.l
  dy.l
  XLen.l
  YLen.l
  XMap.b
  YMap.b
  MovePlus.b
  MoveMinus.b
  Col.l
  SpriteID.l
EndStructure  
Global HSprite1,HSprite2
Global VSprite1,VSprite2
Global MSprite,MapSprite
Global x,y,oldX,oldY
Global I,btn
Global Bonus.l,Score.l
Global Level.l,Moves.l
Global Done,Quit
Dim Map.b(7,7)
NewList Blocks.Block()
Procedure DrawShadowText(px.l,py.l,Text$,FrontCol.l,ShadowCol.l)
  FrontColor(Red(FrontCol),Green(FrontCol),Blue(FrontCol))
  DrawingMode(1)
  Locate(px,py) 
  DrawText(Text$)
  FrontColor(Red(ShadowCol),Green(ShadowCol),Blue(ShadowCol))
  Locate(px+1,py-1) 
  DrawText(Text$)
EndProcedure  
Procedure DrawBox(px,py,w,h,Text$)
  StartDrawing(ScreenOutput())
    DrawingMode(0)
    Box(px,py,w,h,RGB($C0,$3F,$66))
    Line(px,py,w,0,RGB($EA,$A8,$B9))
    Line(px+w,py,0,h,RGB($EA,$A8,$B9))
    DrawShadowText(w-TextLength(Text$)-15,h/2+10,Text$,RGB(0,0,0),RGB($EA,$A8,$B9))
  StopDrawing()
EndProcedure
 
Procedure DrawLevel()
  DisplaySprite(MapSprite,0,0)
  ForEach Blocks()
    DisplayTransparentSprite(Blocks()\SpriteID,#BlockSize+Blocks()\XPos,#BlockSize+Blocks()\YPos)
  Next  
EndProcedure
Procedure DrawStatus()
  If Moves*#MoveCost<Bonus
    t$="Bonus: " +RSet(Str(Bonus-Moves*#MoveCost),4,"0")
  Else  
    t$="Bonus: " +RSet("",4,"0")
  EndIf  
  StartDrawing(ScreenOutput())
    DrawShadowText(#StatusX,#StatusY,"Level: " + RSet(Str(Level),2,"0"),RGB(255,255,255),RGB(0,0,0))
    DrawShadowText(#StatusX,#StatusY+20,"Score: " + RSet(Str(Score),5,"0"),RGB(255,255,255),RGB(0,0,0))
    DrawShadowText(#StatusX,#StatusY+40,"Moves: " +RSet(Str(Moves),4,"0"),RGB(255,255,255),RGB(0,0,0))
    DrawShadowText(#StatusX,#StatusY+60,t$,RGB(255,255,255),RGB(0,0,0))
  StopDrawing()
EndProcedure
Procedure.l GetBlock()
  R=-1
  ForEach Blocks()
    If x>Blocks()\XPos+#BlockSize And x<(Blocks()\XPos+Blocks()\XLen+#BlockSize)
      If y>Blocks()\YPos+#BlockSize And y<(Blocks()\YPos+Blocks()\YLen+#BlockSize)
        R =ListIndex(Blocks())
        Break
      EndIf  
    EndIf  
  Next  
  ProcedureReturn R
EndProcedure
Procedure CheckMove()
  Blocks()\MoveMinus=0 
  Blocks()\MovePlus=0 
  Select Blocks()\Typ
    Case #Vertikal
      If Map(Blocks()\XMap+1,Blocks()\YMap)=1
        Blocks()\MoveMinus=1 
      EndIf  
      If Map(Blocks()\XMap+1,Blocks()\YMap+Blocks()\Size+1)=1
        Blocks()\MovePlus=1 
      EndIf  
    Case #Horizontal
      If Map(Blocks()\XMap,Blocks()\YMap+1)=1
        Blocks()\MoveMinus=1 
      EndIf  
      If Map(Blocks()\XMap+Blocks()\Size+1,Blocks()\YMap+1)=1
        Blocks()\MovePlus=1 
      EndIf  
    Case #Master
      If Map(Blocks()\XMap,Blocks()\YMap+1)=1
        Blocks()\MoveMinus=1 
      EndIf  
      If Map(Blocks()\XMap+Blocks()\Size+1,Blocks()\YMap+1)=1
        Blocks()\MovePlus=1 
      EndIf  
  EndSelect
EndProcedure
Procedure SetBlocksToMap(Mode.b)
  Select Blocks()\Typ
    Case #Horizontal
      For l=1 To Blocks()\Size
        Map(Blocks()\XMap+l,Blocks()\YMap+1)=Mode
      Next l
    Case #Vertikal
      For l=1 To Blocks()\Size
        Map(Blocks()\XMap+1,Blocks()\YMap+l)=Mode
      Next l
    Case #Master
      For l=1 To Blocks()\Size
        Map(Blocks()\XMap+l,Blocks()\YMap+1)=Mode
      Next l
  EndSelect
EndProcedure  
 
Procedure AlignBlocks()
  If I>-1
    SelectElement(Blocks(),I)
    If Abs(Blocks()\dy) < #BlockSize/4 
      Blocks()\dy=0
    EndIf
    If Abs(Blocks()\dx) < #BlockSize/4 
      Blocks()\dx=0
    EndIf
    Blocks()\YPos =Blocks()\YMap * #BlockSize
    Blocks()\XPos =Blocks()\XMap * #BlockSize
  EndIf
EndProcedure  
Procedure MoveBlocks()
  I= GetBlock()
  If I>-1
    SelectElement(Blocks(),I)
    CheckMove()
    DeltaX = oldX-x
    DeltaY = oldY-y
    dy=0:dx=0
      Select Blocks()\Typ
        Case #Vertikal
          If DeltaY>0             ;Minus Richtung
            If Blocks()\MoveMinus=1
              ProcedureReturn
            EndIf  
          Else                    ;Plus Richtung
            If Blocks()\MovePlus=1
              ProcedureReturn
            EndIf  
          EndIf  
          DeltaX=0
        Case #Horizontal
          If DeltaX>0             ;Minus Richtung
            If Blocks()\MoveMinus=1
              ProcedureReturn
            EndIf  
          Else                    ;Plus Richtung
            If Blocks()\MovePlus=1
              ProcedureReturn
            EndIf  
          EndIf  
          DeltaY=0
        Case #Master
          If DeltaX>0             ;Minus Richtung
            If Blocks()\MoveMinus=1
              ProcedureReturn
            EndIf  
          Else                    ;Plus Richtung
            If Blocks()\MovePlus=1
              ProcedureReturn
            EndIf  
          EndIf  
          DeltaY=0
      EndSelect  
      Blocks()\YPos-DeltaY
      Blocks()\XPos-DeltaX
      Blocks()\dx - DeltaX
      Blocks()\dy - DeltaY
      SetBlocksToMap(0)
      If Blocks()\dy > #BlockSize/4 
        Blocks()\YMap+1 
        Blocks()\dy=0
        Blocks()\YPos =Blocks()\YMap * #BlockSize
        Moves+1
      EndIf
      If Blocks()\dy < -#BlockSize/4
        Blocks()\YMap-1
        Blocks()\dy=0
        Blocks()\YPos =Blocks()\YMap * #BlockSize
        Moves+1
      EndIf
      If Blocks()\dx > #BlockSize/4
        Blocks()\XMap+1 
        Blocks()\dx=0
        Blocks()\XPos =Blocks()\XMap * #BlockSize
        Moves+1
      EndIf
      If Blocks()\dx < -#BlockSize/4
        Blocks()\XMap-1 
        Blocks()\dx=0
        Blocks()\XPos =Blocks()\XMap * #BlockSize
        Moves+1
      EndIf
      SetBlocksToMap(1)
      If Blocks()\Typ=#Master And Blocks()\XMap=5
        Done=1
      EndIf
      If GetBlock()=-1
        btn=0
      EndIf  
    EndIf
EndProcedure  
Procedure GetLevel(LVL)
  If LVL<=#MaxLevel
    ClearList(Blocks())
    Restore Map
    For ty= 0 To 7
      For tx= 0 To 7
        Read Map.b(tx,ty)  
      Next tx
    Next ty
    
    Restore BlockCount
      For l=1 To Level-1
        Read o.b
        Offset.l+(o*4)      ;Bytelänge berechnen 
      Next l
      Read Count.b          ;Blockanzahl einlesen
      
      Bonus.l=Count*#BlockBonus ;Bonus von Blockanzahl abhängig berechnen
      
    Restore LevelTab
      For l= 1 To Offset  
        Read o.b            ;Skip LevelBytes
      Next l
  
    For l=1 To Count
      AddElement(Blocks())
      Read Blocks()\Typ
      Read Blocks()\XMap
      Read Blocks()\YMap
      Read Blocks()\Size
      Select Blocks()\Typ
        Case #Horizontal
          Blocks()\XLen=#BlockSize*Blocks()\Size
          Blocks()\YLen=#BlockSize
          If Blocks()\Size=3
            Blocks()\SpriteID = HSprite1
          Else
            Blocks()\SpriteID = HSprite2
          EndIf  
        Case #Vertikal
          Blocks()\XLen=#BlockSize
          Blocks()\YLen=#BlockSize*Blocks()\Size
          If Blocks()\Size=3
            Blocks()\SpriteID = VSprite1
          Else
            Blocks()\SpriteID = VSprite2
          EndIf  
        Case #Master
          Blocks()\XLen=#BlockSize*Blocks()\Size
          Blocks()\YLen=#BlockSize
          Blocks()\SpriteID = MSprite
      EndSelect
      SetBlocksToMap(1)
      Blocks()\XPos=Blocks()\XMap*#BlockSize;+#BlockSize
      Blocks()\YPos=Blocks()\YMap*#BlockSize;+#BlockSize
    Next l
  Else
    LVL=#MaxLevel
    Quit=1
  EndIf
  Moves=0
  Done=0
EndProcedure
Procedure NextLevel(Text$)
  DrawBox(#BlockSize,#BlockSize,6*#BlockSize,6*#BlockSize,Text$)
  FlipBuffers()
  Delay(2000)
  If Moves*#MoveCost<Bonus
    Score=Score+(Bonus-Moves*#MoveCost)
  EndIf  
  Score = Score + (Level*#LevelValue)
  Level+1
  GetLevel(Level)
EndProcedure  
Procedure.l CreateBlockSprite()
  Read Typ.b
  Read Size.l
  Read R.w
  Read G.w
  Read b.w
  
  Select Typ 
    Case #Horizontal
      x=Size*#BlockSize
      y=#BlockSize
      t$=""
    Case #Vertikal
      x=#BlockSize
      y=Size*#BlockSize
    Case #Master
      x=Size*#BlockSize
      y=#BlockSize
      t$="M"
    EndSelect
  c=RGB(R,G,b)
  SpriteID=CreateSprite(#PB_Any,x,y,0)
  StartDrawing(SpriteOutput(SpriteID))
  DrawingMode(0)
  ;Box(0,0,SpriteWidth(SpriteID),SpriteHeight(SpriteID),c)
  If Typ=#Horizontal Or Typ=#Master
   Circle(#BlockHalf,#BlockHalf,#BlockHalf,c)
   Circle(x-#BlockHalf,#BlockHalf,#BlockHalf,c)
   Box(#BlockHalf,0,x-#BlockSize,#BlockSize,c)
   DrawingMode(4)
   Locate((x-TextLength(t$))/2,4)
   DrawText(t$)
  Else
   Circle(#BlockHalf,#BlockHalf,#BlockHalf,c)
   Circle(#BlockHalf,y-#BlockHalf,#BlockHalf,c)
   Box(0,#BlockHalf,#BlockSize,y-#BlockSize,c)
  EndIf  
  StopDrawing()
  ProcedureReturn SpriteID
EndProcedure
Procedure.l CreateMapSprite(Size.l)
  back = RGB(0,255,255)
  dark = RGB($6B,$91,$94)
  light = RGB(220,255,255)
  
  Restore Map
  For y= 0 To 7
    For x= 0 To 7
      Read Map.b(x,y)  
    Next x
  Next y
  
  x=#Width
  y=#Height
  SpriteID=CreateSprite(#PB_Any,x,y,0)
  StartDrawing(SpriteOutput(SpriteID))
  DrawingMode(0)
  Box(0,0,SpriteWidth(SpriteID),SpriteHeight(SpriteID),RGB(192,192,192))
    x=Size*#BlockSize
    y=Size*#BlockSize
    Box(0,0,x,y,back)
    For y=0 To 7
      For x = 0 To 7
        If Map(x,y)=1
          DrawingMode(0)
          Box(x*#BlockSize,y*#BlockSize,#BlockSize,#BlockSize,RGB(220,255,255))
          DrawingMode(4)
          Box(x*#BlockSize,y*#BlockSize,#BlockSize,#BlockSize,RGB(180,180,255))
        EndIf
      Next x
    Next y  
    Restore LineTab
    x=0:y=0
    For l= 1 To 12
      Read x2
      Read y2
      LineXY(x*#BlockSize,y*#BlockSize,x2*#BlockSize,y2*#BlockSize,dark)
      x=x2:y=y2
    Next l
  StopDrawing()
  ProcedureReturn SpriteID
EndProcedure  
Procedure CreateGameGfx()
  MapSprite=CreateMapSprite(8)
  Restore Blk_Master
  MSprite=CreateBlockSprite()
  Restore Blk_Hor1
  HSprite1=CreateBlockSprite()
  Restore Blk_Ver1
  VSprite1=CreateBlockSprite()
  Restore Blk_Hor2
  HSprite2=CreateBlockSprite()
  Restore Blk_Ver2
  VSprite2=CreateBlockSprite()
EndProcedure
  
If OpenWindow(0, 100, 200, 640,400,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_WindowCentered , "PB Gridlock V0.8")
  InitSprite()
  If CreateMenu(0, WindowID())
    MenuTitle("Game")
    MenuItem( 1, "&Restart")
    MenuItem( 2, "&Skip Level")
    MenuItem( 3, "&Exit")
    MenuTitle("?")
    MenuItem(4, "About")
  EndIf
  
  If OpenWindowedScreen(WindowID(0),0,0,#Width,#Height,1,0,0)
    CreateGameGfx()
    Level=1
    GetLevel(Level)
    Repeat
      DrawLevel()  
      oldX=x:oldY=y
      x=WindowMouseX()/2
      y=WindowMouseY()/2
      EventID.l = WindowEvent()
      Select EventID
        Case #PB_EventMenu
          Select EventMenuID()
            Case 1 ; Restart Level
              DrawBox(#BlockSize,#BlockSize,6*#BlockSize,6*#BlockSize,"Restart Level")
              FlipBuffers()
              Delay(1000)
              GetLevel(Level)
            Case 2
              NextLevel("Skip Level!")
              Bonus=0
            Case 3 ; Exit
              Quit=1
            Case 4 ; About
              MessageRequester("PB-GridLock", "PB-Version von GridLock" + Chr(10) + "geschrieben für den " + Chr(10) + "www.pure-board.de" + Chr(10) + "Mini-GameContest '05" + Chr(10) + "" + Chr(10) + "Autor:   F.G.K " + Chr(10) + "" + Chr(10) + "Credits an Riku Salkia dem Autor der Symbian Phone Version", #MB_OK|#MB_ICONINFORMATION)            
          EndSelect
        Case #WM_LBUTTONDOWN     
          btn=1
        Case #WM_LBUTTONUP     
          btn=0
        Case #PB_Event_CloseWindow 
          Quit = 1
      EndSelect
      If btn 
        MoveBlocks()
      Else
        AlignBlocks()
      EndIf
      DrawStatus()
      If Done=1
        NextLevel("Well Done!")
      EndIf
      FlipBuffers()
      Delay(10)   
    Until Quit = 1
  EndIf  
  
EndIf
End
;{ DatasSection
DataSection
Blk_Master:
Data.b #Master
Data.l 2
Data.w 192
Data.w 192
Data.w 192
Blk_Hor1:
Data.b #Horizontal
Data.l 3
Data.w 0
Data.w 0
Data.w 255
Blk_Hor2:
Data.b #Horizontal
Data.l 2
Data.w 255
Data.w 255
Data.w 0
Blk_Ver1:
Data.b #Vertikal
Data.l 3
Data.w 255
Data.w 0
Data.w 0
Blk_Ver2:
Data.b #Vertikal
Data.l 2
Data.w 0
Data.w 255
Data.w 0
LineTab:
Data.l 8,0,8,3,7,3
Data.l 7,1,1,1,1,7
Data.l 7,7,7,4,8,4
Data.l 8,8,0,8,0,0
Map:
Data.b 1,1,1,1,1,1,1,1
Data.b 1,0,0,0,0,0,0,1
Data.b 1,0,0,0,0,0,0,1
Data.b 1,0,0,0,0,0,0,0
Data.b 1,0,0,0,0,0,0,1
Data.b 1,0,0,0,0,0,0,1
Data.b 1,0,0,0,0,0,0,1
Data.b 1,1,1,1,1,1,1,1
BlockCount:
Data.b  8,11, 6, 7,11,11, 9,14,12,12
Data.b  8, 8,13,12,14,11,12, 9, 8,10
Data.b  7,12,10,10,13,12,10,12,12,10
Data.b 11,11,12,12,11,12,13,11,12,13
LevelTab:
;- Level1:
Data.b #Horizontal,0,0,2
Data.b #Vertikal,0,1,3
Data.b #Vertikal,0,4,2
Data.b #Horizontal,2,5,3
Data.b #Horizontal,4,4,2
Data.b #Master,1,2,2
Data.b #Vertikal,3,1,3
Data.b #Vertikal,5,0,3
;-Level2:
Data.b #Vertikal,0,0,2
Data.b #Master,0,2,2
Data.b #Horizontal,0,3,3
Data.b #Vertikal,2,4,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,3,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertikal,4,2,2
Data.b #Vertikal,5,1,3
Data.b #Horizontal,3,0,3
Data.b #Vertikal,3,1,2
;-Level3:
Data.b #Vertikal,1,4,2
Data.b #Horizontal,1,3,2
Data.b #Horizontal,2,5,2
Data.b #Vertikal,3,2,3
Data.b #Master,1,2,2
Data.b #Vertikal,5,3,3
;-Level4:
Data.b #Vertikal,0,0,3
Data.b #Master,1,2,2
Data.b #Vertikal,2,3,2
Data.b #Horizontal,2,5,3
Data.b #Vertikal,5,4,2
Data.b #Horizontal,3,3,3
Data.b #Vertikal,3,0,3
;-Level5:
Data.b #Vertikal,0,4,2
Data.b #Horizontal,4,4,2
Data.b #Horizontal,4,5,2
Data.b #Vertikal,5,2,2
Data.b #Vertikal,5,0,2
Data.b #Vertikal,4,1,3
Data.b #Vertikal,3,0,3
Data.b #Horizontal,1,3,3
Data.b #Master,1,2,2
Data.b #Vertikal,0,1,3
Data.b #Horizontal,0,0,2
;-Level6:
Data.b #Horizontal,3,5,3
Data.b #Vertikal,3,2,3
Data.b #Vertikal,4,1,3
Data.b #Vertikal,5,1,3
Data.b #Vertikal,3,0,2
Data.b #Master,1,2,2
Data.b #Horizontal,0,1,2
Data.b #Horizontal,0,0,2
Data.b #Horizontal,0,3,2
Data.b #Vertikal,2,3,2
Data.b #Vertikal,0,4,2
;-Level7:
Data.b #Vertikal,5,0,2
Data.b #Vertikal,4,0,2
Data.b #Vertikal,5,2,2
Data.b #Vertikal,3,1,2
Data.b #Master,1,2,2
Data.b #Vertikal,1,0,2
Data.b #Horizontal,2,0,2
Data.b #Horizontal,2,3,2
Data.b #Vertikal,3,4,2
;-Level8:
Data.b #Vertikal,5,0,3
Data.b #Horizontal,4,3,2
Data.b #Horizontal,3,4,3
Data.b #Horizontal,3,5,3
Data.b #Vertikal,2,4,2
Data.b #Horizontal,0,4,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,3,2
Data.b #Master,0,2,2
Data.b #Vertikal,2,2,2
Data.b #Vertikal,3,2,2
Data.b #Horizontal,2,1,2
Data.b #Horizontal,3,0,2
Data.b #Vertikal,4,1,2
;-Level9:
Data.b #Vertikal,1,0,2
Data.b #Master,0,2,2
Data.b #Vertikal,0,3,3
Data.b #Horizontal,1,3,3
Data.b #Vertikal,2,4,2
Data.b #Vertikal,5,4,2
Data.b #Vertikal,5,2,2
Data.b #Horizontal,4,1,2
Data.b #Horizontal,4,0,2
Data.b #Horizontal,2,0,2
Data.b #Vertikal,3,1,2
Data.b #Vertikal,4,2,3
;-Level10:
Data.b #Horizontal,4,0,2
Data.b #Horizontal,4,1,2
Data.b #Vertikal,5,2,3
Data.b #Horizontal,4,5,2
Data.b #Vertikal,3,4,2
Data.b #Horizontal,1,3,3
Data.b #Vertikal,0,2,3
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,1,2
Data.b #Horizontal,0,0,2
Data.b #Vertikal,2,0,2
Data.b #Master,1,2,2
;-Level11:
Data.b #Vertikal,5,4,2
Data.b #Horizontal,3,3,3
Data.b #Horizontal,2,5,3
Data.b #Vertikal,2,3,2
Data.b #Master,1,2,2
Data.b #Vertikal,0,0,3
Data.b #Horizontal,1,0,2
Data.b #Vertikal,3,0,3
;-Levell12:
Data.b #Vertikal,5,0,3
Data.b #Horizontal,3,3,3
Data.b #Vertikal,4,4,2
Data.b #Vertikal,2,1,3
Data.b #Master,0,2,2
Data.b #Vertikal,0,0,2
Data.b #Horizontal,1,0,2
Data.b #Horizontal,0,5,3
;-Level13:
Data.b #Horizontal,4,4,2
Data.b #Horizontal,4,5,2
Data.b #Vertikal,3,4,2
Data.b #Vertikal,0,3,3
Data.b #Horizontal,1,5,2
Data.b #Vertikal,1,2,2
Data.b #Vertikal,2,1,2
Data.b #Master,3,2,2
Data.b #Horizontal,0,0,2
Data.b #Horizontal,2,0,2
Data.b #Vertikal,4,0,2
Data.b #Vertikal,5,1,3
Data.b #Horizontal,3,3,2
;-Level14
Data.b #Horizontal,4,4,2
Data.b #Vertikal,4,2,2
Data.b #Vertikal,5,2,2
Data.b #Horizontal,4,1,2
Data.b #Master,2,2,2
Data.b #Horizontal,2,3,2
Data.b #Vertikal,2,4,2
Data.b #Vertikal,2,0,2
Data.b #Horizontal,0,0,2
Data.b #Vertikal,0,2,2
Data.b #Vertikal,1,2,2
Data.b #Horizontal,0,5,2
;-Level15:
Data.b #Horizontal,1,5,2
Data.b #Horizontal,3,5,2
Data.b #Vertikal,3,3,2
Data.b #Vertikal,2,3,2
Data.b #Master,2,2,2
Data.b #Horizontal,2,1,2
Data.b #Horizontal,3,0,2
Data.b #Horizontal,1,0,2
Data.b #Vertikal,5,1,3
Data.b #Vertikal,4,1,3
Data.b #Horizontal,4,4,2
Data.b #Vertikal,1,2,3
Data.b #Vertikal,0,2,3
Data.b #Horizontal,0,1,2
;-Level16:
Data.b #Vertikal,5,0,3
Data.b #Horizontal,3,3,3
Data.b #Master,3,2,2
Data.b #Vertikal,4,0,2
Data.b #Horizontal,2,0,2
Data.b #Horizontal,2,1,2
Data.b #Vertikal,2,2,3
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,0,2
Data.b #Vertikal,0,1,2
Data.b #Vertikal,1,2,2
;-Level17:
Data.b #Horizontal,0,5,3
Data.b #Horizontal,0,4,3
Data.b #Vertikal,3,3,3
Data.b #Vertikal,4,4,2
Data.b #Vertikal,5,4,2
Data.b #Vertikal,2,2,2
Data.b #Master,0,2,2
Data.b #Horizontal,0,3,2
Data.b #Vertikal,0,0,2
Data.b #Horizontal,1,0,3
Data.b #Horizontal,4,1,2
Data.b #Horizontal,2,1,2
;-Level18:
Data.b #Horizontal,0,5,3
Data.b #Horizontal,1,4,2
Data.b #Vertikal,0,2,3
Data.b #Horizontal,1,3,3
Data.b #Master,1,2,2
Data.b #Vertikal,3,0,3
Data.b #Vertikal,2,0,2
Data.b #Horizontal,0,1,2
Data.b #Horizontal,0,0,2
;-Level19:
Data.b #Horizontal,3,0,2
Data.b #Vertikal,2,0,2
Data.b #Master,2,2,2
Data.b #Vertikal,4,1,2
Data.b #Vertikal,4,3,2
Data.b #Horizontal,2,3,2
Data.b #Horizontal,1,4,3
Data.b #Vertikal,1,2,2
;-Level20:
Data.b #Vertikal,5,2,3
Data.b #Horizontal,3,5,3
Data.b #Horizontal,3,4,2
Data.b #Vertikal,2,4,2
Data.b #Vertikal,2,2,2
Data.b #Vertikal,3,1,2
Data.b #Horizontal,1,1,2
Data.b #Vertikal,0,0,2
Data.b #Master,0,2,2
Data.b #Horizontal,3,0,3
;-Level21:
Data.b #Horizontal,3,5,3
Data.b #Horizontal,0,0,2
Data.b #Vertikal,2,0,2
Data.b #Vertikal,3,0,3
Data.b #Horizontal,1,3,3
Data.b #Master,1,2,2
Data.b #Vertikal,0,1,3
;-Level22:
Data.b #Vertikal,5,4,2
Data.b #Horizontal,4,3,2
Data.b #Horizontal,4,1,2
Data.b #Horizontal,3,0,3
Data.b #Vertikal,3,1,3
Data.b #Vertikal,2,0,2
Data.b #Master,1,2,2
Data.b #Vertikal,0,1,2
Data.b #Vertikal,1,3,2
Data.b #Vertikal,0,4,2
Data.b #Horizontal,1,5,3
Data.b #Horizontal,2,4,2
;-Level23:
Data.b #Horizontal,2,5,3
Data.b #Horizontal,4,4,2
Data.b #Horizontal,4,3,2
Data.b #Vertikal,3,3,2
Data.b #Vertikal,2,3,2
Data.b #Vertikal,2,1,2
Data.b #Master,3,2,2
Data.b #Horizontal,3,1,2
Data.b #Horizontal,2,0,3
Data.b #Vertikal,5,0,3
;-Level24:
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,4,3
Data.b #Horizontal,1,3,2
Data.b #Vertikal,0,2,2
Data.b #Vertikal,1,1,2
Data.b #Master,2,2,2
Data.b #Vertikal,2,0,2
Data.b #Horizontal,3,0,2
Data.b #Vertikal,4,4,2
Data.b #Vertikal,4,2,2
;-Level25:
Data.b #Horizontal,4,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertikal,5,1,3
Data.b #Vertikal,4,2,2
Data.b #Horizontal,4,0,2
Data.b #Horizontal,0,0,2
Data.b #Horizontal,0,1,2
Data.b #Vertikal,2,0,2
Data.b #Master,1,2,2
Data.b #Vertikal,0,2,3
Data.b #Vertikal,1,4,2
Data.b #Horizontal,1,3,3
Data.b #Vertikal,3,4,2
;-Level26:
Data.b #Vertikal,5,4,2
Data.b #Vertikal,5,2,2
Data.b #Horizontal,3,0,3
Data.b #Vertikal,4,1,3
Data.b #Vertikal,3,1,2
Data.b #Horizontal,1,3,3
Data.b #Master,1,2,2
Data.b #Vertikal,1,0,2
Data.b #Vertikal,0,1,2
Data.b #Vertikal,0,3,2
Data.b #Vertikal,2,4,2
Data.b #Horizontal,3,5,2
;-Level27:
Data.b #Horizontal,3,5,3
Data.b #Vertikal,5,2,3
Data.b #Horizontal,3,3,2
Data.b #Vertikal,2,4,2
Data.b #Vertikal,2,2,2
Data.b #Master,0,2,2
Data.b #Vertikal,0,0,2
Data.b #Horizontal,1,0,2
Data.b #Horizontal,1,1,2
Data.b #Vertikal,3,0,3
;-Level28:
Data.b #Vertikal,5,3,3
Data.b #Horizontal,4,1,2
Data.b #Vertikal,3,0,2
Data.b #Horizontal,0,0,3
Data.b #Vertikal,2,1,3
Data.b #Master,0,2,2
Data.b #Vertikal,0,3,2
Data.b #Vertikal,1,3,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,2,5,2
Data.b #Horizontal,2,4,3
Data.b #Horizontal,3,3,2
;-Level29:
Data.b #Vertikal,5,4,2
Data.b #Vertikal,5,2,2
Data.b #Vertikal,4,0,3
Data.b #Horizontal,3,3,2
Data.b #Vertikal,3,4,2
Data.b #Horizontal,0,5,3
Data.b #Vertikal,0,3,2
Data.b #Horizontal,1,4,2
Data.b #Horizontal,1,3,2
Data.b #Master,0,2,2
Data.b #Vertikal,2,1,2
Data.b #Horizontal,0,0,3
;-Level30:
Data.b #Vertikal,5,3,3
Data.b #Horizontal,3,0,3
Data.b #Vertikal,3,1,2
Data.b #Vertikal,2,0,2
Data.b #Master,1,2,2
Data.b #Vertikal,0,0,3
Data.b #Horizontal,0,3,2
Data.b #Horizontal,2,3,2
Data.b #Horizontal,2,5,2
Data.b #Horizontal,0,5,2
;-Level31:
Data.b #Horizontal,3,5,3
Data.b #Vertikal,5,2,3
Data.b #Horizontal,4,1,2
Data.b #Horizontal,3,0,3
Data.b #Horizontal,0,0,2
Data.b #Vertikal,3,1,2
Data.b #Horizontal,3,3,2
Data.b #Vertikal,2,3,3
Data.b #Master,1,2,2
Data.b #Vertikal,0,2,2
Data.b #Horizontal,0,4,2
;-Level32:
Data.b #Vertikal,5,3,3
Data.b #Horizontal,4,0,2
Data.b #Vertikal,3,0,2
Data.b #Vertikal,2,0,3
Data.b #Horizontal,0,0,2
Data.b #Master,0,2,2
Data.b #Vertikal,0,3,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,1,3,2
Data.b #Vertikal,3,4,2
Data.b #Horizontal,3,3,2     
;-Level33:
Data.b #Vertikal,5,3,3
Data.b #Horizontal,3,3,2
Data.b #Vertikal,4,4,2
Data.b #Vertikal,3,4,2
Data.b #Horizontal,0,5,3
Data.b #Horizontal,1,4,2
Data.b #Horizontal,1,3,2
Data.b #Vertikal,0,3,2
Data.b #Master,0,2,2
Data.b #Vertikal,1,0,2
Data.b #Vertikal,2,0,3
Data.b #Horizontal,4,0,2
;-Level34:
Data.b #Vertikal,0,0,2
Data.b #Master,0,2,2
Data.b #Horizontal,0,3,3
Data.b #Vertikal,2,4,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,3,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertikal,3,3,2
Data.b #Vertikal,4,2,2
Data.b #Vertikal,3,1,2
Data.b #Horizontal,3,0,3
Data.b #Vertikal,5,1,3
;-Level35:
Data.b #Vertikal,5,0,3
Data.b #Horizontal,3,0,2
Data.b #Vertikal,3,1,2
Data.b #Vertikal,2,0,3
Data.b #Master,0,2,2
Data.b #Vertikal,0,3,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,1,4,2
Data.b #Vertikal,3,4,2
Data.b #Vertikal,4,4,2
Data.b #Horizontal,1,3,3
;-Level36:
Data.b #Horizontal,4,0,2
Data.b #Vertikal,5,1,3
Data.b #Horizontal,4,4,2
Data.b #Vertikal,3,3,2
Data.b #Horizontal,0,5,2
Data.b #Vertikal,2,4,2
Data.b #Horizontal,0,3,3
Data.b #Vertikal,0,0,3
Data.b #Horizontal,1,0,3
Data.b #Vertikal,1,1,2
Data.b #Horizontal,2,1,2
Data.b #Master,2,2,2
;-Level37:
Data.b #Horizontal,4,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertikal,5,1,3
Data.b #Vertikal,4,1,3
Data.b #Horizontal,4,0,2
Data.b #Vertikal,3,4,2
Data.b #Horizontal,0,5,2
Data.b #Vertikal,0,2,3
Data.b #Horizontal,0,0,2
Data.b #Horizontal,0,1,2
Data.b #Vertikal,2,0,2
Data.b #Master,1,2,2
Data.b #Horizontal,1,3,3
;-Level38:
Data.b #Horizontal,3,5,3
Data.b #Vertikal,5,2,3
Data.b #Horizontal,3,0,3
Data.b #Vertikal,3,1,2
Data.b #Vertikal,0,0,2
Data.b #Master,0,2,2
Data.b #Horizontal,1,1,2
Data.b #Vertikal,2,2,2
Data.b #Vertikal,2,4,2
Data.b #Horizontal,3,3,2
Data.b #Horizontal,3,4,2
;-Level39:
Data.b #Vertikal,5,2,3
Data.b #Horizontal,3,0,3
Data.b #Vertikal,2,0,2
Data.b #Vertikal,2,2,2
Data.b #Vertikal,3,1,2
Data.b #Horizontal,3,3,2
Data.b #Vertikal,0,4,2
Data.b #Vertikal,1,4,2
Data.b #Horizontal,2,5,2
Data.b #Horizontal,2,4,2
Data.b #Horizontal,0,3,2
Data.b #Master,0,2,2
;-Level40:
Data.b #Horizontal,0,5,2
Data.b #Vertikal,2,4,2
Data.b #Horizontal,3,5,2
Data.b #Vertikal,3,3,2
Data.b #Horizontal,4,4,2
Data.b #Vertikal,5,1,3
Data.b #Vertikal,4,0,2
Data.b #Master,3,2,2
Data.b #Vertikal,2,1,2
Data.b #Vertikal,1,1,2
Data.b #Horizontal,1,0,2
Data.b #Vertikal,0,0,3
Data.b #Horizontal,0,3,3
EndDataSection
;}