PB 5.20 - Pure Snake - Schlangensimulation

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PB 5.20 - Pure Snake - Schlangensimulation

Beitrag von STARGÅTE »

Die Items kann man ganz schlecht sehen, vllt machst du n eiege Grafik dazu oder etwas mehr als zwei Lines().

SpriteCollision zu verwenden ist glaube ich auch unnötig, es reicht hier völlig, den Abstand zwischen Item und Schlangenkopf zu berechnen:
PseudoCode:

Code: Alles auswählen

V_Length(V_Subtraction(Difference, Snake\Node(0), Items()\Position))
und zu testen ob es kleiner ... ist.

Ansonsten schön, dass du etwas mit der Schlange anfangen konntest.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: PB 5.20 - Pure Snake - Schlangensimulation

Beitrag von True29 »

noch mal eine verbesserung/änderung.
- items besser zu erkennen.
- Hilfe funktion.
- steigender Schwierigkeitsgrad

ziel: sammel so viele items wie möglich der beste möge gewinnen.

folgende funktionen fehlen:
Kollision schlange mit sich selbst.
Wände / Hinternisse.


Viel spaß.
werde erst mal nicht mehr dran weiter machen eventuell will ja wer anderst.

Code: Alles auswählen

;------------------------------
;GAME PB SNAKE
;VER BETA
;DATE 02.10.2013
;PB 5.20 Final
;
;Orginal von Startgate
;Erweitert von True29
;------------------------------

;TODO
;Schlange collision mit körper.
;körper collision items

Enumeration ;window
  #Window
EndEnumeration

Enumeration 
  #Window
  #Sprite_Snake
  #Sprite_square_red
  #Sprite_square_green
  #Sprite_square_purple  
  #givespeed 
  #reducespeed
  #givenote 
  #reducenote 
  #doublespeed
  #doublenode
  #textbackground
EndEnumeration


;// Game 
#Window_Titel = "PBSnake beta"
#Window_Width = 1024
#Window_Height = 800
#Text_Fade_Speed = 1.0
#ItemRespawnRate = 3
;#notestocollect = 30
#ItemsOnScreen = 5
#MaxItemsOnScreen = 10
#MaxTransparenz = 255


;// features setting
#MaxFeatures = 6
#speed_up = 10
#speed_down = 20
#double_speed_up = 40
#double_snake_node = 4
#remove_node = 1
#add_node = 2

;// Snake

Global SnakeLength   = 3 ; Schlagenteile
Global SnakeVelocity = 100 ; Geschwindigkeit

#MaxSnakeVelocity = 1500
#MinSnakeVelocity = 50
#MaxSnakeLength = 30
#MinSnakeLength = 2

;- Vector-Include

Structure Vector
  X.f : Y.f
EndStructure

Procedure.i V_Set(*Use.Vector, X.f, Y.f)
  *Use\X = X
  *Use\Y = Y
  ProcedureReturn *Use
EndProcedure

Procedure.i V_Copy(*Use.Vector, *Source.Vector)
  *Use\X = *Source\X
  *Use\Y = *Source\Y
  ProcedureReturn *Use
EndProcedure

Procedure.i V_Add(*Use.Vector, *Source.Vector, Factor.f=1.0)
  *Use\X + *Source\X*Factor
  *Use\Y + *Source\Y*Factor
  ProcedureReturn *Use
EndProcedure

Procedure.i V_Multiply(*Use.Vector, Value.f)
  *Use\X * Value
  *Use\Y * Value
  ProcedureReturn *Use
EndProcedure

Procedure.i V_Addition(*Destination.Vector, *Source1.Vector, *Source2.Vector)
  *Destination\X = *Source1\X + *Source2\X
  *Destination\Y = *Source1\Y + *Source2\Y
  ProcedureReturn *Destination
EndProcedure

Procedure.i V_Subtraction(*Destination.Vector, *Source1.Vector, *Source2.Vector)
  *Destination\X = *Source1\X - *Source2\X
  *Destination\Y = *Source1\Y - *Source2\Y
  ProcedureReturn *Destination
EndProcedure

Procedure.f V_Length(*Source.Vector)
  ProcedureReturn Sqr(*Source\X * *Source\X + *Source\Y * *Source\Y)
EndProcedure

Procedure.i V_Normalize(*Use.Vector)
  Protected Length.f = V_Length(*Use)
  If Length
    *Use\X / Length
    *Use\Y / Length
  EndIf
  ProcedureReturn *Use
EndProcedure

Procedure V_Orthogonalize(*Use.Vector)
  V_Normalize(*Use)
  Swap *Use\X, *Use\Y
  *Use\X = -*Use\X
EndProcedure

