Page 1 of 1
Sprite bug?
Posted: Wed Nov 19, 2025 10:08 am
by SPH
PB 6.12
Incomprehensible!
Look at this short code and tell me why the sprite I'm drawing isn't always the right one!
Code: Select all
InitSprite()
InitKeyboard()
OpenScreen(1920,1080,32,"Sprite")
LoadSprite(0,"d:/amy.bmp")
DisplaySprite(0,0,0)
taille_x=36
taille_y=42
nb=1
For u=0 To 8
For i=1 To 8
GrabSprite(nb,i*taille_x,u*taille_y,taille_x,taille_y)
nb+1
Next
Next
;;;
For i=1 To nb-1
DisplaySprite(i,20+i*taille_x,400)
Next
FlipBuffers()
Repeat
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)
I'm not including the sprite table because the code is easy to read without it.
Re: Sprite bug?
Posted: Wed Nov 19, 2025 12:42 pm
by SPH
It only displays the sprites from the first row!
Re: Sprite bug?
Posted: Wed Nov 19, 2025 2:21 pm
by moulder61
The For/Next loop before FlipBuffers() will run from 1 to 71 rather than 0 to 71.
nb in a previous nested loop will be 72. Could that be it?
Moulder.
Re: Sprite bug?
Posted: Thu Nov 20, 2025 12:30 pm
by SPH
Re: Sprite bug?
Posted: Sat Nov 22, 2025 2:51 pm
by benubi
1. 10
80 x 768 is not a standard resolution (I changed to 1024x768)
2. I modified one code so it scrolls the sprites, and also grabs the original table as sprite #0
It seems to be complete, starting with 'A' and finishing with '|'. I see nothing missing or grabbed at the wrong place.
(on PB 6.21 6.12 6.30, W10/64bit) It behaves the same on all PB versions I tested, but maybe I am missing something?
Code: Select all
InitSprite()
InitKeyboard()
OpenScreen(1024,768,32,"Sprite")
StartDrawing(ScreenOutput())
For u=0 To 5
For i=0 To 10
DrawText(i*20,u*20,Chr(65+x),RGB(Random(115),Random(115),Random(255)),RGB(Random(255),Random(255),Random(255)))
x+1
Next
Next
StopDrawing()
GrabSprite(0,0,0,220,120)
taille_x=20
taille_y=20
nb=1
For u=0 To 5
For i=0 To 10
GrabSprite(nb,i*taille_x,u*taille_y,taille_x,taille_y)
nb+1
Next
Next
;;;
x_offset=-1024
Repeat
FlipBuffers()
ClearScreen(0)
DisplaySprite(0,0,0)
For i=1 To nb-1
DisplaySprite(i,(i*taille_x) - x_offset,400) ; erreur dans les numeros de sprites !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Next
x_offset+1
If x_offset>((nb+1)*taille_x)
x_offset=-1024
EndIf
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)
Re: Sprite bug?
Posted: Sat Nov 22, 2025 4:48 pm
by Olli
Code: Select all
InitSprite()
InitKeyboard()
examindesktops()
w = desktopwidth(0)
h = desktopheight(0)
OpenScreen(w,h,32,"Sprite")
StartDrawing(ScreenOutput())
For u=0 To 5
For i=0 To 10
DrawText(i*20,u*20,Chr(65+x),RGB(Random(115),Random(115),Random(255)),RGB(Random(255),Random(255),Random(255)))
x+1
Next
Next
StopDrawing()
GrabSprite(0,0,0,220,120)
taille_x=20
taille_y=20
nb=1
For u=0 To 5
For i=0 To 10
GrabSprite(nb,i*taille_x,u*taille_y,taille_x,taille_y)
nb+1
Next
Next
;;;
x_offset=-1024
Repeat
FlipBuffers()
ClearScreen(0)
DisplaySprite(0,0,0)
For i=1 To nb-1
DisplaySprite(i,(i*taille_x) + x_offset,400)
Next
x_offset+1
If x_offset>((nb+1)*taille_x)
x_offset=-1024
EndIf
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)