And crazy codedavido wrote: After all you called 'Crazy Snake'
[2D] Crazy Snake
Re: [2D] Crazy Snake
Thanks Davido  
 
 Yessss i'm crazy ..... Ha ha ha
			
			
									
									➽ Windows 11 64-bit - PB 6.21 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti
Sorry for my bad english and the Dunning–Kruger effect
Re: [2D] Crazy Snake
@falsam
I've carried out a few tests with the following observations:
At score 5: the playing area starts to rotate, slowly, clockwise.
As soon as it rotates through 90 degrees the playing area suddenly drops! The vertex is then at the centre of the board so that nearly half the playing area is hidden.
This nearly always occurs about score 8 or 9 but only disappears when score = 10.
I presume the changes which occur later are programmed by you:
At score 15 the board shrinks! Then becomes normal a few scores later.
Later (about score = 27) the playing area is squeezed on the left & right to form a vertical rectangle! This becomes normal later.
At score 32: the playing area goes crazy: rapid flashing pastel colours. Fortunately it reverts to normal at score = 38.
I trust that this helps a little.
If there is anyway I can help further, I will be pleased to assist.
			
			
									
									I've carried out a few tests with the following observations:
At score 5: the playing area starts to rotate, slowly, clockwise.
As soon as it rotates through 90 degrees the playing area suddenly drops! The vertex is then at the centre of the board so that nearly half the playing area is hidden.
This nearly always occurs about score 8 or 9 but only disappears when score = 10.
I presume the changes which occur later are programmed by you:
At score 15 the board shrinks! Then becomes normal a few scores later.
Later (about score = 27) the playing area is squeezed on the left & right to form a vertical rectangle! This becomes normal later.
At score 32: the playing area goes crazy: rapid flashing pastel colours. Fortunately it reverts to normal at score = 38.
I trust that this helps a little.
If there is anyway I can help further, I will be pleased to assist.
DE AA EB
						Re: [2D] Crazy Snake
Thanks for your help davido and thank you for the time you spent on this game to see what happens.
Unfortunately, coding with windows, I can not debug the problem you encounter with mac os and linux.
			
			
									
									This is not normal. I have not coded a sprite moving down. !!davido wrote:the playing area suddenly drops!
Yes : Rotate, Zoom, Bounce and flashing.davido wrote:I presume the changes which occur later are programmed by you
Unfortunately, coding with windows, I can not debug the problem you encounter with mac os and linux.
➽ Windows 11 64-bit - PB 6.21 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti
Sorry for my bad english and the Dunning–Kruger effect
Re: [2D] Crazy Snake
@falsam,
Thanks for taking the time to look at this issue. Its much appreciated.
			
			
									
									Thanks for taking the time to look at this issue. Its much appreciated.
DE AA EB
						Re: [2D] Crazy Snake
Demivec worked on the code overnight. Fixing bugs and adding surprises if you achieved the score of 45 points.
The code is updated. See the first message. I would like some feedback with Mac OS and Linux. Thank you and have fun.
			
			
									
									The code is updated. See the first message. I would like some feedback with Mac OS and Linux. Thank you and have fun.
➽ Windows 11 64-bit - PB 6.21 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti
Sorry for my bad english and the Dunning–Kruger effect
Re: [2D] Crazy Snake
Hi falsam, 
I'm too a fan of snake-games and I like your Crazy Snake a lot ~ thank you
 
w0w ~ level 33 really knocked me over and Ar-s' window-movement is a surprising challenge
 
Sorry it doesn't full work for all platforms at the moment ... but I still enjoy it so much on Linux that I'd like to share my current variation and hope it's of joy for others too.
Two changes I'd like to show separately, as they might be of specific interest, so you don't need to search them in the code.
A: added 'ElseIf GameOver = 1...' to allow a restart at the end of the game:
B: added 3 arrow-key-commands to startscreen to allow easy setting of the starting-score:
Please enjoy and adjust the colorings to hit your taste ~ greets Vera 
ps: Is it possible to apply effects to higher levels like this ? :
  I'll give it a try as of next.
			
			
									
									I'm too a fan of snake-games and I like your Crazy Snake a lot ~ thank you