Procedure.i V_SetLength(*Use.Vector, Length.f)
  V_Normalize(*Use)
  V_Multiply(*Use, Length)
  ProcedureReturn *Use
EndProcedure


Structure item
  sprite.i
  Position.Vector
  color.i
  feature.i  
EndStructure

Structure text
  fposition.Vector    
  text.s
  duration.i
  durationdone.i
  rate.f
  fEndTime.f
  loop.i
  ftransparent.f
  Sprite.i
EndStructure

Structure Snake
  Sprite.i
  Array Node.Vector(2)
  Velocity.Vector
EndStructure

Global LevelRate.i
Global ItemsOnScreen.i
Global time_min.i,time_sec.i
Define NewList Texte.text()
Define NewList Items.item()
Global NotesCollected.i
Define Gamerunning.i
Global ftime.f, Time.i = ElapsedMilliseconds()

Procedure MoveSnake(*Snake.Snake, TargetX.f, TargetY.f)
  
  Protected I.i, Last.i = ArraySize(*Snake\Node())
  Protected Line.Vector
  
  With *Snake
    
    ; Kopf bewegen
    V_Set(\Velocity, TargetX-\Node(0)\X, TargetY-\Node(0)\Y)
    V_SetLength(\Velocity, 24)
    V_Subtraction(Line, \Node(0), \Node(1))
    V_Add(\Velocity, Line, 4)
    V_SetLength(\Velocity,SnakeVelocity)
    
    ; Schlagenteile hinterher ziehen
    V_Add(\Node(0), \Velocity,ftime)
    For I = 1 To Last
      V_Subtraction(Line, \Node(I-1), \Node(I))
      V_SetLength(Line, V_Length(Line)-16)
      V_Add(\Node(I), Line)
    Next
    
  EndWith
  
EndProcedure

Procedure DisplaySnake(*Snake.Snake)
  
  Protected I.i, Last.i = ArraySize(*Snake\Node())
  Protected Line.Vector, Line2.Vector, Orth.Vector, Orth2.Vector
  Protected Dim Node.Vector(Last)
  
  With *Snake
    
    CopyArray(\Node(), Node())
    For I = 1 To Last-1
      V_Normalize(V_Subtraction(Line, Node(I-1), Node(I+1)))
      V_Add(Node(I), Line, Sin(I-ElapsedMilliseconds()*0.005)*5)
    Next
    
    ; Kopf
    ClipSprite(\Sprite, 80, 0, 48, 64)
    V_Normalize(V_Subtraction(Line, Node(0), Node(1)))
    V_Normalize(V_Subtraction(Line2, Node(1), Node(2)))
    V_Orthogonalize(V_Copy(Orth, Line))
    V_Orthogonalize(V_Addition(Orth2, Line, Line2))
    TransformSprite(\Sprite,
                    Node(1)\X-Orth2\X*16, Node(1)\Y-Orth2\Y*16,
                    Node(0)\X-Orth\X*16+Line\X*24, Node(0)\Y-Orth\Y*16+Line\Y*24,
                    Node(0)\X+Orth\X*16+Line\X*24, Node(0)\Y+Orth\Y*16+Line\Y*24,
                    Node(1)\X+Orth2\X*16, Node(1)\Y+Orth2\Y*16)
    DisplayTransparentSprite(\Sprite, 0, 0)
    
    ; Schwanz
    ClipSprite(\Sprite, 0, 0, 40, 64)
    V_Normalize(V_Subtraction(Line, Node(Last-1), Node(Last)))
    V_Normalize(V_Subtraction(Line2, Node(Last-2), Node(Last-1)))
    V_Orthogonalize(V_Copy(Orth, Line))
    V_Orthogonalize(V_Addition(Orth2, Line, Line2))
    TransformSprite(\Sprite,
                    Node(Last)\X-Orth\X*16-Line\X*16, Node(Last)\Y-Orth\Y*16-Line\Y*16,
                    Node(Last-1)\X-Orth2\X*16, Node(Last-1)\Y-Orth2\Y*16,
                    Node(Last-1)\X+Orth2\X*16, Node(Last-1)\Y+Orth2\Y*16,
                    Node(Last)\X+Orth\X*16-Line\X*16, Node(Last)\Y+Orth\Y*16-Line\Y*16)
    DisplayTransparentSprite(\Sprite, 0, 0)
    
    ; Mittelteil
    ClipSprite(\Sprite, 40, 0, 16, 64)
    For I = 1 To Last-2
      V_Normalize(V_Subtraction(Line, Node(I), Node(I+1)))
      V_Normalize(V_Subtraction(Line2, Node(I+1), Node(I+2)))
      V_Orthogonalize(V_Addition(Orth, Line, Line2))
      V_Normalize(V_Subtraction(Line2, Node(I-1), Node(I)))
      V_Orthogonalize(V_Addition(Orth2, Line, Line2))
      TransformSprite(\Sprite,
                      Node(I+1)\X-Orth\X*16, Node(I+1)\Y-Orth\Y*16,
                      Node(I)\X-Orth2\X*16, Node(I)\Y-Orth2\Y*16,
                      Node(I)\X+Orth2\X*16, Node(I)\Y+Orth2\Y*16,
                      Node(I+1)\X+Orth\X*16, Node(I+1)\Y+Orth\Y*16)
      DisplayTransparentSprite(\Sprite, 0, 0)
    Next
    
  EndWith
  
