PB-MiniGame-Contest Thread 2

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.

Welches Game ist am besten?

Umfrage endete am 22.06.2005 21:05

Maze Mission
12
50%
The Snake Projekt
3
13%
Boxy
3
13%
Explo Billiard
1
4%
Grid lock
5
21%
Desktop Tennis
0
Keine Stimmen
 
Insgesamt abgegebene Stimmen: 24

Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag von FGK »

Hallo Leute,

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
;}
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

@Zigipeda: Bei mir läuft dein Spiel nicht :(

Hier noch schnell ein altes ausgegrabenes: (Sonst sind das ein wenig wenig Spiele)

Code: Alles auswählen

;Desktop Tennis

;#########################################
;#  Steuerung: Maus (bitte anschneiden!) #
;#  Beenden:   obere linke Ecke          #
;#                                       #
;#  Punkte:  Rückwand       =  -1 P.     #
;#           Seitenwände    =  10 P.     #
;#           Mein Highscore = 549 P.     #
;#########################################

ExamineDesktops()

W = DesktopWidth(0)
H = DesktopHeight(0)

Bx.f = 40
By.f = H/2 - 10

Mx.f = 3
My.f = 0

;- Fenster oeffnen
OpenWindow(0,   Bx,   By,  20,   20, #PB_Window_Borderless, "Desktop Tennis")

OpenWindow(2,   20, H-20, W-20,   20, #PB_Window_Borderless, "", WindowID(0))
OpenWindow(3,    0,   20,   20, H-20, #PB_Window_Borderless, "", WindowID(0))
OpenWindow(4, W-40,   50,   20,  H/5, #PB_Window_Borderless, "", WindowID(0))
OpenWindow(1,    0,    0,    W,   20, #PB_Window_Borderless, "", WindowID(0))

 Y = DesktopMouseY() - H/10
 Sm = Y

;- Hauptschleife

Repeat

 ;- Eventhandling
 Event = WindowEvent()
 
 If Event = #PB_Event_MoveWindow And EventWindowID() = 2 And WindowY() <> H-20
  UseWindow(2) : MoveWindow(20, H-20)
  ;Debug "Move"
 EndIf
 
 Bx + Mx
 By + My
 
 If Mx > 0 And Bx > W-60 And By > Y And By < Y+H/5 : Mx = (Mx+1)* -1 : My - Sm/15
 ElseIf My > 0 And By > H-40 : My * -1 : Punkte + 10
 ElseIf Mx < 0 And Bx <   20 : Mx * -1 : Punkte - 1
 ElseIf My < 0 And By <   20 : My * -1 : Punkte + 10
 Else
  Y = DesktopMouseY() - H/10
  Sm = Y - Oy : Oy = Y
    
  UseWindow(4) : MoveWindow(W-40,  Y)
  UseWindow(0) : MoveWindow(  Bx, By)
  If Mx > 0 And Bx > W
   Event = 333
   Break
  EndIf
  
 EndIf 
 
 ;- Fenster Färben
 For i=0 To 4
  UseWindow(i)
  StartDrawing(WindowOutput())
   Box(0, 0, WindowWidth(), WindowHeight(), PeekL(?Col + i*4))
   If i=1
    FrontColor($EA, $EB, $15) : BackColor($23, $73, $DC)
    Circle(10, 10, 9)
    Locate(W-150, 2) : DrawText("Punkte: "+Str(Punkte))
   EndIf
  StopDrawing()
 Next
  
 Delay(20)
 
 If DesktopMouseX() < 20 And DesktopMouseY() < 20
  If MessageRequester("Beenden?", "Sie wollen also das Spiel vorzeitig beenden?", 1) = 1 : End : EndIf
 EndIf
 
ForEver

For i=0 To 4
 CloseWindow(i)
Next

;- Highscore
OpenWindow(0, 1, 1, 330, 320, #PB_Window_ScreenCentered, "Highscore")
 CreateGadgetList(WindowID(0))
  OpenFile(0, "Highscore.dat")
  If Lof() < 15 
   For i=1 To 10 : WriteLong(-10-i) : WriteStringN("Niemand") : Next
   FileSeek(0)
  EndIf   
  
  For i=1 To 10
   Points = ReadLong()
   Name.s = ReadString()
   If Punkte > Points
    TextGadget  (10+i,  20, 25*i,  80, 20, Str(Punkte), #PB_Text_Center) : Punkte = -11111
    StringGadget(   i, 110, 25*i, 200, 20,          "", #PB_String_BorderLess)
    Activate = i
    i+1
   EndIf
   TextGadget  (10+i,  20, 25*i,  80, 20, Str(Points), #PB_Text_Center)
   StringGadget(   i, 110, 25*i, 200, 20,        Name, #PB_String_BorderLess | #PB_String_ReadOnly)
  Next
  ButtonGadget (   0, 115, 290, 100, 20, "Eintragen")
  
  CloseFile(0)
  UseWindow(0) : ActivateWindow()
  ActivateGadget(Activate)
  
  
 Repeat
 Until WaitWindowEvent() = #PB_Event_Gadget And EventGadgetID() = 0

 CreateFile(0, "Highscore.dat")
  
 For i=1 To 10
  WriteLong    (Val(GetGadgetText(10+i)))
  WriteStringN (    GetGadgetText(   i) )
 Next
 
DataSection
 Col:
 Data.l $4A16B5, $DC7323, $DC7323, $DC7323, $9BBD31
EndDataSection
Edit: Hey es ist erst 18:59 die Forumuhr geht falsch![/b]
Benutzeravatar
Plankton
Beiträge: 48
Registriert: 20.04.2005 19:48

Beitrag von Plankton »

->>>>EINSENDESCHLUSS<<<<-
OK das wars.
Jetzt können wir ja abstimmen.
Wer andern eine Grube gräbt...
...hat ein Grubengrabgerät

http://plankton.hat-gar-keine-homepage.de/
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

wenn meins nicht geht, hier könnt ihr euch die exe runterladen:
http://people.freenet.de/zigapeda/minigame.exe
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Plankton
Beiträge: 48
Registriert: 20.04.2005 19:48

Beitrag von Plankton »

Komisch
Bei mir funzts einwandfrei.
Wer andern eine Grube gräbt...
...hat ein Grubengrabgerät

http://plankton.hat-gar-keine-homepage.de/
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Ja bei mir auch. liegt vll an verschiedenen PB versionen. das boxy hat bei mir auch nicht funktioniert und da hab ich mir einfach die exe runtergeladen.

@Epyx heißt das alte spiel zufällig Sokobahn? (oder hieß das jetzt Sokobahn.exe also das das .exe zum namen dazugehört)
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Plankton
Beiträge: 48
Registriert: 20.04.2005 19:48

Beitrag von Plankton »

ZeHa's Spiel is am genialsten aber da es mir eher um Spielspaß geht
statt um Komplexität stimme ich für Desktop Tennis (ist mein voller Ernst).
Wer andern eine Grube gräbt...
...hat ein Grubengrabgerät

http://plankton.hat-gar-keine-homepage.de/
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Ich finde Desktop Tennis irgendwie etwas langsam oder wird das später noch schneller bzw. ist es nur bei mir langsam?
[Edit]Spielspaß: Warst du bei meinem schon in level 3 oder 4? da geht es ab! in level 4 hab ich es selber bis jetzt nur mit einem trick geschaft (code verändern und gleich in level 3 starten)[/Edit]
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Plankton
Beiträge: 48
Registriert: 20.04.2005 19:48

Beitrag von Plankton »

zigapeda hat geschrieben:Ich finde Desktop Tennis irgendwie etwas langsam oder wird das später noch schneller bzw. ist es nur bei mir langsam?
Jep später wird es ziemlich schnell.
PS: OK versuch jetzt mal in Level 3 zu kommen. Vieleicht ändere ich meine meinung.(aber nur VIELLEICHT)

Edit: Woha! Am ende machts ja richtig Fun.
Also *Meinung änder* eine Stimme für zigapeda
Wer andern eine Grube gräbt...
...hat ein Grubengrabgerät

http://plankton.hat-gar-keine-homepage.de/
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Ich war gerade kurz vor level 4 mit richtigem spielen (das damals war nur zum testen ob es geht) mit 1460 Punkten also noch 4 Punkte einsammeln und dann wäre ich im nächsten gewesen. aber level 4 ist hart, wer es testen will einfach in Zeile 396 statt level = "level1", level = "level4" eingeben
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Antworten