w0w ~ level 33 really knocked me over and Ar-s' window-movement is a surprising challenge
Sorry it doesn't full work for all platforms at the moment ... but I still enjoy it so much on Linux that I'd like to share my current variation and hope it's of joy for others too.
Two changes I'd like to show separately, as they might be of specific interest, so you don't need to search them in the code.
A: added 'ElseIf GameOver = 1...' to allow a restart at the end of the game:
Code: Select all
; ======================================
  If GameOver = 2 Or FirstStart = #True
; ....
  ElseIf GameOver = 1                    ; to allow restarting the game
    If KeyboardReleased(#PB_Key_Up)
      GameOver = 2
    EndIf
    
  EndIf
; ======================================Code: Select all
; ======================================
Global inScore.i = 0     ; needed new variable
; ....
  If GameOver = 2 Or FirstStart = #True
    
    If KeyboardReleased(#PB_Key_Right)                ; 2 keys to en-/decrease StartingScore
      If inScore < 33
        inScore +1
      Else
        inScore = 0
      EndIf
      SetWindowTitle(#MainForm, "Crazy Snake ~ "+ Str(inScore))
    EndIf
    If KeyboardReleased(#PB_Key_Left)
      If inScore > 0
        inScore -1
      Else
        inScore = 33
      EndIf
      SetWindowTitle(#MainForm, "Crazy Snake ~ "+ Str(inScore))
    EndIf
    If KeyboardReleased(#PB_Key_Down)                ;  key for a random StartingScore
      inScore = Random(33)
      SetWindowTitle(#MainForm, "Crazy Snake ~ "+ Str(inScore))
   EndIf
    
   
    If KeyboardReleased(#PB_Key_Up)
     
      FirstStart = 0
; ....
      Boom = 0
      Score = inScore      ; org= 0 ... apply specific startingscore  vs
; ======================================Code: Select all
; ==================================
;-TOP
; Crazy Snake by falsam - 07/Juil/2015 - PB 5.31 ~ nearly fully crossplatform
; http://www.purebasic.fr/french/viewtopic.php?f=2&t=15291
; http://www.purebasic.fr/english/viewtopic.php?f=16&t=62548
; added: 08.07 - Ar-s: mouvement de fenetre (Dir.s, WX, WY)
; changed / added ...26.07 - Vera:
; - commented all commands that 'issued' on Linux [rotate, zoom]
; - enabled restart at game-end [ElseIf GameOver = 1]
; - 3 arrow-key-commands (reft/right/down) to choose StartingScore [range 0-33]
;  + windowtitle-hint 
; - added SnakeEndColor
; - various playing with the game- and snake-colors and 'endscreen'
; ~~~ playing to be continued :-)
; ==================================
EnableExplicit
Enumeration
  #MainForm
EndEnumeration
Global Event
Global UpdateSquares.b
Global Vx=1, Vy=0         ;Velocity x & y
Global x1, y1, x2, y2
Global KLR.b = #True      ;Left Key & Right Key enable
Global KUD.b = #True      ;Up key & down key enable
Global n
Global FirstStart = #True, GameOver = 0
Global TargetCreate, tx, ty
Global SquareColor
Global Score, BestScore
Global Boom.b
Global Font15, Font20, font25, font40
Global Angle.f
Global ZoomX, ZoomY, BounceX.f, BounceY.f, Sens
Global StartTime.f, TimeOut.f
Global ScreenDefaultColor, GameDefaultColor, GameColor, TextColor, LineColor
Global SnakeHeadColor, SnakeBodyColor, SnakeOutlineColor, SnakeEndColor
Global Text.s, PosX, PosY.f
Global Dir.s                  ; neu Ar-S
Global WX,WY                  ; neu Ar-S
Global inScore.i = 0 , colSwitch = 0   ; vs
;Game Sprite
Global Game
;Snake
Structure Snake
  x.i
  y.i
EndStructure
Global NewList Snakes.Snake()
;Engine Init
InitSprite()
InitKeyboard()
;Load Font
Font15 = LoadFont(#PB_Any, "System", 15)
Font20 = LoadFont(#PB_Any, "System", 20)
Font25 = LoadFont(#PB_Any, "System", 25)
Font40 = LoadFont(#PB_Any, "Courier New", 40 ,#PB_Font_Bold)
;Color
ScreenDefaultColor = RGB(127, 182, 127)
GameDefaultColor   = RGB(143, 188, 143)
LineColor          = RGB(210, 180, 140)
TextColor          = RGB(255, 255, 255)
SnakeHeadColor     = RGB(210, 180, 140)
SnakeEndColor     = RGB(167, 193, 123)          ; vs
SnakeBodyColor     = RGB(255, 248, 220)
SnakeOutlineColor  = RGB(184, 134, 11)
;Screen
OpenWindow(#MainForm, 0, 0, 600, 600, "Crazy Snake", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 600, 600,0,0,0)
;Create Game
Game = CreateSprite(#PB_Any, 400, 400)
TimeOut = 200
Repeat
  WX = WindowX(#MainForm);, #PB_Window_InnerCoordinate)   ; new Ar-S
  WY= WindowY(#MainForm);, #PB_Window_InnerCoordinate)
  
  Repeat
    Event = WindowEvent()
     
    Select Event   
      Case #PB_Event_CloseWindow
        End
    EndSelect 
  Until Event=0
   
  FlipBuffers()
  ClearScreen(RGB(220, 220, 220))
 
  ExamineKeyboard()
 
  If FirstStart = #True
    ClearList(Snakes())
   
    For n = 0 To 3
      AddElement(Snakes())
      With Snakes()
        \x = 192 - 16 * n
        \y = 192
        x1 = \x
        y1 = \y
      EndWith
    Next
  EndIf
  
  ;- START
  
  If GameOver = 2 Or FirstStart = #True
    
    If KeyboardReleased(#PB_Key_Right)                ; vs
      If inScore < 33
        inScore +1
      Else
        inScore = 0
      EndIf
      SetWindowTitle(#MainForm, "Crazy Snake ~ "+ Str(inScore))
    EndIf
    If KeyboardReleased(#PB_Key_Left)
      If inScore > 0
        inScore -1
      Else
        inScore = 33
      EndIf
      SetWindowTitle(#MainForm, "Crazy Snake ~ "+ Str(inScore))
    EndIf
    If KeyboardReleased(#PB_Key_Down)
      inScore = Random(33)
      SetWindowTitle(#MainForm, "Crazy Snake ~ "+ Str(inScore))
   EndIf
    
   
   SnakeEndColor = RGB(167, 193, 123)        ; reset defaults vs
   SnakeBodyColor = RGB(255, 248, 220)
   
    If KeyboardReleased(#PB_Key_Up)
     
      FirstStart = 0
     
      ;Add 4 Squares to snake
      ClearList(Snakes())
      For n = 0 To 3
        AddElement(Snakes())
        With Snakes()
          \x = 192 - 16 * n
          \y = 192
          x1 = \x
          y1 = \y
        EndWith
      Next     
       
      ;Reset Game Setup
      StartTime.f = 0
;       RotateSprite(Game, 0, #PB_Absolute)
;       ZoomSprite(Game, 400, 400)
      DisplaySprite(Game, 400, 400)
     
      Boom = 0
      Score = inScore            ; org= 0 ... other score to start in specific level  vs
      KLR = #True          ; Left Key & Right Key enable
      KUD = #True          ; Up key & down key enable
      vx = 1 : vy = 0      ; Snake starts right
     
      TargetCreate = #True
     
      Angle = 0 :
      ZoomX = 0 : ZoomY = 0
      BounceX = 0 : BounceY = 0 : Sens = 1     
      GameColor = GameDefaultColor
      GameOver = #False
    EndIf
    
  ElseIf GameOver = 1                    ; vs to allow restarting the game
    If KeyboardReleased(#PB_Key_Up)
      GameOver = 2
    EndIf
    
  EndIf
     
  If GameOver = #False
    ;-Keybord events
    If KeyboardPushed(#PB_Key_Left) And KLR = #True
      vx = - 1 : vy = 0 : KLR = #False : KUD = #True
      Dir.s = "G"                                      ; 4x neu Ar-S
     
    ElseIf KeyboardPushed(#PB_Key_Right) And KLR = #True
      vx = 1 : vy = 0 : KLR = #False : KUD = #True
      Dir.s = "D"
    ElseIf KeyboardPushed(#PB_Key_Up) And KUD = #True
      vy = -1 : vx = 0 : KUD = #False : KLR = #True
      Dir.s = "H"
   
    ElseIf KeyboardPushed(#PB_Key_Down) And KUD = #True
      vy = 1 :  vx = 0 : KUD = #False : KLR = #True
      Dir.s = "B"
    EndIf
   
    ;- Updates the position of the snake
    If ElapsedMilliseconds() - StartTime  > TimeOut
      StartTime = ElapsedMilliseconds()
      ForEach Snakes()
        If ListIndex(Snakes()) = 0
          ;Updates the head
          x1 = Snakes()\x         ; Memorise old X position
          y1 = Snakes()\y         ; Memorise old Y position
         
          PushListPosition(Snakes())
          NextElement(Snakes())
          If x1 + 16 * vx = Snakes()\x And y1 + 16 * vy = Snakes()\y 
            vx * -1
            vy * -1
          EndIf
          PopListPosition(Snakes())         
         
          Snakes()\x + 16 * vx
          Snakes()\y + 16 * vy
         
          ;- Collide(head, target)
          If Snakes()\x = tx And Snakes()\y = ty
            TargetCreate = #True
            UpdateSquares = #True
            Score + 1
          EndIf
         
          ;- Collide(head, Body)
          PushListPosition(Snakes())
          While NextElement(Snakes())
            If Snakes()\x = x1 And  Snakes()\y = y1
              Boom = #True
            EndIf
          Wend
          PopListPosition(Snakes())
         
        Else
          ;- Updates the body
          x2 = Snakes()\x
          y2 = Snakes()\y
          Snakes()\x = x1
          Snakes()\y = y1
          x1 = x2
          y1 = y2
        EndIf
      Next 
     
      If UpdateSquares = #True
        ; Adds an element to the body of the snake
        AddElement(Snakes())
        Snakes()\x = x1
        Snakes()\y = y1
        UpdateSquares = #False
      EndIf
     
      n = 0
     ;EndIf
   
     ;- Create target
      While TargetCreate = #True
        ;New X
        While TargetCreate = #True
          tx = Random(384)
          If Mod(tx, 16) = 0
            TargetCreate = #False
          EndIf
        Wend
        TargetCreate = #True
     
        ;New y
        While TargetCreate = #True
          ty = Random(384)
          If Mod(ty, 16) = 0
            TargetCreate = #False
          EndIf
        Wend
        TargetCreate = #True
     
        ;Intersection with the snake ?
        ForEach Snakes()
          With Snakes()
            If \x <> Tx And \y <> Ty
              ;UpdateSquares = #True
              TargetCreate = #False
            EndIf
          EndWith
        Next   
      Wend
    EndIf
  EndIf
 
  ;- Drawing Game
 
  ;Draw Score 
  StartDrawing(ScreenOutput())
  Box(0, 0, 600, 600, ScreenDefaultColor)
 
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(Font20))
  DrawText(20, 15, "Crazy Snake", TextColor)
  DrawText(450, 15, "Score " + Str(Score), TextColor)
 
  DrawingFont(FontID(Font15))
  DrawText(400, 560, "falsam (2015-2015)", TextColor)
 
  StopDrawing()
 
  ;Draw GameSprite
  StartDrawing(SpriteOutput(Game))
  Box(0, 0, 400, 400, GameColor)
   
  ;Draw Grid
  Global gx
  For gx = 0 To 399 Step 16
    LineXY(gx, 0, gx, 399, LineColor)
    LineXY(0, gx, 399, gx, LineColor)
  Next 
  ;Draw Grid outline
  DrawingMode(#PB_2DDrawing_Outlined)
  Box(0, 0, 400, 400, LineColor)
  DrawingMode(#PB_2DDrawing_Default)     
 
  ;Draw Snake
  ForEach Snakes()
    With Snakes()
      Select ListIndex(Snakes())
        Case 0                         ; First square
          SquareColor = SnakeHeadColor
         
        Case ListSize(Snakes()) - 1    ; Last square
;           SquareColor = SnakeHeadColor
          SquareColor = SnakeEndColor        ; vs
         
        Default
          SquareColor = SnakeBodyColor
      EndSelect   
 
      DrawingMode(#PB_2DDrawing_Default)     
      Box(\x, \y, 16, 16, SquareColor)
     
      DrawingMode(#PB_2DDrawing_Outlined)
      Box(\x, \y, 16, 16, SnakeOutlineColor)     
    EndWith
  Next
   
  ;Draw target
  DrawingMode(#PB_2DDrawing_Default)
  Box(tx, ty, 16, 16, RGB(127, 255, 0))
  DrawingMode(#PB_2DDrawing_Outlined)
  Box(tx, ty, 16, 16, RGB(0, 0, 0))
   
   
  StopDrawing()
   
  ;Display game
   DisplaySprite(Game, (600 - SpriteWidth(Game))/2 + PosX, ((600 - SpriteHeight(Game))/2) + PosY)
  ;- Game effect
  If GameOver = #False
   
    Select Score         
      Case 0 To 2 ;Bounce game ++
        TimeOut = 200
        BounceX + 0.03 : BounceY + 0.03
        Angle + 0.1
        PosX = BounceX * Cos(Angle)
        PosY = BounceY * Cos(Angle)
        If Angle = 1
          Angle = 0
        EndIf
       
      Case 3 To 4 ;Bounce Game --
        If BounceX > 0
          BounceX - 0.04 : BounceY - 0.04
        EndIf
       
        Angle + 0.1
       
        PosX = BounceX * Cos(Angle)
        PosY = BounceY * Cos(Angle)
       
        If Angle = 1
          Angle = 0
        EndIf
       
      Case 5
        Angle = 0 : PosX = 0 : PosY = 0
        SnakeBodyColor = RGB(255, Random(248), 220)
               
      Case 6 To 9 ;Right Rotate
        TimeOut = 200
        If Angle < 45
          Angle + 0.05
;           RotateSprite(Game, 0.05, #PB_Relative) 
        EndIf
        If colSwitch = 0
        SnakeBodyColor = RGB(255, 248, 220)
        GameColor = RGB(Random(143), 188, 143)
        colSwitch = 1 : EndIf
        
      Case 10 To 14 ;Left Rotate
        TimeOut = 200
        If Angle > 0
          Angle - 0.05
;           RotateSprite(Game, -0.05, #PB_Relative)
        EndIf
        If colSwitch = 1
        GameColor = GameDefaultColor
        colSwitch = 0 : EndIf
        
        
        Select Dir                         ;  new Ar-S   (new place)
          Case "G"
            ResizeWindow(#MainForm, WX-10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
            Dir.s="none"
          Case "D"
            ResizeWindow(#MainForm, WX+10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
            Dir.s="none"
          Case "H"
            ResizeWindow(#MainForm, #PB_Ignore, WY+10, #PB_Ignore, #PB_Ignore)
            Dir.s="none"
          Case "B"
            ResizeWindow(#MainForm, #PB_Ignore, WY-10, #PB_Ignore, #PB_Ignore)
            Dir.s="none"
        EndSelect
        
        
      Case 15 To 19 ;Reduce the size of the game.
        TimeOut = 200
        If SpriteWidth(Game) <> 250
;           ZoomSprite(Game, SpriteWidth(Game) - 1, SpriteWidth(Game) - 1)
        EndIf
        If colSwitch = 0
        GameColor = RGB(143, Random(188), 143)
        colSwitch = 1 : EndIf
     
      Case 20 To 22 ;Reduce the size of the game.
        TimeOut = 200
        If SpriteWidth(Game) <> 400
;           ZoomSprite(Game, SpriteWidth(Game) + 1, SpriteWidth(Game) + 1)
        EndIf
        If colSwitch = 1
        SnakeBodyColor = RGB(Random(255), 248, 220)
        GameColor = GameDefaultColor
        colSwitch = 0 : EndIf
    
      Case 23 ;Change the speed
        TimeOut = 150
        SnakeBodyColor = RGB(255, 248, 220)
     
       
;         Select Dir                         ;  new Ar-S (org-place)
;           Case "G"
;             ResizeWindow(#MainForm, WX-10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
;             Dir.s="none"
;           Case "D"
;             ResizeWindow(#MainForm, WX+10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
;             Dir.s="none"
;           Case "H"
;             ResizeWindow(#MainForm, #PB_Ignore, WY+10, #PB_Ignore, #PB_Ignore)
;             Dir.s="none"
;           Case "B"
;             ResizeWindow(#MainForm, #PB_Ignore, WY-10, #PB_Ignore, #PB_Ignore)
;             Dir.s="none"
;         EndSelect
       
        
      Case 24 ;Change the speed
        TimeOut = 100 
        SnakeHeadColor = RGB(210, 16, 9)        ; vs
     
      Case 25 ;Change the speed
        TimeOut = 50
        BounceX + 0.03 : BounceY + 0.03         ; vs
        Angle + 0.1
        PosX = BounceX * Cos(Angle)
        PosY = BounceY * Cos(Angle)
        If Angle = 1
          Angle = 0
        EndIf
        
      Case 26 ;Change the speed
        TimeOut = 150
        SnakeHeadColor = RGB(210, 180, 140)      ; vs
        SnakeBodyColor = RGB(255, 88, 82)
     
      Case 27 To 29 ;Reduce the size of the game. (Strange: the sprite moves upward)
        TimeOut = 200
        If SpriteWidth(Game) <> 250
          ZoomX=-1
;           ZoomSprite(Game, SpriteWidth(Game) + ZoomX, 400)
        EndIf
        If colSwitch = 0                         ; vs ...
        SnakeBodyColor = RGB(255, 248, 220)
        GameColor = RGB(143, Random(188), 143)
        colSwitch = 1 : EndIf
    
      Case 30 To 32 ;Original Size
        TimeOut = 200
        If SpriteWidth(Game) <> 400
          ZoomX = 1
          If SpriteHeight(Game) <> 400
            ZoomY = 1
          Else
            ZoomY = 0
          EndIf
;           ZoomSprite(Game, SpriteWidth(Game) + ZoomX, SpriteWidth(Game) + ZoomY)
        EndIf
        If colSwitch = 1
        GameColor = GameDefaultColor
        colSwitch = 0 : EndIf
        
      Case 33 To 36 ;Random color
        TimeOut = 150
        GameColor = RGB(Random(255),Random(255),Random(255))
     
      Default ; Fastest speed
        TimeOut - 0.001
        GameColor = GameDefaultColor
       
    EndSelect
  EndIf
   
  ;- Out of bound or Game over
  FirstElement(Snakes())
  With Snakes()
    If (\x > 384 Or \x < 0 Or \y > 384 Or \y < 0 Or Boom = #True) And GameOver <> 2
      GameOver = 1 ; org: 1 , 2-um sofort neu zu spielen
     
      If SpriteWidth(Game) <> 10
;         ZoomSprite(Game, SpriteWidth(Game)-10, SpriteWidth(Game) - 10)
         GameColor = RGB(0, 0, 0)
         SnakeBodyColor = RGB(228, 222, 197)
         SnakeEndColor = RGB(Random(167), Random(193), Random(123))
       Else
        GameOver = 2      ; this never occurs  vs
      EndIf
    EndIf
  EndWith 
 
  ;Game Over
  If GameOver = 2 Or FirstStart = #True
   
    If Score > BestScore
      BestScore = Score
    EndIf
       
    StartDrawing(ScreenOutput())
    Box(0, 0, 600, 600, ScreenDefaultColor)
    DrawingMode(#PB_2DDrawing_Transparent)
   
    If FirstStart = #True
      DrawingFont(FontID(Font40))
      Text = "Crazy Snake"
      DrawText((600 - TextWidth(Text))/2, 100, Text, TextColor)   
    Else
      DrawingFont(FontID(Font40))
;       Text = "You Died"
      Text = "S.o°l°o.ng Snake"             ; vs
      DrawText((600 - TextWidth(Text))/2, 100, Text, TextColor)   
   
      DrawingFont(FontID(Font25))
      Text = "Score: " + Str(Score)
      DrawText((600 - TextWidth(Text))/2, 200, Text, TextColor)
     
      DrawingFont(FontID(Font25))
      Text = "Best Score: " + Str(BestScore)
      DrawText((600 - TextWidth(Text))/2, 300, Text, TextColor)
    EndIf
   
    Text = "Press up arrow key to start new game"
    Angle + 0.1
    PosY = 20 * Cos(Angle)
    If angle = 1
      angle = 0
    EndIf
   
    DrawingFont(FontID(Font25))
    DrawText((600 - TextWidth(Text))/2, 500 + PosY, Text, TextColor )
       
    StopDrawing()
  EndIf
 
Until KeyboardPushed(#PB_Key_Escape)
; =========================================pps: I just saw you've updated your Snake todayIf Case > 40 to 70 Step 5
Change color xy // or speed ...
EndIf
Two growing code-collections: WinApi-Lib by RSBasic ~ LinuxAPI-Lib by Omi
Missing a download-file on the forums? ~ check out this backup page.
						Missing a download-file on the forums? ~ check out this backup page.
Re: [2D] Crazy Snake
Hello Vera. I played with your code. I'll change my code with some of your suggestions. I think you'll have fun with the code I updated today. Demivec added stunning animations. Trying to exceed 45 points.
 
  The code was updated today in the first message.
http://www.purebasic.fr/english/viewtop ... 16&t=62548
 
  You can also download it on github.
https://github.com/falsam/CrazySnake
			
			
									
									http://www.purebasic.fr/english/viewtop ... 16&t=62548
https://github.com/falsam/CrazySnake
➽ Windows 11 64-bit - PB 6.21 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti
Sorry for my bad english and the Dunning–Kruger effect
Re: [2D] Crazy Snake
Hooo thank Davido. No problem with Mac OS ?davido wrote:Very good, thank you.
➽ Windows 11 64-bit - PB 6.21 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti
Sorry for my bad english and the Dunning–Kruger effect
Re: [2D] Crazy Snake
@falsam,
Sorry, I failed to mention that the problem still occurs, on my Mac.
As the problem is not of your making, I didn't want to keep on complaining!
 
By-the-way it does not occur on every run.
Even when it does happen, I am sometimes able to solve it.
Nice game - I like it. Thank you.
			
			
									
									Sorry, I failed to mention that the problem still occurs, on my Mac.
As the problem is not of your making, I didn't want to keep on complaining!
By-the-way it does not occur on every run.
Even when it does happen, I am sometimes able to solve it.
Nice game - I like it. Thank you.
DE AA EB
						Re: [2D] Crazy Snake
Hey that's nice to hearfalsam wrote:Hello Vera. I played with your code. I'll change my code with some of your suggestions.
indeed _I think you'll have fun with the code I updated today. Demivec added stunning animations.
~ @all have a good week ahead ~ Vera
Two growing code-collections: WinApi-Lib by RSBasic ~ LinuxAPI-Lib by Omi
Missing a download-file on the forums? ~ check out this backup page.
						Missing a download-file on the forums? ~ check out this backup page.
Re: [2D] Crazy Snake
I don't know if that's a feature or a bug, but sometimes, new dot/cookie/apple/whatever snake eats appear within it's current occupying space.
			
			
									
									
						Re: [2D] Crazy Snake
With the code of the first message?bbanelli wrote:I don't know if that's a feature or a bug, but sometimes, new dot/cookie/apple/whatever snake eats appear within it's current occupying space.
http://www.purebasic.fr/english/viewtop ... 16&t=62548
➽ Windows 11 64-bit - PB 6.21 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti
Sorry for my bad english and the Dunning–Kruger effect
Re: [2D] Crazy Snake
A New version for CrazySnake.
Added two layers
The first layer will appear before the snake display.
The second layer is displayed after the snake display
The first message code and update
 
 http://www.purebasic.fr/english/viewtop ... 16&t=62548
and the GitHub
 
 https://github.com/falsam/CrazySnake
An example of the rear layer in point 5 and in paragraphs 41-43.
An example of the foreground layer in paragraphs 59-63.
			
			
									
									Added two layers
The first layer will appear before the snake display.
The second layer is displayed after the snake display
The first message code and update
and the GitHub
An example of the rear layer in point 5 and in paragraphs 41-43.
An example of the foreground layer in paragraphs 59-63.
➽ Windows 11 64-bit - PB 6.21 x64 - AMD Ryzen 7 - NVIDIA GeForce GTX 1650 Ti
Sorry for my bad english and the Dunning–Kruger effect
Re: [2D] Crazy Snake
w0w falsam _ that's just crazy 
 _ thank you
I have a small issue and a great side-effect to tell about.
If the game ends before the TileSeparation is back to normal the clipping after resetting it will diplay the sprite displaced at around x/y = 400/400. All trials to reposition the end-sprite to its default position failed ... so I rather commented it out for good. Besides that tiled end-view is rather nice to see.
That's what I commented out:
Now when continue playing that last tileseparation stays valid for the following [restarting] levels that you play. (Until you cross again those levels that decrease the separation). 
That's pure fun

I'm thinking about a further idea where the snake doesn't stop at the screen-sides but re-enters again on the opposite side.
Another one is: switching the key-commands on one level [right turns left etc.]
And last but not least a feature request for a 'pause'.
I also noticed today, that while CrazySnake is running, no keycommands are available on the PC for other activity. Is it be possible to free examinekeyboard under certain conditions and recontinue it afterwards? If so, it could be well combined with a pause-feature.
~ cheers ~ Vera
			
			
									
									I have a small issue and a great side-effect to tell about.
If the game ends before the TileSeparation is back to normal the clipping after resetting it will diplay the sprite displaced at around x/y = 400/400. All trials to reposition the end-sprite to its default position failed ... so I rather commented it out for good. Besides that tiled end-view is rather nice to see.
That's what I commented out:
Code: Select all
If SpriteWidth(Game) <> 10
;   If TileSeparation > 0
;     TileSeparation = 0
; ;    ClipSprite(Game, #PB_Default, #PB_Default, #PB_Default, #PB_Default)
;   EndIfThat's pure fun

I'm thinking about a further idea where the snake doesn't stop at the screen-sides but re-enters again on the opposite side.
Another one is: switching the key-commands on one level [right turns left etc.]
And last but not least a feature request for a 'pause'.
I also noticed today, that while CrazySnake is running, no keycommands are available on the PC for other activity. Is it be possible to free examinekeyboard under certain conditions and recontinue it afterwards? If so, it could be well combined with a pause-feature.
~ cheers ~ Vera
Two growing code-collections: WinApi-Lib by RSBasic ~ LinuxAPI-Lib by Omi
Missing a download-file on the forums? ~ check out this backup page.
						Missing a download-file on the forums? ~ check out this backup page.