EndProcedure


Procedure Additem(List items.item(),color,feature,sprite)
  AddElement(items())
  items()\Position\X = Random(WindowWidth(#Window)-50,50)
  items()\Position\Y = Random(WindowHeight(#Window)-50,50)
  items()\color = color
  items()\feature = feature
  items()\sprite = sprite
EndProcedure


Procedure Displayitem(List items.item())  
  With items()
    ForEach items()     
      DisplayTransparentSprite(\sprite,\Position\x,\Position\y)
    Next
  EndWith
EndProcedure

Procedure.s Get_Feature_Text(feature)
  Protected text.s
  
  Select feature
    Case #givespeed
      text = "Speed up"
    Case #givenote 
      text = "Add Node"
    Case #reducespeed
      text = "Slow Down"
    Case #reducenote  
      text = "Remove Node"
    Case #doublespeed  
      text = "Double Speed"
    Case #doublenode 
      text = "Double Node"  
  EndSelect 
  
  ProcedureReturn text  
EndProcedure


Procedure Get_Color_for_sprite(feature)
  Protected color.i
  
  Select feature
    Case #givespeed,#givenote
      color = #Red  
    Case #reducespeed,#reducenote
      color = #Green
    Case #doublespeed,#doublenode
      color = RGB($CC,$33,$99)
  EndSelect 
  
  ProcedureReturn color
EndProcedure

Procedure Get_sprite_name(feature)
  Protected sprite.i
  
  Select feature
    Case #givespeed,#givenote
      sprite = #Sprite_square_red  
    Case #reducespeed,#reducenote
      sprite = #Sprite_square_green 
    Case #doublespeed,#doublenode
      sprite = #Sprite_square_purple
  EndSelect 
  
  ProcedureReturn sprite
EndProcedure

Procedure ADD_Text(List Texte.text(),x,y,text.s,Frontcolor,BackColor,duration.i,fStartTransparent.i,loop.i,EndTime.f)
  AddElement(Texte())
  Texte()\fPosition\X = x
  Texte()\fPosition\Y = y
  Texte()\text = text
  Texte()\fEndTime = EndTime.f
  Texte()\loop = loop.i
  Texte()\duration = duration.i
  Texte()\ftransparent = fStartTransparent
  StartDrawing(ScreenOutput())
  Texte()\Sprite = CreateSprite(#PB_Any,TextWidth(text),TextHeight(text),#PB_Sprite_AlphaBlending)        
  StopDrawing()
  
  StartDrawing(SpriteOutput(Texte()\Sprite))                      
  DrawText(0,0,text,Frontcolor,BackColor)
  StopDrawing()    
  ProcedureReturn sprite
EndProcedure

Procedure Display_text(List Texte.text(),ftime.f)  
  
  With Texte()
    ForEach Texte()         
      \Rate = #MaxTransparenz/\fEndTime
      \ftransparent + \Rate * ftime.f           
      ;// Max Transparenz 0 setzen
      If \ftransparent >= #MaxTransparenz 
        \ftransparent = 0
        \durationdone + 1
      EndIf      
      DisplayTransparentSprite(\sprite,\fposition\x,\fposition\y,\ftransparent)              
      ;// Sprite löschen bei anz durchläufe und loop false
      If \loop = #False
        If \duration =< \durationdone
          durationdone = 0
          FreeSprite(\Sprite)
          DeleteElement(Texte())
        EndIf
      EndIf         
    Next
  EndWith
EndProcedure

Procedure Handle_Time(List Items.item())
  Static settime.i
  Static checktime.f
  
  ;add time to leveltime
  If settime = 0
    checktime = Time
    settime = 1
  EndIf
  If time - checktime > 1000                               
    LevelRate + 1
    If time_sec = 60
      time_min + 1
      time_sec = 0
      LevelRate + 2                        
    EndIf         
    time_sec + 1
    settime = 0         
    
    ;// add purpur item
    While LevelRate > 1
      LevelRate = 0
      Additem(items(),RGB($CC,$33,$99),Random(#doublenode,#doublespeed),Get_sprite_name(9))
    Wend
  EndIf
EndProcedure



InitSprite()
InitKeyboard()

UsePNGImageDecoder()



OpenWindow(#Window, 0, 0, #Window_Width, #Window_Height, #Window_Titel, #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)


;// Sprites erstellen
SpriteQuality(#PB_Sprite_BilinearFiltering)
CatchSprite(#Sprite_Snake,?Snake, #PB_Sprite_AlphaBlending)


CreateSprite(#Sprite_square_Red,30,30,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#Sprite_square_red))              
Circle(15,15,10,#Red)
StopDrawing()

CreateSprite(#Sprite_square_Green,30,30,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#Sprite_square_Green))        
Circle(15,15,10,#Green)
StopDrawing()

CreateSprite(#Sprite_square_purple,30,30,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#Sprite_square_purple))        
Circle(15,15,10,RGB($FF,$00,$FF))
StopDrawing()

Define Snake.Snake, I.i
ReDim Snake\Node(SnakeLength)

Snake\Sprite = #Sprite_Snake

For I = 0 To SnakeLength
  V_Set(Snake\Node(I), 400-I*16,WindowHeight(#Window)*0.7)
  V_Set(Snake\Velocity, 20, 0)
Next

Additem(items(),#Blue,#givespeed,#Sprite_square_red)
ADD_Text(Texte(),WindowWidth(#Window)*0.4, WindowHeight(#Window)*0.5,"Press Space to start",#Black,$E0E0E0,0,0,#True,#Text_Fade_Speed)

Gamerunning = #False

Repeat
  ExamineKeyboard()
  If KeyboardReleased(#PB_Key_F12)
    MessageRequester(#Window_Titel,"Control the Snake With Mouse. Catch the items on screen - Green are good ,Red are bad ,didn't touch the purple one")
  EndIf
  If KeyboardReleased(#PB_Key_Space)
    If Gamerunning = #True
      ADD_Text(Texte(),WindowWidth(#Window)*0.4, WindowHeight(#Window)*0.5,"press space to continue",#Black,$E0E0E0,0,0,#True,#Text_Fade_Speed)
      Gamerunning = #False
    Else
      Gamerunning = #True
      FreeSprite(Texte()\Sprite)
      DeleteElement(Texte())
    EndIf
  EndIf
  
  Repeat
    Select WindowEvent()
      Case #PB_Event_CloseWindow
        End           
      Case #Null
        Break
    EndSelect      
    
  ForEver
  
  ftime = (ElapsedMilliseconds()-Time)/1000      
  Time = ElapsedMilliseconds()   
  
  
  ClearScreen($E0E0E0)
  
  If Gamerunning 
    Handle_Time(items())  
    MoveSnake(Snake, WindowMouseX(#Window), WindowMouseY(#Window))
    Displayitem(items())          
  EndIf
  
  DisplaySnake(Snake)
  Display_text(Texte(),ftime)   
  
  With items()
    ForEach items()
      ;// check collision              
      For g = 0 To SnakeLength        
        If SpriteCollision(\sprite,\Position\x,\Position\y,#Sprite_Snake,snake\Node(g)\X,snake\Node(g)\Y)                        
          ;// effect auslösen
          Select \feature
            Case #givespeed
              If SnakeVelocity + #speed_up < #MaxSnakeVelocity
                SnakeVelocity + #speed_up
              EndIf
            Case #givenote 
              If SnakeLength + #add_node < #MaxSnakeLength
                SnakeLength + #add_node
                ReDim Snake\Node(SnakeLength)
              EndIf
            Case #reducespeed
              If SnakeVelocity - #speed_down > #MinSnakeVelocity
                SnakeVelocity - #speed_down
              EndIf
            Case #reducenote  
              If SnakeLength - #remove_node > #MinSnakeLength
                SnakeLength - #remove_node
                ReDim Snake\Node(SnakeLength)
              EndIf
            Case #doublespeed  
              If SnakeVelocity + #double_speed_up < #MaxSnakeVelocity
                SnakeVelocity + #double_speed_up
              EndIf
            Case #doublenode  
              If SnakeLength + #double_snake_node < #MaxSnakeLength
                SnakeLength + #double_snake_node
                ReDim Snake\Node(SnakeLength)
              EndIf
          EndSelect            
          ;// Text erzeugen
          ADD_Text(Texte(),\Position\x,\Position\y,Get_Feature_Text(\feature),Get_Color_for_sprite(\feature),$E0E0E0,1,0,#False,#Text_Fade_Speed)          
          ;// element löschen
          DeleteElement(items())          
          ;// element zählen          
          ItemsOnScreen - 1
          NotesCollected + 1                      
          ;// neues element                
          For i = 0 To Random(#ItemRespawnRate,1)
            Define nextitem = Random(4+#MaxFeatures,5)
            ;// max items reach ?
            If ItemsOnScreen + 1 < #ItemsOnScreen
              ItemsOnScreen + 1
              Additem(items(),Get_Color_for_sprite(nextitem),nextitem,Get_sprite_name(nextitem))                
            EndIf                
          Next i
        EndIf
      Next g
    Next
  EndWith
  
  ;Collision mit rand
  If snake\Node(0)\X >= WindowWidth(#Window) Or snake\Node(0)\X <= 0 Or snake\Node(0)\Y >= WindowHeight(#Window) Or snake\Node(0)\Y <= 0
    MessageRequester(#Window_Titel,"Verloren !", 0)    
    End
  EndIf
  
  ;Finish
  ;If #notestocollect = NotesCollected
  ;  MessageRequester(#Window_Titel,"Erfolg !", 0)    
  ;  End
  ;EndIf
  
  ;// Draw GUI   
  StartDrawing(ScreenOutput())
  DrawingMode(#PB_2DDrawing_Transparent )  
  
  ;DrawText(0,0,"Eingesammelt: "+Str(NotesCollected) +" noch zu sammeln: "+ Str(#notestocollect - NotesCollected),#Black)   
  DrawText(0,0,"Eingesammelt: "+Str(NotesCollected),#Black)   
  DrawText(0,20,"Time: "+Str(time_min)+" : " + Str(time_sec),#Black)
  DrawText(WindowWidth(#Window)-TextWidth("F12 - Help"),0,"F12 - Help",#Black)
  StopDrawing()
  
  
  FlipBuffers()
  
ForEver

DataSection
  Snake:
  Data.q $0A1A0A0D474E5089,$524448490D000000,$2000000080000000,$7022DA0000000608,$4942730400000025
  Data.q $64087C0808080854,$5948700900000088,$1B0000AF1B000073,$00001C911A5E01AF,$6F53745845741900
  Data.q $7700657261777466,$63736B6E692E7777,$9B67726F2E657061,$49310E00001A3CEE,$6D5BED9C78544144
  Data.q $BF74FA7E95C59590,$C3B0CC0CEE6BF71F,$2446E1289DD1A8CC,$9A5B535B1650AE0B,$FF1258C62823F32C
  Data.q $4DC4D64FE4D92668,$36B18A98881A5AC9,$CA8B446D49553465,$540CA4525C4D71AE,$02C9658A4A76B661
  Data.q $066218D65D64E085,$3F7AFDCB99981818,$BDCEE6778FECFBBA,$BAA9E1015D9820C0,$7DDDBF774F3BEF35
  Data.q $33305A7DD39F774E,$F87C82E21084042E,$3E4D0DF686DAC303,$874A943EBEBE8A8F,$5A14EC308B8C1045
  Data.q $309B6D6115D68497,$44C532913EC676A6,$F58A99338654ACE3,$60E0F00EE5CE36FD,$C02030D606050307
  Data.q $66015AFFE29843EF,$E85487E6F8032C16,$340032169AED0D43,$5A26A6325C8A3A0A,$C9975A45638A1D5B
  Data.q $8C2D662494A94518,$0000B56B0AECC491,$A56FA52C508588A2,$71A575D6355AB6B4,$B2375C65254B6D1C
  Data.q $605A8D0D0EC54C99,$1FC228F9F2D6194A,$D3C0553EC2CD00A5,$31D5329D8D000F5A,$EFFF93CB0C332A67
  Data.q $24753810BAF5DF7D,$6B49161844E7B7B7,$E38A4B4E9496B487,$D6A5638E4736B492,$2D6A5871D2C3195A
  Data.q $0415AC89992C5295,$10ACA44C303EC9D8,$631B5A94B4A31AD6,$98E38831B178E3B4,$E9D19AB5740FDF63
  Data.q $C1C19B667A7A67B4,$698056F38452F3A1,$05C052687C094FA1,$A29D530006D4D331,$0091B585098C2075
  Data.q $77FE99C66DFC90DA,$8B1CC1236B0F22F1,$966B48D4C617C64C,$94AE31A42EB910C6,$632A52928C632B52
  Data.q $244384631D8A22A4,$38C88A4B58E0211C,$040209110404B2D6,$5ADA444B60196B5B,$1B010C94A44599AB
  Data.q $8086C002006B210A,$5CE266AD51918D0E,$65AC0B008A2755AE,$CE0149CE1A5D6700,$1D1D1882BEBEF424
  Data.q $7142304114EC30A2,$188754DB53A9D3EC,$4F3C2D662218C923,$011B3112D611B312,$B3069E7922B66078
  Data.q $CD16FBDE00079E11,$612B3056DEA48107,$44490B5A58A54B0C,$4C18C70910ED18CA,$2E4108E16B5D9B0A
  Data.q $5D6AE402EC109EC0,$3E0DADF3E3C30F6B,$9D7A4A5B3367ACC2,$085141B5B49C211C,$DACD4A903A944235
  Data.q $52D62A644A3D9445,$AB888550C6CA8899,$E2010615398D5144,$5EF304343D71B6B6,$6BF05A601559C1B3
  Data.q $3356A864A95E849B,$FBE57C0832B39732,$9A6FC71CAC71C656,$49F9243B27718CDA,$0D9882CC965AC829
  Data.q $60024CC160082949,$FBD4C28015A87491,$92829480AEA48CC5,$4250AD656224B136,$4DC089BB37464DC0
  Data.q $47EAA28BAEC78E2A,$8210EE36B2AE0DAD,$69FBE73665D9985B,$64CB6ECCA595042B,$454CCE392247FEAE
  Data.q $6A0CA4941C72516B,$7EDF8CA18416D38E,$304A4CECFA01BF7B,$68BF044FC22402A3,$134A951E8B151B51
  Data.q $5294A6185409932A,$8E371C211C9295D6,$344DD610AEC44BAD,$F254888AB36A6A7E,$3241274956664A57
  Data.q $02529BBA72633243,$F93B26800B3C1120,$5998244416045762,$C70C2ABA5B5A4332,$30E78DAC7B0DAD7B
  Data.q $AD9E58029B66169B,$B3A0B7CF9071C714,$513130089C4E0E73,$57307D5B5A04649B,$CD4E8A2881363630
  Data.q $F3CF7EF8DFBC896A,$551C731E0086E54A,$3B5AAB8A9594C634,$704A4CF50783C1D1,$681F5F7E12980546
  Data.q $2A5426952C84F878,$01E4442794211D25,$C692A6D98A5599F0,$A992F084252807C1,$8F6298DA4D6B5C8D
  Data.q $3D01DB0E38AEB531,$A7332C9802DD5ACB,$D6648401C201EB01,$5FBFE4614BD8D53C,$1CBCF0F94A902108
  Data.q $161E441F4A424082,$3D52FA9EA7879C2E,$7D1F478DFFDDEEDD,$4BD2F0A5CB9EFEA1,$73B10820894A418F
  Data.q $7063AF57EAFC2EE7,$F2F94371C711DFF0,$EDB74E9E3F77EF98,$452A4E23198EDAD5,$9E216F6F612BAD15
  Data.q $120149A0951A0BB2,$6D45A2D2CF8033C1,$6CC387DF1C08E474,$2889A53334C36B7D,$66D99652D6B3644B
  Data.q $91952AB336619089,$D65D44C60DEA819B,$2F3FB9FFEAC01C9A,$C0C9C70BAEB80852,$05D6F5B87A520718
  Data.q $74D735C4EFE7FCF8,$C0C0C51A1D0E0003,$FFD7EB0210E74FDF,$18C60001DABABA2D,$7AB54A943AEF7BDC
  Data.q $37C5E2C01EEB759A,$BC15E4FC9FB5F69C,$553631389C46E2F8,$E7BF7DE7B6BCF59A,$75DC78E6519D6B25
  Data.q $2560F07851B5B2FD,$420CE0151B667E06,$35C3C3900A152CFA,$B32318C803E12947,$6ADC03C8913C8842
  Data.q $FC32A56E7081E52D,$67D38DAC0B6B6B29,$5294142105220AEA,$6D05BE7C832B3598,$8E0F07199728AD6D
  Data.q $1F19322421050841,$C2C9696803D6FADF,$FCBC4EEAFABC5D75,$4B9720440B1220F2,$007DA748D586C361
  Data.q $E3FC7E2BFD2F4BC0,$6F5BFCEC5CEFF5AD,$777BFAECC747471D,$DFEC3AF1BC6E0777,$F379B19980000EFF
  Data.q $5290000FD03031AF,$55DD6EB602D2E962,$C02A33BEDB6DB3CF,$C19F55AAC19F55AA,$26FF5FEBE06F3D9E
  Data.q $B417D8E1852A952A,$663BFFCECD94DCAE,$50B6BBEFAD54C6C1,$6F4C42CB5A1A1D80,$9BBFE8C94154D11A
  Data.q $D2A72E6E0048050A,$6EE01DB231BCAA52,$8C106F44211AE821,$E2626A7BEE2C51DC,$7C2249727D68D6BF
  Data.q $DB85D3D3D0F1C701,$685DC771DC0BFB6E,$969680BE7C805B6B,$BE060629FF4E901B,$5E9FA78FBE1B0D8C
  Data.q $73ADAD14799E6787,$8B356A2E440A6520,$745CF77745DF7BBD,$7225FCF73DC6CC74,$6A952801259234B9
  Data.q $562BD1BD7B69B4D8,$D4BF7F55366C8ADC,$FDE9A5BFEFE80078,$C18DA78E2176D7B5,$0C763BF13416CB65
  Data.q $D58639191F84DAC1,$F7F45EFFBFA1D7AB,$6BABA1D7ABD58BDF,$F79BCC67F96CB62E,$8B179FE131800051
  Data.q $55295AE5442CBC6F,$20C0908B15E6B996,$68BF9AF4C04B9635,$98613BEE3F1D1B51,$220EE2279C41054D
  Data.q $8B8BAA6311F006EE,$CC3DC8C104D737C5,$DD3A4195286005A6,$FBCAE5618FD6D68D,$1E2789E02F2BCAF0
  Data.q $9A9BA6E00F0FC3C1,$D1D18CDFAFD67237,$C562B1F69D200022,$A950DB8DC6FC4DAD,$C356A82E7F059704
  Data.q $6BCF26D6082177A6,$1B18EDC1C1853CD6,$B7070638D8D8C71B,$D8BAEB871F87E1E3,$242EEAB558FBE1B0
  Data.q $17FDBF8B17B6C783,$A7264CBC70166C63,$D06EA6DC6A0E850A,$8E395C747A3A4186,$036AAEBACEB1C5EB
  Data.q $0F3BDAB5D5F009D0,$0EDC6D66BE074A94,$FF07C1E2D7BDBD00,$421DAF3C2F5CB906,$C998C60863B1D838
  Data.q $3536D7E3FC7C0ACA,$D3EDC5CC990871C0,$FBD36779BCD8907F,$FE06C8E3862FB7ED,$F66CF84A95E34E3F
  Data.q $F3FACEDCEE7715F4,$3AF4FD3C05F2BE57,$185F1F5ABB3C5E24,$9D861502D5ABCA04,$C3FE8F4D5AEB71A2
  Data.q $9E91932AD7BFF7E2,$ACE803662D6B3294,$0025C9F1C4578756,$0D7E8FA3C392D2D0,$6FAC8F23C12D96CB
  Data.q $7C8072E516D680AA,$D17E2FC0356A833E,$1AFAB2E779DDE53C,$572B894DA706AD59,$0E87F0797326432E
  Data.q $7E5F2C29FFD7D68D,$B7D8E3E1F0F9FD73,$EF1C7DDFBBFE666F,$8725A5A3174BA585,$C997D8A8A224F162
  Data.q $8EAD5959BAE1D9CC,$2890E04693012D34,$7910248D9B293B16,$17470C35A00322D6,$FCFE6000DB89E187
  Data.q $B44802CF0BC2F1EB,$30383E9BB7DEEF73,$B4D800033E7C8FD0,$9AA6CD9B05937B69,$BE5CA3B69B4DC4A6
  Data.q $B88D13FE5B2DF97C,$C0D1DDDDD0EBC6F1,$AE7F2A7677A344EF,$D61278B142E9E9E8,$AD2B6389C1123746
  Data.q $025F4E077D7D136D,$08054A52497BBD92,$FDD0ED5ADCEA98CF,$D1FA3F1E6B6B4400,$7EB026C7638000D3
  Data.q $8BD85C2D0FA6E6FD,$B00952A6A313CBE5,$5B8AC57E26B6E371,$E0D8E3E772FFA3EB,$61068DF13576D7B5
  Data.q $FE467BBADD6C1B1C,$6B580003CC28507C,$009AC713C9A662AE,$9853BC866869EAFA,$E1F057A05BA84C3A
  Data.q $C652B1CA94015D42,$C39994A1C034631A,$F162E003CFD5F4E9,$60DAD0CBEFBBEE24,$BD853ABFBAD69CCE
  Data.q $9351892D96C6DF7B,$BF135972B958F8C9,$1E15C1AB5476D369,$26E2FB7EDC48E380,$7E4F891C7420D1BE
  Data.q $E86860F9FC8CD172,$D61083FC9100002D,$69EB06062905B126,$2B687CF9C0A01526,$002A1121D666B495
  Data.q $F9CDE78F75AF3C26,$76DC21EEFBBC0025,$97CB05B4DA6C4ADB,$8AF3774F0B8582DF,$A6E5CBCA64800AC5
  Data.q $E5F27EECF972E0FD,$FF7FB000741A37C6,$05BF81B46874383B,$E18AE7F2A716A18D,$B5BF77220000C3E1
  Data.q $2464F8D10C871D88,$EEF2D684764A0251,$5CE66AA9933807DD,$46001388C64A2D60,$6FF6D38ECDEEA952
  Data.q $CFDBFB7C42083800,$7F79BCC7EEBBAEE0,$B26CD908A531F4D2,$66E9FD3E3ED3A5CE,$051F56DF3FE7F83F
  Data.q $4ED4FCD0BF0FDA17,$76AEAEC30D1A2360,$13F57ABF3330582C,$3D0F7E9AAFE4B258,$C2EC763BF4A68DF4
  Data.q $07E6EB80002593C9,$3BF7C6CA0828A5AD,$CECFA01B06BA636D,$894A472C309AED9E,$1FC2211E01C6600A
  Data.q $786EE5CC5FABE9D2,$4787C380011DC892,$01D2A500FE1FC3F0,$D2E9611B5831C104,$9BC66654FC4CA402
  Data.q $516C7142A9AEFE6F,$AF78CE5C6E6F34A9,$5AF1A725FEFEC09D,$5795A7232391FC27,$1CFB3ECFCFEB572E
  Data.q $11093D26C7D5FABE,$4A9875F7D7BED529,$1286232646F3DAF9,$F760421118892028,$0D401880A16DBBEE
  Data.q $B6663805A58E22C8,$BAFE6E5CE5D32935,$60AC8E18737E3A28,$B50D75A0D75A6DB6,$FEBC5BF8DC6C11DA
  Data.q $9B21D7F5FD712FFA,$D31083BFBDDEC76D,$3C8E8E8FD03035FA,$5CFE685F87EF0B80,$D05B319A6F374E90
  Data.q $F7C0DF3BE77E7764,$0037EFB7D80FF7BE,$FF07C1E3E60B0580,$087C5F8BE114511A,$78E8B9933FF5BD6F
  Data.q $08195252FDDD7F3E,$27478787A6A54AC3,$9A0C386800D68523,$050A3774343B0254,$7DF58CA56692A544
  Data.q $88422A2001B6B5A9,$77B3FBE138EBCF09,$5A53F870C3DBAD68,$08E38D9D5ACCFED7,$1210A769348C8E47
  Data.q $FB9EE7851C703842,$59ACC27FD3FA7E01,$61D378C4C4D061C9,$23A1D0E35785C2D0,$1874DAA952A0C3F5
  Data.q $F781E352FB3F3674,$BF135F6DB6DC09DE,$39D9DF0944016974,$67BF1358F93E4F07,$4A84BEE7DCF81BCF
  Data.q $1C9D7EF4A4099925,$A4E3B2E8C6A3D906,$6CFB878664BE7CC2,$A1D4C03C5A7811A3,$B8E8F4746D45A2D0
  Data.q $8C679A885736DD72,$B5AC9A52D22B5B4C,$319089645848F272,$5C7145B1D146B746,$CCF2601761B598F9
  Data.q $3C1C7E25C4B2E0EC,$038196BDDEEC1335,$4E9AA54B69DBDBDC,$B28B32AE8E3910A5,$98A5042F8667C694
  Data.q $DB7CEBCF7CA44539,$D6AEC10BE003C9F7,$1EB08847A575AFB1,$D673A10BCE8C6210,$0FA007003EC014DA
  Data.q $D144428A23084059,$BAD8BBEB75B3BDB4,$1F094C8406B3D5F5,$2972E7E146EADC48,$013E75D78913E27C
  Data.q $4512A8A549F1CC21,$083C1F416F6F51E3,$090AF3DB54D67E06,$AD54574E994356AB,$42BAC88721C71D26
  Data.q $225D88971D8E3758,$A0E99C244BB35A38,$2575084290CC5248,$4D6121545C666C24,$A142882801141A09
  Data.q $A7AEBA588A342839,$CE76B4AC54A966B4,$1412B8B310D42821,$1F7A25368507317A,$E92D3A44A6D6E161
  Data.q $C67E161C25F8584A,$B581E8043179E70C,$317C25C862E57115,$380C3574E7CCC664,$25D86AE5701CBEF5
  Data.q $3972BC0B3DEC357B,$CAE0C7FA1CB9F2F4,$02FFF87AE38BF0F5,$3646C3E924DA3596,$444E454900000000
  Data.q $00000000826042AE
EndDataSection
i7,12gb ram , Windows 10 ,Purebasic 5.50
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PB 5.20 - Pure Snake - Schlangensimulation

Beitrag von STARGÅTE »

Cool ^^ :allright:
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten