[Résolu] Sprite non initialisé

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

[Résolu] Sprite non initialisé

Message par Micoute »

Bonjour à tous,

j'ai un problème car j'essaie de remettre en état de fonctionnement des programmes d'anciennes versions, en version 5.21, malheureusement, j'obtiens souvent le message "Le #Sprite spécifié n'est pas initialisé" alors que l'instruction est:

Code : Tout sélectionner

  SpriteID = CreateSprite(#PB_Any, x, y, #PB_Sprite_PixelCollision) 
  StartDrawing(SpriteOutput(SpriteID))
ou

Code : Tout sélectionner

If StartDrawing(ScreenOutput()) <> 0
j'ai droit au message :"La sortie spécifiée est NULL (valeur 0)"

Evidemment, je peux fournir les sources, si nécessaire et je n'ai pas honte de dire qu'elles ne sont pas de moi !

j'ai chercher les réponses sur le forum, mais elles ne correspondent pas à ma version !

Je vous remercie par anticipation
Dernière modification par Micoute le lun. 20/janv./2014 11:08, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sprite non initialisé

Message par falsam »

Micoute a écrit :je peux fournir les sources, si nécessaire et je n'ai pas honte de dire qu'elles ne sont pas de moi !
Raison de plus pour en poster un :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Sprite non initialisé

Message par Micoute »

Bonjour falsam,

comme tu insistes, je ne vais pas me faire prier ! Voici un premier exemple :

Code : Tout sélectionner

; German forum: http://www.purebasic.fr/german/viewtopic.php?t=3591&start=10
; Author: FGK (updated for PB 4.00 by Andre)
; Date: 07. June 2005
; OS: Windows, Linux
; Demo: Yes

; GridLock clone V0.8 
; Employer la souris (presser le bouton gauche de la souris) pour déplacer les pierres.
; Ici ma contribution modeste au MiniGameContest :
; Un objectif « des Gridlock » c'est la pierre de maître de la percée 
; poussée dans la paroi. Des pierres horizontales ne peuvent se déplacer que de travers 
;
; 
; On oriente avec la souris. 
; 
; 
; ------------------------------------------------------------  
; GridLock clone V0.8 
; Pb version d'un F. Kastl pour le MiniGameContest '05 
; Credits à des Riku Salkia l'auteur de la version P900  
;  
; ------------------------------------------------------------ 
; 
#TailleBloc=24 
#DemiBloc = #TailleBloc/2 
#StatusX = 220 -25 
#StatusY = 10 
#Maitre = 0 
#Horizontal = 1 
#Vertical= 2 
#Largeur=320 
#Hauteur=200 
#DeplacerCote = 2 
#BonusBloc = 10 
#ValeurNiveau= 5 
#NiveauMaxi = 40
 

Structure Bloc 
  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 Niveau.l,Moves.l 
Global Done,Quit, SpriteID 

Global Dim Map.b(7,7) 
Global NewList Blocs.Bloc()

Procedure DrawShadowText(px.l,py.l,Texte$,FrontCol.l,ShadowCol.l) 
  FrontColor(FrontCol)
  DrawingMode(1) 
  DrawText(px,py,Texte$) 
  FrontColor(ShadowCol)
  DrawText(px+1,py-1,Texte$) 
EndProcedure  

Procedure DrawBox(px,py,w,h,Texte$) 
  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-TextWidth(Texte$)-15,h/2+10,Texte$,RGB(0,0,0),RGB($EA,$A8,$B9)) 
  StopDrawing() 
EndProcedure 
  
Procedure DrawNiveau() 
  DisplaySprite(MapSprite,0,0) 
  ForEach Blocs() 
    DisplayTransparentSprite(Blocs()\SpriteID,#TailleBloc+Blocs()\XPos,#TailleBloc+Blocs()\YPos) 
  Next  
EndProcedure 

Procedure DrawStatus() 
  If Moves*#DeplacerCote<Bonus 
    t$="Bonus: " +RSet(Str(Bonus-Moves*#DeplacerCote),4,"0") 
  Else  
    t$="Bonus: " +RSet("",4,"0") 
  EndIf  
  StartDrawing(ScreenOutput()) 
    DrawShadowText(#StatusX,#StatusY,"Niveau: " + RSet(Str(Niveau),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,"Déplacements: " +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 Blocs() 
    If x>Blocs()\XPos+#TailleBloc And x<(Blocs()\XPos+Blocs()\XLen+#TailleBloc) 
      If y>Blocs()\YPos+#TailleBloc And y<(Blocs()\YPos+Blocs()\YLen+#TailleBloc) 
        R =ListIndex(Blocs()) 
        Break 
      EndIf  
    EndIf  
  Next  
  ProcedureReturn R 
EndProcedure 

Procedure CheckMove() 
  Blocs()\MoveMinus=0 
  Blocs()\MovePlus=0 
  Select Blocs()\Typ 
    Case #Vertical 
      If Map(Blocs()\XMap+1,Blocs()\YMap)=1 
        Blocs()\MoveMinus=1 
      EndIf  
      If Map(Blocs()\XMap+1,Blocs()\YMap+Blocs()\Size+1)=1 
        Blocs()\MovePlus=1 
      EndIf  
    Case #Horizontal 
      If Map(Blocs()\XMap,Blocs()\YMap+1)=1 
        Blocs()\MoveMinus=1 
      EndIf  
      If Map(Blocs()\XMap+Blocs()\Size+1,Blocs()\YMap+1)=1 
        Blocs()\MovePlus=1 
      EndIf  
    Case #Maitre 
      If Map(Blocs()\XMap,Blocs()\YMap+1)=1 
        Blocs()\MoveMinus=1 
      EndIf  
      If Map(Blocs()\XMap+Blocs()\Size+1,Blocs()\YMap+1)=1 
        Blocs()\MovePlus=1 
      EndIf  
  EndSelect 
EndProcedure 

Procedure SetBlocksToMap(Mode.b) 
  Select Blocs()\Typ 
    Case #Horizontal 
      For l=1 To Blocs()\Size 
        Map(Blocs()\XMap+l,Blocs()\YMap+1)=Mode 
      Next l 
    Case #Vertical 
      For l=1 To Blocs()\Size 
        Map(Blocs()\XMap+1,Blocs()\YMap+l)=Mode 
      Next l 
    Case #Maitre 
      For l=1 To Blocs()\Size 
        Map(Blocs()\XMap+l,Blocs()\YMap+1)=Mode 
      Next l 
  EndSelect 
EndProcedure  
  
Procedure AlignBlocks() 
  If I>-1 
    SelectElement(Blocs(),I) 
    If Abs(Blocs()\dy) < #TailleBloc/4 
      Blocs()\dy=0 
    EndIf 
    If Abs(Blocs()\dx) < #TailleBloc/4 
      Blocs()\dx=0 
    EndIf 
    Blocs()\YPos =Blocs()\YMap * #TailleBloc 
    Blocs()\XPos =Blocs()\XMap * #TailleBloc 
  EndIf 
EndProcedure  

Procedure MoveBlocks() 
  I= GetBlock() 
  If I>-1 
    SelectElement(Blocs(),I) 
    CheckMove() 
    DeltaX = oldX-x 
    DeltaY = oldY-y 
    dy=0:dx=0 
      Select Blocs()\Typ 
        Case #Vertical 
          If DeltaY>0             ;orientation négative 
            If Blocs()\MoveMinus=1 
              ProcedureReturn 
            EndIf  
          Else                    ;orientation positive 
            If Blocs()\MovePlus=1 
              ProcedureReturn 
            EndIf  
          EndIf  
          DeltaX=0 
        Case #Horizontal 
          If DeltaX>0             ;orientation négative 
            If Blocs()\MoveMinus=1 
              ProcedureReturn 
            EndIf  
          Else                    ;orientation positive 
            If Blocs()\MovePlus=1 
              ProcedureReturn 
            EndIf  
          EndIf  
          DeltaY=0 
        Case #Maitre 
          If DeltaX>0             ;orientation négative 
            If Blocs()\MoveMinus=1 
              ProcedureReturn 
            EndIf  
          Else                    ;orientation positive 
            If Blocs()\MovePlus=1 
              ProcedureReturn 
            EndIf  
          EndIf  
          DeltaY=0 
      EndSelect  
      Blocs()\YPos-DeltaY 
      Blocs()\XPos-DeltaX 
      Blocs()\dx - DeltaX 
      Blocs()\dy - DeltaY 
      SetBlocksToMap(0) 
      If Blocs()\dy > #TailleBloc/4 
        Blocs()\YMap+1 
        Blocs()\dy=0 
        Blocs()\YPos =Blocs()\YMap * #TailleBloc 
        Moves+1 
      EndIf 
      If Blocs()\dy < -#TailleBloc/4 
        Blocs()\YMap-1 
        Blocs()\dy=0 
        Blocs()\YPos =Blocs()\YMap * #TailleBloc 
        Moves+1 
      EndIf 
      If Blocs()\dx > #TailleBloc/4 
        Blocs()\XMap+1 
        Blocs()\dx=0 
        Blocs()\XPos =Blocs()\XMap * #TailleBloc 
        Moves+1 
      EndIf 
      If Blocs()\dx < -#TailleBloc/4 
        Blocs()\XMap-1 
        Blocs()\dx=0 
        Blocs()\XPos =Blocs()\XMap * #TailleBloc 
        Moves+1 
      EndIf 
      SetBlocksToMap(1) 
      If Blocs()\Typ=#Maitre And Blocs()\XMap=5 
        Done=1 
      EndIf 
      If GetBlock()=-1 
        btn=0 
      EndIf  
    EndIf 
EndProcedure  

Procedure GetNiveau(LVL) 
  If LVL<=#NiveauMaxi 
    ClearList(Blocs()) 
    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 Niveau-1 
        Read o.b 
        Offset.l+(o*4)      ;calculer la longueur d'octet 
      Next l 
      Read Count.b          ;Lire le nombre de bloc 
      
      Bonus.l = Count * #BonusBloc ;Calculer le bonus dépendant du nombre de blocs
      
    Restore NiveauTab 
      For l= 1 To Offset  
        Read o.b            ;Passer octets de niveau 
      Next l 
  
    For l=1 To Count 
      AddElement(Blocs()) 
      Read Blocs()\Typ 
      Read Blocs()\XMap 
      Read Blocs()\YMap 
      Read Blocs()\Size 
      Select Blocs()\Typ 
        Case #Horizontal 
          Blocs()\XLen = #TailleBloc * Blocs()\Size 
          Blocs()\YLen = #TailleBloc 
          If Blocs()\Size = 3 
            Blocs()\SpriteID = HSprite1 
          Else 
            Blocs()\SpriteID = HSprite2 
          EndIf  
        Case #Vertical 
          Blocs()\XLen = #TailleBloc 
          Blocs()\YLen = #TailleBloc*Blocs()\Size 
          If Blocs()\Size = 3 
            Blocs()\SpriteID = VSprite1 
          Else 
            Blocs()\SpriteID = VSprite2 
          EndIf  
        Case #Maitre 
          Blocs()\XLen=#TailleBloc * Blocs()\Size 
          Blocs()\YLen = #TailleBloc 
          Blocs()\SpriteID = MSprite 
      EndSelect 
      SetBlocksToMap(1) 
      Blocs()\XPos = Blocs()\XMap * #TailleBloc; + #TailleBloc 
      Blocs()\YPos = Blocs()\YMap * #TailleBloc; + #TailleBloc 
    Next l 
  Else 
    LVL = #NiveauMaxi 
    Quit = 1 
  EndIf 
  Moves = 0 
  Done = 0 
EndProcedure 

Procedure NextNiveau(Texte$) 
  DrawBox(#TailleBloc,#TailleBloc,6*#TailleBloc,6*#TailleBloc,Texte$) 
  FlipBuffers() 
  Delay(2000) 
  If Moves*#DeplacerCote<Bonus 
    Score=Score+(Bonus-Moves*#DeplacerCote) 
  EndIf  
  Score = Score + (Niveau*#ValeurNiveau) 
  Niveau+1 
  GetNiveau(Niveau) 
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*#TailleBloc 
      y=#TailleBloc 
      t$="" 
    Case #Vertical 
      x=#TailleBloc 
      y=Size*#TailleBloc 
    Case #Maitre 
      x=Size*#TailleBloc 
      y=#TailleBloc 
      t$="M" 
    EndSelect 
  c=RGB(R,G,b) 
  SpriteID = CreateSprite(#PB_Any, x, y, #PB_Sprite_PixelCollision) 
  StartDrawing(SpriteOutput(SpriteID))
  DrawingMode(0) 
  ;Box(0,0,SpriteWidth(SpriteID),SpriteHeight(SpriteID),c) 
  If Typ=#Horizontal Or Typ=#Maitre 
   Circle(#DemiBloc,#DemiBloc,#DemiBloc,c) 
   Circle(x-#DemiBloc,#DemiBloc,#DemiBloc,c) 
   Box(#DemiBloc,0,x-#TailleBloc,#TailleBloc,c) 
   DrawingMode(4) 
   DrawText((x-TextWidth(t$))/2,4, t$) 
  Else 
   Circle(#DemiBloc,#DemiBloc,#DemiBloc,c) 
   Circle(#DemiBloc,y-#DemiBloc,#DemiBloc,c) 
   Box(0,#DemiBloc,#TailleBloc,y-#TailleBloc,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=#Largeur 
  y=#Hauteur 
  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*#TailleBloc 
    y=Size*#TailleBloc 
    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*#TailleBloc,y*#TailleBloc,#TailleBloc,#TailleBloc,RGB(220,255,255)) 
          DrawingMode(4) 
          Box(x*#TailleBloc,y*#TailleBloc,#TailleBloc,#TailleBloc,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*#TailleBloc,y*#TailleBloc,x2*#TailleBloc,y2*#TailleBloc,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 Gridlock V0.8", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_WindowCentered) 
  InitSprite() 
  If CreateMenu(0, WindowID(0)) 
    MenuTitle("Jeu") 
    MenuItem( 1, "&Relancer") 
    MenuItem( 2, "&Sauter Niveau") 
    MenuItem( 3, "&Quitter") 
    MenuTitle("?") 
    MenuItem(4, "A propos") 
  EndIf 
  
  If OpenWindowedScreen(WindowID(0),0,0,#Largeur,#Hauteur,1,0,0) 
    CreateGameGfx() 
    Niveau=1 
    GetNiveau(Niveau) 
    Repeat 
      DrawNiveau()  
      oldX=x:oldY=y 
      x=WindowMouseX(0)/2 
      y=WindowMouseY(0)/2 
      EventID.l = WindowEvent() 
      Select EventID 
        Case #PB_Event_Menu 
          Select EventMenu() 
            Case 1 ; Restart Niveau 
              DrawBox(#TailleBloc,#TailleBloc,6*#TailleBloc,6*#TailleBloc,"Relancer Niveau") 
              FlipBuffers() 
              Delay(1000) 
              GetNiveau(Niveau) 
            Case 2 
              NextNiveau("Sauter Niveau") 
              Bonus=0 
            Case 3 ; Exit 
              Quit=1 
            Case 4 ; About 
              MessageRequester("PB-GridLock", "PB-Version de GridLock" + Chr(10) + "écrit pour " + Chr(10) + "www.pure-board.de" + Chr(10) + "Mini-GameContest '05" + Chr(10) + "" + Chr(10) + "Auteur:   F.G.K " + Chr(10) + "" + Chr(10) + "Credits à Riku Salkia l'auteur de la version Phone Symbian", #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 
        NextNiveau("Bien Joué!") 
      EndIf 
      FlipBuffers() 
      Delay(10)    
    Until Quit = 1 
  EndIf  
  
EndIf 
End 

;{ DatasSection 
DataSection 
Blk_Master: 
Data.b #Maitre 
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 #Vertical 
Data.l 3 
Data.w 255 
Data.w 0 
Data.w 0 
Blk_Ver2: 
Data.b #Vertical 
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 

NiveauTab: 
;- Niveau1: 
Data.b #Horizontal,0,0,2 
Data.b #Vertical,0,1,3 
Data.b #Vertical,0,4,2 
Data.b #Horizontal,2,5,3 
Data.b #Horizontal,4,4,2 
Data.b #Maitre,1,2,2 
Data.b #Vertical,3,1,3 
Data.b #Vertical,5,0,3 
;-Niveau2: 
Data.b #Vertical,0,0,2 
Data.b #Maitre,0,2,2 
Data.b #Horizontal,0,3,3 
Data.b #Vertical,2,4,2 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,3,5,2 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,4,2,2 
Data.b #Vertical,5,1,3 
Data.b #Horizontal,3,0,3 
Data.b #Vertical,3,1,2 
;-Niveau3: 
Data.b #Vertical,1,4,2 
Data.b #Horizontal,1,3,2 
Data.b #Horizontal,2,5,2 
Data.b #Vertical,3,2,3 
Data.b #Maitre,1,2,2 
Data.b #Vertical,5,3,3 
;-Niveau4: 
Data.b #Vertical,0,0,3 
Data.b #Maitre,1,2,2 
Data.b #Vertical,2,3,2 
Data.b #Horizontal,2,5,3 
Data.b #Vertical,5,4,2 
Data.b #Horizontal,3,3,3 
Data.b #Vertical,3,0,3 
;-Niveau5: 
Data.b #Vertical,0,4,2 
Data.b #Horizontal,4,4,2 
Data.b #Horizontal,4,5,2 
Data.b #Vertical,5,2,2 
Data.b #Vertical,5,0,2 
Data.b #Vertical,4,1,3 
Data.b #Vertical,3,0,3 
Data.b #Horizontal,1,3,3 
Data.b #Maitre,1,2,2 
Data.b #Vertical,0,1,3 
Data.b #Horizontal,0,0,2 
;-Niveau6: 
Data.b #Horizontal,3,5,3 
Data.b #Vertical,3,2,3 
Data.b #Vertical,4,1,3 
Data.b #Vertical,5,1,3 
Data.b #Vertical,3,0,2 
Data.b #Maitre,1,2,2 
Data.b #Horizontal,0,1,2 
Data.b #Horizontal,0,0,2 
Data.b #Horizontal,0,3,2 
Data.b #Vertical,2,3,2 
Data.b #Vertical,0,4,2 
;-Niveau7: 
Data.b #Vertical,5,0,2 
Data.b #Vertical,4,0,2 
Data.b #Vertical,5,2,2 
Data.b #Vertical,3,1,2 
Data.b #Maitre,1,2,2 
Data.b #Vertical,1,0,2 
Data.b #Horizontal,2,0,2 
Data.b #Horizontal,2,3,2 
Data.b #Vertical,3,4,2 
;-Niveau8: 
Data.b #Vertical,5,0,3 
Data.b #Horizontal,4,3,2 
Data.b #Horizontal,3,4,3 
Data.b #Horizontal,3,5,3 
Data.b #Vertical,2,4,2 
Data.b #Horizontal,0,4,2 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,0,3,2 
Data.b #Maitre,0,2,2 
Data.b #Vertical,2,2,2 
Data.b #Vertical,3,2,2 
Data.b #Horizontal,2,1,2 
Data.b #Horizontal,3,0,2 
Data.b #Vertical,4,1,2 
;-Niveau9: 
Data.b #Vertical,1,0,2 
Data.b #Maitre,0,2,2 
Data.b #Vertical,0,3,3 
Data.b #Horizontal,1,3,3 
Data.b #Vertical,2,4,2 
Data.b #Vertical,5,4,2 
Data.b #Vertical,5,2,2 
Data.b #Horizontal,4,1,2 
Data.b #Horizontal,4,0,2 
Data.b #Horizontal,2,0,2 
Data.b #Vertical,3,1,2 
Data.b #Vertical,4,2,3 
;-Niveau10: 
Data.b #Horizontal,4,0,2 
Data.b #Horizontal,4,1,2 
Data.b #Vertical,5,2,3 
Data.b #Horizontal,4,5,2 
Data.b #Vertical,3,4,2 
Data.b #Horizontal,1,3,3 
Data.b #Vertical,0,2,3 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,0,1,2 
Data.b #Horizontal,0,0,2 
Data.b #Vertical,2,0,2 
Data.b #Maitre,1,2,2 
;-Niveau11: 
Data.b #Vertical,5,4,2 
Data.b #Horizontal,3,3,3 
Data.b #Horizontal,2,5,3 
Data.b #Vertical,2,3,2 
Data.b #Maitre,1,2,2 
Data.b #Vertical,0,0,3 
Data.b #Horizontal,1,0,2 
Data.b #Vertical,3,0,3 
;-Niveaul12: 
Data.b #Vertical,5,0,3 
Data.b #Horizontal,3,3,3 
Data.b #Vertical,4,4,2 
Data.b #Vertical,2,1,3 
Data.b #Maitre,0,2,2 
Data.b #Vertical,0,0,2 
Data.b #Horizontal,1,0,2 
Data.b #Horizontal,0,5,3 
;-Niveau13: 
Data.b #Horizontal,4,4,2 
Data.b #Horizontal,4,5,2 
Data.b #Vertical,3,4,2 
Data.b #Vertical,0,3,3 
Data.b #Horizontal,1,5,2 
Data.b #Vertical,1,2,2 
Data.b #Vertical,2,1,2 
Data.b #Maitre,3,2,2 
Data.b #Horizontal,0,0,2 
Data.b #Horizontal,2,0,2 
Data.b #Vertical,4,0,2 
Data.b #Vertical,5,1,3 
Data.b #Horizontal,3,3,2 
;-Niveau14 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,4,2,2 
Data.b #Vertical,5,2,2 
Data.b #Horizontal,4,1,2 
Data.b #Maitre,2,2,2 
Data.b #Horizontal,2,3,2 
Data.b #Vertical,2,4,2 
Data.b #Vertical,2,0,2 
Data.b #Horizontal,0,0,2 
Data.b #Vertical,0,2,2 
Data.b #Vertical,1,2,2 
Data.b #Horizontal,0,5,2 
;-Niveau15: 
Data.b #Horizontal,1,5,2 
Data.b #Horizontal,3,5,2 
Data.b #Vertical,3,3,2 
Data.b #Vertical,2,3,2 
Data.b #Maitre,2,2,2 
Data.b #Horizontal,2,1,2 
Data.b #Horizontal,3,0,2 
Data.b #Horizontal,1,0,2 
Data.b #Vertical,5,1,3 
Data.b #Vertical,4,1,3 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,1,2,3 
Data.b #Vertical,0,2,3 
Data.b #Horizontal,0,1,2 
;-Niveau16: 
Data.b #Vertical,5,0,3 
Data.b #Horizontal,3,3,3 
Data.b #Maitre,3,2,2 
Data.b #Vertical,4,0,2 
Data.b #Horizontal,2,0,2 
Data.b #Horizontal,2,1,2 
Data.b #Vertical,2,2,3 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,0,0,2 
Data.b #Vertical,0,1,2 
Data.b #Vertical,1,2,2 
;-Niveau17: 
Data.b #Horizontal,0,5,3 
Data.b #Horizontal,0,4,3 
Data.b #Vertical,3,3,3 
Data.b #Vertical,4,4,2 
Data.b #Vertical,5,4,2 
Data.b #Vertical,2,2,2 
Data.b #Maitre,0,2,2 
Data.b #Horizontal,0,3,2 
Data.b #Vertical,0,0,2 
Data.b #Horizontal,1,0,3 
Data.b #Horizontal,4,1,2 
Data.b #Horizontal,2,1,2 
;-Niveau18: 
Data.b #Horizontal,0,5,3 
Data.b #Horizontal,1,4,2 
Data.b #Vertical,0,2,3 
Data.b #Horizontal,1,3,3 
Data.b #Maitre,1,2,2 
Data.b #Vertical,3,0,3 
Data.b #Vertical,2,0,2 
Data.b #Horizontal,0,1,2 
Data.b #Horizontal,0,0,2 
;-Niveau19: 
Data.b #Horizontal,3,0,2 
Data.b #Vertical,2,0,2 
Data.b #Maitre,2,2,2 
Data.b #Vertical,4,1,2 
Data.b #Vertical,4,3,2 
Data.b #Horizontal,2,3,2 
Data.b #Horizontal,1,4,3 
Data.b #Vertical,1,2,2 
;-Niveau20: 
Data.b #Vertical,5,2,3 
Data.b #Horizontal,3,5,3 
Data.b #Horizontal,3,4,2 
Data.b #Vertical,2,4,2 
Data.b #Vertical,2,2,2 
Data.b #Vertical,3,1,2 
Data.b #Horizontal,1,1,2 
Data.b #Vertical,0,0,2 
Data.b #Maitre,0,2,2 
Data.b #Horizontal,3,0,3 
;-Niveau21: 
Data.b #Horizontal,3,5,3 
Data.b #Horizontal,0,0,2 
Data.b #Vertical,2,0,2 
Data.b #Vertical,3,0,3 
Data.b #Horizontal,1,3,3 
Data.b #Maitre,1,2,2 
Data.b #Vertical,0,1,3 
;-Niveau22: 
Data.b #Vertical,5,4,2 
Data.b #Horizontal,4,3,2 
Data.b #Horizontal,4,1,2 
Data.b #Horizontal,3,0,3 
Data.b #Vertical,3,1,3 
Data.b #Vertical,2,0,2 
Data.b #Maitre,1,2,2 
Data.b #Vertical,0,1,2 
Data.b #Vertical,1,3,2 
Data.b #Vertical,0,4,2 
Data.b #Horizontal,1,5,3 
Data.b #Horizontal,2,4,2 
;-Niveau23: 
Data.b #Horizontal,2,5,3 
Data.b #Horizontal,4,4,2 
Data.b #Horizontal,4,3,2 
Data.b #Vertical,3,3,2 
Data.b #Vertical,2,3,2 
Data.b #Vertical,2,1,2 
Data.b #Maitre,3,2,2 
Data.b #Horizontal,3,1,2 
Data.b #Horizontal,2,0,3 
Data.b #Vertical,5,0,3 
;-Niveau24: 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,0,4,3 
Data.b #Horizontal,1,3,2 
Data.b #Vertical,0,2,2 
Data.b #Vertical,1,1,2 
Data.b #Maitre,2,2,2 
Data.b #Vertical,2,0,2 
Data.b #Horizontal,3,0,2 
Data.b #Vertical,4,4,2 
Data.b #Vertical,4,2,2 
;-Niveau25: 
Data.b #Horizontal,4,5,2 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,5,1,3 
Data.b #Vertical,4,2,2 
Data.b #Horizontal,4,0,2 
Data.b #Horizontal,0,0,2 
Data.b #Horizontal,0,1,2 
Data.b #Vertical,2,0,2 
Data.b #Maitre,1,2,2 
Data.b #Vertical,0,2,3 
Data.b #Vertical,1,4,2 
Data.b #Horizontal,1,3,3 
Data.b #Vertical,3,4,2 
;-Niveau26: 
Data.b #Vertical,5,4,2 
Data.b #Vertical,5,2,2 
Data.b #Horizontal,3,0,3 
Data.b #Vertical,4,1,3 
Data.b #Vertical,3,1,2 
Data.b #Horizontal,1,3,3 
Data.b #Maitre,1,2,2 
Data.b #Vertical,1,0,2 
Data.b #Vertical,0,1,2 
Data.b #Vertical,0,3,2 
Data.b #Vertical,2,4,2 
Data.b #Horizontal,3,5,2 
;-Niveau27: 
Data.b #Horizontal,3,5,3 
Data.b #Vertical,5,2,3 
Data.b #Horizontal,3,3,2 
Data.b #Vertical,2,4,2 
Data.b #Vertical,2,2,2 
Data.b #Maitre,0,2,2 
Data.b #Vertical,0,0,2 
Data.b #Horizontal,1,0,2 
Data.b #Horizontal,1,1,2 
Data.b #Vertical,3,0,3 
;-Niveau28: 
Data.b #Vertical,5,3,3 
Data.b #Horizontal,4,1,2 
Data.b #Vertical,3,0,2 
Data.b #Horizontal,0,0,3 
Data.b #Vertical,2,1,3 
Data.b #Maitre,0,2,2 
Data.b #Vertical,0,3,2 
Data.b #Vertical,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 
;-Niveau29: 
Data.b #Vertical,5,4,2 
Data.b #Vertical,5,2,2 
Data.b #Vertical,4,0,3 
Data.b #Horizontal,3,3,2 
Data.b #Vertical,3,4,2 
Data.b #Horizontal,0,5,3 
Data.b #Vertical,0,3,2 
Data.b #Horizontal,1,4,2 
Data.b #Horizontal,1,3,2 
Data.b #Maitre,0,2,2 
Data.b #Vertical,2,1,2 
Data.b #Horizontal,0,0,3 
;-Niveau30: 
Data.b #Vertical,5,3,3 
Data.b #Horizontal,3,0,3 
Data.b #Vertical,3,1,2 
Data.b #Vertical,2,0,2 
Data.b #Maitre,1,2,2 
Data.b #Vertical,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 
;-Niveau31: 
Data.b #Horizontal,3,5,3 
Data.b #Vertical,5,2,3 
Data.b #Horizontal,4,1,2 
Data.b #Horizontal,3,0,3 
Data.b #Horizontal,0,0,2 
Data.b #Vertical,3,1,2 
Data.b #Horizontal,3,3,2 
Data.b #Vertical,2,3,3 
Data.b #Maitre,1,2,2 
Data.b #Vertical,0,2,2 
Data.b #Horizontal,0,4,2 
;-Niveau32: 
Data.b #Vertical,5,3,3 
Data.b #Horizontal,4,0,2 
Data.b #Vertical,3,0,2 
Data.b #Vertical,2,0,3 
Data.b #Horizontal,0,0,2 
Data.b #Maitre,0,2,2 
Data.b #Vertical,0,3,2 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,1,3,2 
Data.b #Vertical,3,4,2 
Data.b #Horizontal,3,3,2      
;-Niveau33: 
Data.b #Vertical,5,3,3 
Data.b #Horizontal,3,3,2 
Data.b #Vertical,4,4,2 
Data.b #Vertical,3,4,2 
Data.b #Horizontal,0,5,3 
Data.b #Horizontal,1,4,2 
Data.b #Horizontal,1,3,2 
Data.b #Vertical,0,3,2 
Data.b #Maitre,0,2,2 
Data.b #Vertical,1,0,2 
Data.b #Vertical,2,0,3 
Data.b #Horizontal,4,0,2 
;-Niveau34: 
Data.b #Vertical,0,0,2 
Data.b #Maitre,0,2,2 
Data.b #Horizontal,0,3,3 
Data.b #Vertical,2,4,2 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,3,5,2 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,3,3,2 
Data.b #Vertical,4,2,2 
Data.b #Vertical,3,1,2 
Data.b #Horizontal,3,0,3 
Data.b #Vertical,5,1,3 
;-Niveau35: 
Data.b #Vertical,5,0,3 
Data.b #Horizontal,3,0,2 
Data.b #Vertical,3,1,2 
Data.b #Vertical,2,0,3 
Data.b #Maitre,0,2,2 
Data.b #Vertical,0,3,2 
Data.b #Horizontal,0,5,2 
Data.b #Horizontal,1,4,2 
Data.b #Vertical,3,4,2 
Data.b #Vertical,4,4,2 
Data.b #Horizontal,1,3,3 
;-Niveau36: 
Data.b #Horizontal,4,0,2 
Data.b #Vertical,5,1,3 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,3,3,2 
Data.b #Horizontal,0,5,2 
Data.b #Vertical,2,4,2 
Data.b #Horizontal,0,3,3 
Data.b #Vertical,0,0,3 
Data.b #Horizontal,1,0,3 
Data.b #Vertical,1,1,2 
Data.b #Horizontal,2,1,2 
Data.b #Maitre,2,2,2 
;-Niveau37: 
Data.b #Horizontal,4,5,2 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,5,1,3 
Data.b #Vertical,4,1,3 
Data.b #Horizontal,4,0,2 
Data.b #Vertical,3,4,2 
Data.b #Horizontal,0,5,2 
Data.b #Vertical,0,2,3 
Data.b #Horizontal,0,0,2 
Data.b #Horizontal,0,1,2 
Data.b #Vertical,2,0,2 
Data.b #Maitre,1,2,2 
Data.b #Horizontal,1,3,3 
;-Niveau38: 
Data.b #Horizontal,3,5,3 
Data.b #Vertical,5,2,3 
Data.b #Horizontal,3,0,3 
Data.b #Vertical,3,1,2 
Data.b #Vertical,0,0,2 
Data.b #Maitre,0,2,2 
Data.b #Horizontal,1,1,2 
Data.b #Vertical,2,2,2 
Data.b #Vertical,2,4,2 
Data.b #Horizontal,3,3,2 
Data.b #Horizontal,3,4,2 
;-Niveau39: 
Data.b #Vertical,5,2,3 
Data.b #Horizontal,3,0,3 
Data.b #Vertical,2,0,2 
Data.b #Vertical,2,2,2 
Data.b #Vertical,3,1,2 
Data.b #Horizontal,3,3,2 
Data.b #Vertical,0,4,2 
Data.b #Vertical,1,4,2 
Data.b #Horizontal,2,5,2 
Data.b #Horizontal,2,4,2 
Data.b #Horizontal,0,3,2 
Data.b #Maitre,0,2,2 
;-Niveau40: 
Data.b #Horizontal,0,5,2 
Data.b #Vertical,2,4,2 
Data.b #Horizontal,3,5,2 
Data.b #Vertical,3,3,2 
Data.b #Horizontal,4,4,2 
Data.b #Vertical,5,1,3 
Data.b #Vertical,4,0,2 
Data.b #Maitre,3,2,2 
Data.b #Vertical,2,1,2 
Data.b #Vertical,1,1,2 
Data.b #Horizontal,1,0,2 
Data.b #Vertical,0,0,3 
Data.b #Horizontal,0,3,3 
EndDataSection 
;} 

Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sprite non initialisé

Message par falsam »

Au debug il y a un calcul de coordonnée en x qui est faux et des tailles de sprites aberrantes et négatives (ex :-1073692672).

Hormis la datasection, le code n'est pas très long et pourtant je ne vois pas d'ou ça peut venir !

Dans la procédure CreateBlockSprite() place debug size et debug x juste avant la ligne

Code : Tout sélectionner

SpriteID = CreateSprite(#PB_Any, x, y, #PB_Sprite_PixelCollision) 
Le sprite ne pourra pas se créer.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Sprite non initialisé

Message par Micoute »

Comment PB faisait-il pour accepter ces aberrations ? J'en suis à me demander si je ne dois pas reprendre tous les programmes à la base car il y en a beaucoup, donc je charge l'original, je le renomme du même nom + la version de PB utilisée, comme ça je ne touche pas à l'archive et il suffit de se concentrer sur la partie à résoudre, le problème, c'est que ne vois pas comment je vais m'y prendre, c'est pourquoi je fais appel à toutes les bonnes volontés de bien vouloir m'aider, mais il n'y a rien d'urgent, c'est seulement un défi je me suis donné, c'est pourquoi je serait reconnaissant de l'aide qui, j'en suis sûr, me sera apportée !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Sprite non initialisé

Message par Micoute »

Bonjour à tous,

j'ai modifié tous les read et l'erreur est la même , mais pas à la même ligne !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Sprite non initialisé

Message par flaith »

Avec qq modif (read.i, read.b, etc...)

Code : Tout sélectionner

 ; German forum: http://www.purebasic.fr/german/viewtopic.php?t=3591&start=10
; Author: FGK (updated for PB 4.00 by Andre)
; Date: 07. June 2005
; OS: Windows, Linux
; Demo: Yes

; GridLock clone V0.8
; Employer la souris (presser le bouton gauche de la souris) pour déplacer les pierres.
; Ici ma contribution modeste au MiniGameContest :
; Un objectif « des Gridlock » c'est la pierre de maître de la percée
; poussée dans la paroi. Des pierres horizontales ne peuvent se déplacer que de travers
;
;
; On oriente avec la souris.
;
;
; ------------------------------------------------------------ 
; GridLock clone V0.8
; Pb version d'un F. Kastl pour le MiniGameContest '05
; Credits à des Riku Salkia l'auteur de la version P900 
; 
; ------------------------------------------------------------
;
#TailleBloc=24
#DemiBloc = #TailleBloc/2
#StatusX = 220 -25
#StatusY = 10
#Maitre = 0
#Horizontal = 1
#Vertical= 2
#Largeur=320
#Hauteur=200
#DeplacerCote = 2
#BonusBloc = 10
#ValeurNiveau= 5
#NiveauMaxi = 40


Structure Bloc
  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 Niveau.l,Moves.l
Global Done,Quit, SpriteID

Global Dim Map.b(7,7)
Global NewList Blocs.Bloc()

Procedure DrawShadowText(px.l,py.l,Texte$,FrontCol.l,ShadowCol.l)
  FrontColor(FrontCol)
  DrawingMode(1)
  DrawText(px,py,Texte$)
  FrontColor(ShadowCol)
  DrawText(px+1,py-1,Texte$)
EndProcedure 

Procedure DrawBox(px,py,w,h,Texte$)
  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-TextWidth(Texte$)-15,h/2+10,Texte$,RGB(0,0,0),RGB($EA,$A8,$B9))
  StopDrawing()
EndProcedure
 
Procedure DrawNiveau()
  DisplaySprite(MapSprite,0,0)
  ForEach Blocs()
    DisplayTransparentSprite(Blocs()\SpriteID,#TailleBloc+Blocs()\XPos,#TailleBloc+Blocs()\YPos)
  Next 
EndProcedure

Procedure DrawStatus()
  If Moves*#DeplacerCote<Bonus
    t$="Bonus: " +RSet(Str(Bonus-Moves*#DeplacerCote),4,"0")
  Else 
    t$="Bonus: " +RSet("",4,"0")
  EndIf 
  StartDrawing(ScreenOutput())
    DrawShadowText(#StatusX,#StatusY,"Niveau: " + RSet(Str(Niveau),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,"Déplacements: " +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 Blocs()
    If x>Blocs()\XPos+#TailleBloc And x<(Blocs()\XPos+Blocs()\XLen+#TailleBloc)
      If y>Blocs()\YPos+#TailleBloc And y<(Blocs()\YPos+Blocs()\YLen+#TailleBloc)
        R =ListIndex(Blocs())
        Break
      EndIf 
    EndIf 
  Next 
  ProcedureReturn R
EndProcedure

Procedure CheckMove()
  Blocs()\MoveMinus=0
  Blocs()\MovePlus=0
  Select Blocs()\Typ
    Case #Vertical
      If Map(Blocs()\XMap+1,Blocs()\YMap)=1
        Blocs()\MoveMinus=1
      EndIf 
      If Map(Blocs()\XMap+1,Blocs()\YMap+Blocs()\Size+1)=1
        Blocs()\MovePlus=1
      EndIf 
    Case #Horizontal
      If Map(Blocs()\XMap,Blocs()\YMap+1)=1
        Blocs()\MoveMinus=1
      EndIf 
      If Map(Blocs()\XMap+Blocs()\Size+1,Blocs()\YMap+1)=1
        Blocs()\MovePlus=1
      EndIf 
    Case #Maitre
      If Map(Blocs()\XMap,Blocs()\YMap+1)=1
        Blocs()\MoveMinus=1
      EndIf 
      If Map(Blocs()\XMap+Blocs()\Size+1,Blocs()\YMap+1)=1
        Blocs()\MovePlus=1
      EndIf 
  EndSelect
EndProcedure

Procedure SetBlocksToMap(Mode.b)
  Select Blocs()\Typ
    Case #Horizontal
      For l=1 To Blocs()\Size
        Map(Blocs()\XMap+l,Blocs()\YMap+1)=Mode
      Next l
    Case #Vertical
      For l=1 To Blocs()\Size
        Map(Blocs()\XMap+1,Blocs()\YMap+l)=Mode
      Next l
    Case #Maitre
      For l=1 To Blocs()\Size
        Map(Blocs()\XMap+l,Blocs()\YMap+1)=Mode
      Next l
  EndSelect
EndProcedure 
 
Procedure AlignBlocks()
  If I>-1
    SelectElement(Blocs(),I)
    If Abs(Blocs()\dy) < #TailleBloc/4
      Blocs()\dy=0
    EndIf
    If Abs(Blocs()\dx) < #TailleBloc/4
      Blocs()\dx=0
    EndIf
    Blocs()\YPos =Blocs()\YMap * #TailleBloc
    Blocs()\XPos =Blocs()\XMap * #TailleBloc
  EndIf
EndProcedure 

Procedure MoveBlocks()
  I= GetBlock()
  If I>-1
    SelectElement(Blocs(),I)
    CheckMove()
    DeltaX = oldX-x
    DeltaY = oldY-y
    dy=0:dx=0
      Select Blocs()\Typ
        Case #Vertical
          If DeltaY>0             ;orientation négative
            If Blocs()\MoveMinus=1
              ProcedureReturn
            EndIf 
          Else                    ;orientation positive
            If Blocs()\MovePlus=1
              ProcedureReturn
            EndIf 
          EndIf 
          DeltaX=0
        Case #Horizontal
          If DeltaX>0             ;orientation négative
            If Blocs()\MoveMinus=1
              ProcedureReturn
            EndIf 
          Else                    ;orientation positive
            If Blocs()\MovePlus=1
              ProcedureReturn
            EndIf 
          EndIf 
          DeltaY=0
        Case #Maitre
          If DeltaX>0             ;orientation négative
            If Blocs()\MoveMinus=1
              ProcedureReturn
            EndIf 
          Else                    ;orientation positive
            If Blocs()\MovePlus=1
              ProcedureReturn
            EndIf 
          EndIf 
          DeltaY=0
      EndSelect 
      Blocs()\YPos-DeltaY
      Blocs()\XPos-DeltaX
      Blocs()\dx - DeltaX
      Blocs()\dy - DeltaY
      SetBlocksToMap(0)
      If Blocs()\dy > #TailleBloc/4
        Blocs()\YMap+1
        Blocs()\dy=0
        Blocs()\YPos =Blocs()\YMap * #TailleBloc
        Moves+1
      EndIf
      If Blocs()\dy < -#TailleBloc/4
        Blocs()\YMap-1
        Blocs()\dy=0
        Blocs()\YPos =Blocs()\YMap * #TailleBloc
        Moves+1
      EndIf
      If Blocs()\dx > #TailleBloc/4
        Blocs()\XMap+1
        Blocs()\dx=0
        Blocs()\XPos =Blocs()\XMap * #TailleBloc
        Moves+1
      EndIf
      If Blocs()\dx < -#TailleBloc/4
        Blocs()\XMap-1
        Blocs()\dx=0
        Blocs()\XPos =Blocs()\XMap * #TailleBloc
        Moves+1
      EndIf
      SetBlocksToMap(1)
      If Blocs()\Typ=#Maitre And Blocs()\XMap=5
        Done=1
      EndIf
      If GetBlock()=-1
        btn=0
      EndIf 
    EndIf
EndProcedure 

Procedure GetNiveau(LVL)
  If LVL<=#NiveauMaxi
    ClearList(Blocs())
    Restore Map
    For ty= 0 To 7
      For tx= 0 To 7
        Read.b Map(tx,ty) 
      Next tx
    Next ty
   
    Restore BlockCount
      For l=1 To Niveau-1
        Read o.b
        Offset.l+(o*4)      ;calculer la longueur d'octet
      Next l
      Read Count.b          ;Lire le nombre de bloc
     
      Bonus.l = Count * #BonusBloc ;Calculer le bonus dépendant du nombre de blocs
     
    Restore NiveauTab
      For l= 1 To Offset 
        Read o.b            ;Passer octets de niveau
      Next l
 
    For l=1 To Count
      AddElement(Blocs())
      Read Blocs()\Typ
      Read Blocs()\XMap
      Read Blocs()\YMap
      Read Blocs()\Size
      Select Blocs()\Typ
        Case #Horizontal
          Blocs()\XLen = #TailleBloc * Blocs()\Size
          Blocs()\YLen = #TailleBloc
          If Blocs()\Size = 3
            Blocs()\SpriteID = HSprite1
          Else
            Blocs()\SpriteID = HSprite2
          EndIf 
        Case #Vertical
          Blocs()\XLen = #TailleBloc
          Blocs()\YLen = #TailleBloc*Blocs()\Size
          If Blocs()\Size = 3
            Blocs()\SpriteID = VSprite1
          Else
            Blocs()\SpriteID = VSprite2
          EndIf 
        Case #Maitre
          Blocs()\XLen=#TailleBloc * Blocs()\Size
          Blocs()\YLen = #TailleBloc
          Blocs()\SpriteID = MSprite
      EndSelect
      SetBlocksToMap(1)
      Blocs()\XPos = Blocs()\XMap * #TailleBloc; + #TailleBloc
      Blocs()\YPos = Blocs()\YMap * #TailleBloc; + #TailleBloc
    Next l
  Else
    LVL = #NiveauMaxi
    Quit = 1
  EndIf
  Moves = 0
  Done = 0
EndProcedure

Procedure NextNiveau(Texte$)
  DrawBox(#TailleBloc,#TailleBloc,6*#TailleBloc,6*#TailleBloc,Texte$)
  FlipBuffers()
  Delay(2000)
  If Moves*#DeplacerCote<Bonus
    Score=Score+(Bonus-Moves*#DeplacerCote)
  EndIf 
  Score = Score + (Niveau*#ValeurNiveau)
  Niveau+1
  GetNiveau(Niveau)
EndProcedure 

Procedure.l CreateBlockSprite()
  Protected.b Typ
  Protected.l Size
  Protected.w R
  Protected.w G
  Protected.w b
  
  Read.b Typ.b
  Read.l Size.l
  Read.w R.w
  Read.w G.w
  Read.w b.w
 
  Select Typ
    Case #Horizontal
      x=Size*#TailleBloc
      y=#TailleBloc
      t$=""
    Case #Vertical
      x=#TailleBloc
      y=Size*#TailleBloc
    Case #Maitre
      x=Size*#TailleBloc
      y=#TailleBloc
      t$="M"
    EndSelect
  c=RGB(R,G,b)
  SpriteID = CreateSprite(#PB_Any, x, y, #PB_Sprite_PixelCollision)
  StartDrawing(SpriteOutput(SpriteID))
  DrawingMode(0)
  ;Box(0,0,SpriteWidth(SpriteID),SpriteHeight(SpriteID),c)
  If Typ=#Horizontal Or Typ=#Maitre
   Circle(#DemiBloc,#DemiBloc,#DemiBloc,c)
   Circle(x-#DemiBloc,#DemiBloc,#DemiBloc,c)
   Box(#DemiBloc,0,x-#TailleBloc,#TailleBloc,c)
   DrawingMode(4)
   DrawText((x-TextWidth(t$))/2,4, t$)
  Else
   Circle(#DemiBloc,#DemiBloc,#DemiBloc,c)
   Circle(#DemiBloc,y-#DemiBloc,#DemiBloc,c)
   Box(0,#DemiBloc,#TailleBloc,y-#TailleBloc,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.b Map(x,y) 
    Next x
  Next y
 
  x=#Largeur
  y=#Hauteur
  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*#TailleBloc
    y=Size*#TailleBloc
    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*#TailleBloc,y*#TailleBloc,#TailleBloc,#TailleBloc,RGB(220,255,255))
          DrawingMode(4)
          Box(x*#TailleBloc,y*#TailleBloc,#TailleBloc,#TailleBloc,RGB(180,180,255))
        EndIf
      Next x
    Next y 
    Restore LineTab
    x=0:y=0
    For l= 1 To 12
      Read.l x2
      Read.l y2
      LineXY(x*#TailleBloc,y*#TailleBloc,x2*#TailleBloc,y2*#TailleBloc,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 Gridlock V0.8", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_WindowCentered)
  If InitSprite()
    If CreateMenu(0, WindowID(0))
      MenuTitle("Jeu")
      MenuItem( 1, "&Relancer")
      MenuItem( 2, "&Sauter Niveau")
      MenuItem( 3, "&Quitter")
      MenuTitle("?")
      MenuItem(4, "A propos")
    EndIf
   
    If OpenWindowedScreen(WindowID(0),0,0,#Largeur,#Hauteur,1,0,0)
      CreateGameGfx()
      Niveau=1
      GetNiveau(Niveau)
      Repeat
        DrawNiveau() 
        oldX=x:oldY=y
        x=WindowMouseX(0)/2
        y=WindowMouseY(0)/2
        EventID.l = WindowEvent()
        Select EventID
          Case #PB_Event_Menu
            Select EventMenu()
              Case 1 ; Restart Niveau
                DrawBox(#TailleBloc,#TailleBloc,6*#TailleBloc,6*#TailleBloc,"Relancer Niveau")
                FlipBuffers()
                Delay(1000)
                GetNiveau(Niveau)
              Case 2
                NextNiveau("Sauter Niveau")
                Bonus=0
              Case 3 ; Exit
                Quit=1
              Case 4 ; About
                MessageRequester("PB-GridLock", "PB-Version de GridLock" + Chr(10) + "écrit pour " + Chr(10) + "www.pure-board.de" + Chr(10) + "Mini-GameContest '05" + Chr(10) + "" + Chr(10) + "Auteur:   F.G.K " + Chr(10) + "" + Chr(10) + "Credits à Riku Salkia l'auteur de la version Phone Symbian", #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
          NextNiveau("Bien Joué!")
        EndIf
        FlipBuffers()
        Delay(10)   
      Until Quit = 1
    EndIf 
  Else
    Debug "Error initsprite"
  EndIf

EndIf
End

;{ DatasSection
DataSection
Blk_Master:
Data.b #Maitre
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 #Vertical
Data.l 3
Data.w 255
Data.w 0
Data.w 0
Blk_Ver2:
Data.b #Vertical
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

NiveauTab:
;- Niveau1:
Data.b #Horizontal,0,0,2
Data.b #Vertical,0,1,3
Data.b #Vertical,0,4,2
Data.b #Horizontal,2,5,3
Data.b #Horizontal,4,4,2
Data.b #Maitre,1,2,2
Data.b #Vertical,3,1,3
Data.b #Vertical,5,0,3
;-Niveau2:
Data.b #Vertical,0,0,2
Data.b #Maitre,0,2,2
Data.b #Horizontal,0,3,3
Data.b #Vertical,2,4,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,3,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertical,4,2,2
Data.b #Vertical,5,1,3
Data.b #Horizontal,3,0,3
Data.b #Vertical,3,1,2
;-Niveau3:
Data.b #Vertical,1,4,2
Data.b #Horizontal,1,3,2
Data.b #Horizontal,2,5,2
Data.b #Vertical,3,2,3
Data.b #Maitre,1,2,2
Data.b #Vertical,5,3,3
;-Niveau4:
Data.b #Vertical,0,0,3
Data.b #Maitre,1,2,2
Data.b #Vertical,2,3,2
Data.b #Horizontal,2,5,3
Data.b #Vertical,5,4,2
Data.b #Horizontal,3,3,3
Data.b #Vertical,3,0,3
;-Niveau5:
Data.b #Vertical,0,4,2
Data.b #Horizontal,4,4,2
Data.b #Horizontal,4,5,2
Data.b #Vertical,5,2,2
Data.b #Vertical,5,0,2
Data.b #Vertical,4,1,3
Data.b #Vertical,3,0,3
Data.b #Horizontal,1,3,3
Data.b #Maitre,1,2,2
Data.b #Vertical,0,1,3
Data.b #Horizontal,0,0,2
;-Niveau6:
Data.b #Horizontal,3,5,3
Data.b #Vertical,3,2,3
Data.b #Vertical,4,1,3
Data.b #Vertical,5,1,3
Data.b #Vertical,3,0,2
Data.b #Maitre,1,2,2
Data.b #Horizontal,0,1,2
Data.b #Horizontal,0,0,2
Data.b #Horizontal,0,3,2
Data.b #Vertical,2,3,2
Data.b #Vertical,0,4,2
;-Niveau7:
Data.b #Vertical,5,0,2
Data.b #Vertical,4,0,2
Data.b #Vertical,5,2,2
Data.b #Vertical,3,1,2
Data.b #Maitre,1,2,2
Data.b #Vertical,1,0,2
Data.b #Horizontal,2,0,2
Data.b #Horizontal,2,3,2
Data.b #Vertical,3,4,2
;-Niveau8:
Data.b #Vertical,5,0,3
Data.b #Horizontal,4,3,2
Data.b #Horizontal,3,4,3
Data.b #Horizontal,3,5,3
Data.b #Vertical,2,4,2
Data.b #Horizontal,0,4,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,3,2
Data.b #Maitre,0,2,2
Data.b #Vertical,2,2,2
Data.b #Vertical,3,2,2
Data.b #Horizontal,2,1,2
Data.b #Horizontal,3,0,2
Data.b #Vertical,4,1,2
;-Niveau9:
Data.b #Vertical,1,0,2
Data.b #Maitre,0,2,2
Data.b #Vertical,0,3,3
Data.b #Horizontal,1,3,3
Data.b #Vertical,2,4,2
Data.b #Vertical,5,4,2
Data.b #Vertical,5,2,2
Data.b #Horizontal,4,1,2
Data.b #Horizontal,4,0,2
Data.b #Horizontal,2,0,2
Data.b #Vertical,3,1,2
Data.b #Vertical,4,2,3
;-Niveau10:
Data.b #Horizontal,4,0,2
Data.b #Horizontal,4,1,2
Data.b #Vertical,5,2,3
Data.b #Horizontal,4,5,2
Data.b #Vertical,3,4,2
Data.b #Horizontal,1,3,3
Data.b #Vertical,0,2,3
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,1,2
Data.b #Horizontal,0,0,2
Data.b #Vertical,2,0,2
Data.b #Maitre,1,2,2
;-Niveau11:
Data.b #Vertical,5,4,2
Data.b #Horizontal,3,3,3
Data.b #Horizontal,2,5,3
Data.b #Vertical,2,3,2
Data.b #Maitre,1,2,2
Data.b #Vertical,0,0,3
Data.b #Horizontal,1,0,2
Data.b #Vertical,3,0,3
;-Niveaul12:
Data.b #Vertical,5,0,3
Data.b #Horizontal,3,3,3
Data.b #Vertical,4,4,2
Data.b #Vertical,2,1,3
Data.b #Maitre,0,2,2
Data.b #Vertical,0,0,2
Data.b #Horizontal,1,0,2
Data.b #Horizontal,0,5,3
;-Niveau13:
Data.b #Horizontal,4,4,2
Data.b #Horizontal,4,5,2
Data.b #Vertical,3,4,2
Data.b #Vertical,0,3,3
Data.b #Horizontal,1,5,2
Data.b #Vertical,1,2,2
Data.b #Vertical,2,1,2
Data.b #Maitre,3,2,2
Data.b #Horizontal,0,0,2
Data.b #Horizontal,2,0,2
Data.b #Vertical,4,0,2
Data.b #Vertical,5,1,3
Data.b #Horizontal,3,3,2
;-Niveau14
Data.b #Horizontal,4,4,2
Data.b #Vertical,4,2,2
Data.b #Vertical,5,2,2
Data.b #Horizontal,4,1,2
Data.b #Maitre,2,2,2
Data.b #Horizontal,2,3,2
Data.b #Vertical,2,4,2
Data.b #Vertical,2,0,2
Data.b #Horizontal,0,0,2
Data.b #Vertical,0,2,2
Data.b #Vertical,1,2,2
Data.b #Horizontal,0,5,2
;-Niveau15:
Data.b #Horizontal,1,5,2
Data.b #Horizontal,3,5,2
Data.b #Vertical,3,3,2
Data.b #Vertical,2,3,2
Data.b #Maitre,2,2,2
Data.b #Horizontal,2,1,2
Data.b #Horizontal,3,0,2
Data.b #Horizontal,1,0,2
Data.b #Vertical,5,1,3
Data.b #Vertical,4,1,3
Data.b #Horizontal,4,4,2
Data.b #Vertical,1,2,3
Data.b #Vertical,0,2,3
Data.b #Horizontal,0,1,2
;-Niveau16:
Data.b #Vertical,5,0,3
Data.b #Horizontal,3,3,3
Data.b #Maitre,3,2,2
Data.b #Vertical,4,0,2
Data.b #Horizontal,2,0,2
Data.b #Horizontal,2,1,2
Data.b #Vertical,2,2,3
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,0,2
Data.b #Vertical,0,1,2
Data.b #Vertical,1,2,2
;-Niveau17:
Data.b #Horizontal,0,5,3
Data.b #Horizontal,0,4,3
Data.b #Vertical,3,3,3
Data.b #Vertical,4,4,2
Data.b #Vertical,5,4,2
Data.b #Vertical,2,2,2
Data.b #Maitre,0,2,2
Data.b #Horizontal,0,3,2
Data.b #Vertical,0,0,2
Data.b #Horizontal,1,0,3
Data.b #Horizontal,4,1,2
Data.b #Horizontal,2,1,2
;-Niveau18:
Data.b #Horizontal,0,5,3
Data.b #Horizontal,1,4,2
Data.b #Vertical,0,2,3
Data.b #Horizontal,1,3,3
Data.b #Maitre,1,2,2
Data.b #Vertical,3,0,3
Data.b #Vertical,2,0,2
Data.b #Horizontal,0,1,2
Data.b #Horizontal,0,0,2
;-Niveau19:
Data.b #Horizontal,3,0,2
Data.b #Vertical,2,0,2
Data.b #Maitre,2,2,2
Data.b #Vertical,4,1,2
Data.b #Vertical,4,3,2
Data.b #Horizontal,2,3,2
Data.b #Horizontal,1,4,3
Data.b #Vertical,1,2,2
;-Niveau20:
Data.b #Vertical,5,2,3
Data.b #Horizontal,3,5,3
Data.b #Horizontal,3,4,2
Data.b #Vertical,2,4,2
Data.b #Vertical,2,2,2
Data.b #Vertical,3,1,2
Data.b #Horizontal,1,1,2
Data.b #Vertical,0,0,2
Data.b #Maitre,0,2,2
Data.b #Horizontal,3,0,3
;-Niveau21:
Data.b #Horizontal,3,5,3
Data.b #Horizontal,0,0,2
Data.b #Vertical,2,0,2
Data.b #Vertical,3,0,3
Data.b #Horizontal,1,3,3
Data.b #Maitre,1,2,2
Data.b #Vertical,0,1,3
;-Niveau22:
Data.b #Vertical,5,4,2
Data.b #Horizontal,4,3,2
Data.b #Horizontal,4,1,2
Data.b #Horizontal,3,0,3
Data.b #Vertical,3,1,3
Data.b #Vertical,2,0,2
Data.b #Maitre,1,2,2
Data.b #Vertical,0,1,2
Data.b #Vertical,1,3,2
Data.b #Vertical,0,4,2
Data.b #Horizontal,1,5,3
Data.b #Horizontal,2,4,2
;-Niveau23:
Data.b #Horizontal,2,5,3
Data.b #Horizontal,4,4,2
Data.b #Horizontal,4,3,2
Data.b #Vertical,3,3,2
Data.b #Vertical,2,3,2
Data.b #Vertical,2,1,2
Data.b #Maitre,3,2,2
Data.b #Horizontal,3,1,2
Data.b #Horizontal,2,0,3
Data.b #Vertical,5,0,3
;-Niveau24:
Data.b #Horizontal,0,5,2
Data.b #Horizontal,0,4,3
Data.b #Horizontal,1,3,2
Data.b #Vertical,0,2,2
Data.b #Vertical,1,1,2
Data.b #Maitre,2,2,2
Data.b #Vertical,2,0,2
Data.b #Horizontal,3,0,2
Data.b #Vertical,4,4,2
Data.b #Vertical,4,2,2
;-Niveau25:
Data.b #Horizontal,4,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertical,5,1,3
Data.b #Vertical,4,2,2
Data.b #Horizontal,4,0,2
Data.b #Horizontal,0,0,2
Data.b #Horizontal,0,1,2
Data.b #Vertical,2,0,2
Data.b #Maitre,1,2,2
Data.b #Vertical,0,2,3
Data.b #Vertical,1,4,2
Data.b #Horizontal,1,3,3
Data.b #Vertical,3,4,2
;-Niveau26:
Data.b #Vertical,5,4,2
Data.b #Vertical,5,2,2
Data.b #Horizontal,3,0,3
Data.b #Vertical,4,1,3
Data.b #Vertical,3,1,2
Data.b #Horizontal,1,3,3
Data.b #Maitre,1,2,2
Data.b #Vertical,1,0,2
Data.b #Vertical,0,1,2
Data.b #Vertical,0,3,2
Data.b #Vertical,2,4,2
Data.b #Horizontal,3,5,2
;-Niveau27:
Data.b #Horizontal,3,5,3
Data.b #Vertical,5,2,3
Data.b #Horizontal,3,3,2
Data.b #Vertical,2,4,2
Data.b #Vertical,2,2,2
Data.b #Maitre,0,2,2
Data.b #Vertical,0,0,2
Data.b #Horizontal,1,0,2
Data.b #Horizontal,1,1,2
Data.b #Vertical,3,0,3
;-Niveau28:
Data.b #Vertical,5,3,3
Data.b #Horizontal,4,1,2
Data.b #Vertical,3,0,2
Data.b #Horizontal,0,0,3
Data.b #Vertical,2,1,3
Data.b #Maitre,0,2,2
Data.b #Vertical,0,3,2
Data.b #Vertical,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
;-Niveau29:
Data.b #Vertical,5,4,2
Data.b #Vertical,5,2,2
Data.b #Vertical,4,0,3
Data.b #Horizontal,3,3,2
Data.b #Vertical,3,4,2
Data.b #Horizontal,0,5,3
Data.b #Vertical,0,3,2
Data.b #Horizontal,1,4,2
Data.b #Horizontal,1,3,2
Data.b #Maitre,0,2,2
Data.b #Vertical,2,1,2
Data.b #Horizontal,0,0,3
;-Niveau30:
Data.b #Vertical,5,3,3
Data.b #Horizontal,3,0,3
Data.b #Vertical,3,1,2
Data.b #Vertical,2,0,2
Data.b #Maitre,1,2,2
Data.b #Vertical,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
;-Niveau31:
Data.b #Horizontal,3,5,3
Data.b #Vertical,5,2,3
Data.b #Horizontal,4,1,2
Data.b #Horizontal,3,0,3
Data.b #Horizontal,0,0,2
Data.b #Vertical,3,1,2
Data.b #Horizontal,3,3,2
Data.b #Vertical,2,3,3
Data.b #Maitre,1,2,2
Data.b #Vertical,0,2,2
Data.b #Horizontal,0,4,2
;-Niveau32:
Data.b #Vertical,5,3,3
Data.b #Horizontal,4,0,2
Data.b #Vertical,3,0,2
Data.b #Vertical,2,0,3
Data.b #Horizontal,0,0,2
Data.b #Maitre,0,2,2
Data.b #Vertical,0,3,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,1,3,2
Data.b #Vertical,3,4,2
Data.b #Horizontal,3,3,2     
;-Niveau33:
Data.b #Vertical,5,3,3
Data.b #Horizontal,3,3,2
Data.b #Vertical,4,4,2
Data.b #Vertical,3,4,2
Data.b #Horizontal,0,5,3
Data.b #Horizontal,1,4,2
Data.b #Horizontal,1,3,2
Data.b #Vertical,0,3,2
Data.b #Maitre,0,2,2
Data.b #Vertical,1,0,2
Data.b #Vertical,2,0,3
Data.b #Horizontal,4,0,2
;-Niveau34:
Data.b #Vertical,0,0,2
Data.b #Maitre,0,2,2
Data.b #Horizontal,0,3,3
Data.b #Vertical,2,4,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,3,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertical,3,3,2
Data.b #Vertical,4,2,2
Data.b #Vertical,3,1,2
Data.b #Horizontal,3,0,3
Data.b #Vertical,5,1,3
;-Niveau35:
Data.b #Vertical,5,0,3
Data.b #Horizontal,3,0,2
Data.b #Vertical,3,1,2
Data.b #Vertical,2,0,3
Data.b #Maitre,0,2,2
Data.b #Vertical,0,3,2
Data.b #Horizontal,0,5,2
Data.b #Horizontal,1,4,2
Data.b #Vertical,3,4,2
Data.b #Vertical,4,4,2
Data.b #Horizontal,1,3,3
;-Niveau36:
Data.b #Horizontal,4,0,2
Data.b #Vertical,5,1,3
Data.b #Horizontal,4,4,2
Data.b #Vertical,3,3,2
Data.b #Horizontal,0,5,2
Data.b #Vertical,2,4,2
Data.b #Horizontal,0,3,3
Data.b #Vertical,0,0,3
Data.b #Horizontal,1,0,3
Data.b #Vertical,1,1,2
Data.b #Horizontal,2,1,2
Data.b #Maitre,2,2,2
;-Niveau37:
Data.b #Horizontal,4,5,2
Data.b #Horizontal,4,4,2
Data.b #Vertical,5,1,3
Data.b #Vertical,4,1,3
Data.b #Horizontal,4,0,2
Data.b #Vertical,3,4,2
Data.b #Horizontal,0,5,2
Data.b #Vertical,0,2,3
Data.b #Horizontal,0,0,2
Data.b #Horizontal,0,1,2
Data.b #Vertical,2,0,2
Data.b #Maitre,1,2,2
Data.b #Horizontal,1,3,3
;-Niveau38:
Data.b #Horizontal,3,5,3
Data.b #Vertical,5,2,3
Data.b #Horizontal,3,0,3
Data.b #Vertical,3,1,2
Data.b #Vertical,0,0,2
Data.b #Maitre,0,2,2
Data.b #Horizontal,1,1,2
Data.b #Vertical,2,2,2
Data.b #Vertical,2,4,2
Data.b #Horizontal,3,3,2
Data.b #Horizontal,3,4,2
;-Niveau39:
Data.b #Vertical,5,2,3
Data.b #Horizontal,3,0,3
Data.b #Vertical,2,0,2
Data.b #Vertical,2,2,2
Data.b #Vertical,3,1,2
Data.b #Horizontal,3,3,2
Data.b #Vertical,0,4,2
Data.b #Vertical,1,4,2
Data.b #Horizontal,2,5,2
Data.b #Horizontal,2,4,2
Data.b #Horizontal,0,3,2
Data.b #Maitre,0,2,2
;-Niveau40:
Data.b #Horizontal,0,5,2
Data.b #Vertical,2,4,2
Data.b #Horizontal,3,5,2
Data.b #Vertical,3,3,2
Data.b #Horizontal,4,4,2
Data.b #Vertical,5,1,3
Data.b #Vertical,4,0,2
Data.b #Maitre,3,2,2
Data.b #Vertical,2,1,2
Data.b #Vertical,1,1,2
Data.b #Horizontal,1,0,2
Data.b #Vertical,0,0,3
Data.b #Horizontal,0,3,3
EndDataSection
;}

Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Sprite non initialisé

Message par Micoute »

Bonjour flaith et merci pour ton aide aide précieuse, il n'y a plus d'erreur, mais rien ne s'affiche et pourtant si je fais Win+Tab, on voit la mignature dans le défilement, mais on la sélectionne (la miniature), ça sélectionne le listing.

Merci encore pour ton aide, mais affaire non classée !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sprite non initialisé

Message par falsam »

Pour une raison que je ne connais pas, ta fenêtre s'ouvre en dehors de ta résolution d'écran !!!

Remplace

Code : Tout sélectionner

OpenWindow(0, 100, 200, 640,400, "PB Gridlock V0.8", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_WindowCentered
par

Code : Tout sélectionner

OpenWindow(0, 0, 0, 640, 400, "PB Gridlock V0.8", #PB_Window_SystemMenu)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Sprite non initialisé

Message par Micoute »

Merci falsam, tu es magique ou du moins, ta solution, il y avait longtemps que je n'avais pas revu ce programme refonctionner, d'autres problèmes vont peut-être apparaître, mais pour l'instant je vais poser l'étiquette [Résolu] et merci encore.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [Résolu] Sprite non initialisé

Message par falsam »

Cette solution (BugWare est plus approprié) permet uniquement de résoudre ton souci d'affichage mais ne dit pas pourquoi l'affichage se faisait en dehors de ta résolution.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Sprite non initialisé

Message par Micoute »

Bonjour falsam, je crois que j'ai trouvé l'erreur
#PB_Window_WindowCentered à la place de #PB_Window_ScreenCentered
en attendant, on cherche longtemps le pourquoi
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre