Page 3 sur 4
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : sam. 12/juil./2025 9:19
par threedslider
Ou avec Enable DPI si tu veux garder donc voici le code si tu veux voir ton sprite

:
Code : Tout sélectionner
; INIT
InitSprite():InitKeyboard():UsePNGImageDecoder() :InitSound() :InitMouse()
; CREATION FENETRE JEU
OpenWindow(0, 0, 0, 800/DesktopResolutionX(), 600/DesktopResolutionY(), "",#PB_Window_BorderLess|#PB_Window_ScreenCentered) ;#PB_Window_TitleBar | #PB_Window_ScreenCentered|#PB_Window_SystemMenu
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 1, 0, 0)
; DECOUPE DES SPRITES
ClearScreen(RGB(0,0,0))
CatchSprite(9999,?sprite9999,#PB_Sprite_AlphaBlending)
DisplayTransparentSprite (9999,0,0,255)
GrabSprite(0,0,0,32,32, #PB_Sprite_PixelCollision|#PB_Sprite_AlphaBlending)
dessinmaria=0
; AFFICHAGE
Repeat
While WindowEvent() ; modif
Wend
ClearScreen(RGB(0,0,0))
DisplayTransparentSprite (dessinmaria,150,60,200)
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
; FICHIERS
DataSection
sprite9999:
IncludeBinary "DATA/td00110.png"
EndDataSection
Voilà encore résolu

Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 13/juil./2025 13:00
par drfloyd
Non y a rien à faire... les sprites sont invisibles.
et donc ce que vous proposez ca marche tres bien sur 5.71... que j'applique vos modifs ou pas, ca fonctionne.
je ne comprend pas
Je retourne sur 5.71, y a que ca a faire.
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 13/juil./2025 13:51
par SPH
drfloyd a écrit : dim. 13/juil./2025 13:00
Non y a rien à faire... les sprites sont invisibles.
et donc ce que vous proposez ca marche tres bien sur 5.71... que j'applique vos modifs ou pas, ca fonctionne.
je ne comprend pas
Je retourne sur 5.71, y a que ca a faire.
Tu devrais poster dans la rubrique BUGS du forum anglais si tu n'y arrives pas.

Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 13/juil./2025 15:28
par drfloyd
Yop,
Une interrogation sur les collisions de sprites
Ca marche, pas de soucis, mais parfois de manière etrange... Dans mon dernier jeu je teste la collision de 1000 boulettes avec mon sprite :
Code : Tout sélectionner
For i=1 To 1000
If bonusvisible(i)=1 And SpritePixelCollision(monsprite(frame),x,y,dessinbonus,bonusx(i),bonusy(i))
bonusvisible(i)=0
score+10
PlaySound(1)
Next
Tout se passe a peu pret bien en fait...
Parfois la collision met du temps à se detecter, sur les 1000 boulettes, parfois une boulette reste bien 1 sec sur mon sprite avant d'etre detectée en collision...
Ca peut etre du à quoi ?????
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 13/juil./2025 16:38
par SPH
Je n'ai jamais utilisé les collisions mais je suppose que ton ordi tire la langue devant 1000 sprites a tester...
A voir si c'est immediat avec 10 sprites.
Peut etre que quelqu'un d'autre peux apporter une autre réponse

Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 13/juil./2025 19:01
par Itsy Bitsy
Commence déjà par cette optimisation.
Code : Tout sélectionner
For i=1 To 1000
If bonusvisible(i)=1
IF SpritePixelCollision(monsprite(frame),x,y,dessinbonus,bonusx(i),bonusy(i))
bonusvisible(i)=0
score+10
PlaySound(1)
Endif
Next
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 13/juil./2025 21:04
par drfloyd
petit optimisation, certe, mais qui ne change rien
C'est possible techniquement que devant une telle quantité de tests, Pure tire la lanque ???? Pour moi, non, ca ramerait, mais ca fonctionnerait.
Si je vais revenir à une methode classique via les positions x y.....
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : lun. 14/juil./2025 6:30
par Itsy Bitsy
Ne connaissant pas ce qu'il n'y a avant, et le fonctionnement final attendu, il est difficile de faire les meilleurs choix.
C'est un peu comme jouer à la bataille navale.
Code : Tout sélectionner
var_monsprite=monsprite(frame) ; Ajout
For i=1 To 1000
If bonusvisible(i)=1
IF SpritePixelCollision(var_monsprite,x,y,dessinbonus,bonusx(i),bonusy(i)) ; modif var_monsprite
bonusvisible(i)=0
score+10
PlaySound(1)
Break ; Quitte la boucle for to next, à la première collision détecté ? par exemple
Endif
Next
Il est aussi possible de passer par les pointeurs pour accélérer les données aux tableaux.
L'usage de données structurées d'un seul bloc, seraient aussi plus appropriées, que plusieurs tableaux.

Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : lun. 14/juil./2025 7:34
par threedslider
drfloyd a écrit : dim. 13/juil./2025 13:00
Non y a rien à faire... les sprites sont invisibles.
T'es sûr que t'as testé ?? Parce que moi ça marche je comprends pas ...

Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : lun. 14/juil./2025 10:36
par falsam
Pourrais tu nous décrire la configuration de ton ordinateur (Processeur, mémoire, carte graphique, mise à l'échelle, ...) ?
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : ven. 18/juil./2025 19:57
par drfloyd
Pour les collisions j'ai "trouvé", en testant sur des boulettes à l'arret.
La collision n'est detectée que sur la taille du plus petit sprite...
Mon perso fait 64x64
les boulettes font 11x11
Avec spritepixelcollision, la detection ne se fait que dans le coin 11x11 de mon perso
Les sprites doivent etre de taille identique ??????
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : ven. 18/juil./2025 22:07
par SPH
drfloyd a écrit : dim. 13/juil./2025 21:04
C'est possible techniquement que devant une telle quantité de tests, Pure tire la lanque ???? Pour moi, non, ca ramerait, mais ca fonctionnerait.
Je confirme que le code fonctionne sur PB 6.21
Et : oui, si ça rame, c'est au moins que ça marche...
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : sam. 19/juil./2025 8:05
par drfloyd
Pour les sprites qui ne s'affichent pas chez moi, j'ai trouvé la source du probleme,
c'est dans le paramétrage de l'ecran :
Code : Tout sélectionner
; MON CODE FULLSCREEN FENETRE ZOOME :
OpenWindow(0, 0, 0, DesktopWidth(0), DesktopHeight(0), "",#PB_Window_BorderLess|#PB_Window_ScreenCentered) ;#PB_Window_TitleBar | #PB_Window_ScreenCentered|#PB_Window_SystemMenu
OpenWindowedScreen(WindowID(0), 0, 0, 640, 400, 1, 0, 0)
Versus
; VOTRE CODE EN MODE FENETRE :
OpenWindow(0, 0, 0, 640/DesktopResolutionX(), 400/DesktopResolutionY(), "",#PB_Window_BorderLess|#PB_Window_ScreenCentered) ;#PB_Window_TitleBar | #PB_Window_ScreenCentered|#PB_Window_SystemMenu
OpenWindowedScreen(WindowID(0), 0, 0, 640, 400, 1, 0, 0)
Vous etes en mode fenetre, et moi je zoome sur tout l'ecran.
Qu'est ce qui fait dans mes 2 lignes de code que les sprites ne s'affichent pas en en 6.21 (MAIS s'affichent en 5.71)
ca se joue ici : DesktopWidth(0), DesktopHeight(0)
si je remplace par : 640/DesktopResolutionX(), 400/DesktopResolutionY()
les sprites apparaissent, mais je passe en mode fenetre, et non fullscreen
Bref, quelque chose a changé avec Openwindow entre 5.71 et 6.21, le "scaling" (c'est le terme ?) d'image en plein ecran deconne, du moins avec mon code.
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 20/juil./2025 6:23
par threedslider
Non en mode fullscreen c'est plutôt ça :
Re: Probleme SPRITES entre PURE 5.71 et 6.21
Publié : dim. 20/juil./2025 6:52
par threedslider
Si tu veux mettre le fullscreen win donc j'ai fixé ton code par ça :
Code : Tout sélectionner
; INIT
InitSprite():InitKeyboard():UsePNGImageDecoder() :InitSound() :InitMouse()
ExamineDesktops() ; <== un oubli de le mettre ça
; CREATION FENETRE JEU
OpenWindow(0, 0, 0, DesktopWidth(0), DesktopHeight(0), "",#PB_Window_BorderLess|#PB_Window_ScreenCentered) ;#PB_Window_TitleBar | #PB_Window_ScreenCentered|#PB_Window_SystemMenu
OpenWindowedScreen(WindowID(0), 0, 0, 640, 400, 1, 0, 0)
; DECOUPE DES SPRITES
ClearScreen(RGB(0,0,0))
CatchSprite(9999,?sprite9999,#PB_Sprite_AlphaBlending)
DisplayTransparentSprite (9999,0,0,255)
GrabSprite(0,0,0,32,32,#PB_Sprite_PixelCollision|#PB_Sprite_AlphaBlending)
dessinmaria=0
; AFFICHAGE
Repeat
ClearScreen(RGB(0,0,0))
DisplayTransparentSprite (dessinmaria,150,60,200)
FlipBuffers()
ExamineKeyboard() ; <== un oubli de le mettre ça
Until KeyboardPushed(#PB_Key_Escape)
; FICHIERS
DataSection
sprite9999:
IncludeBinary "DATA/td00110.png"
EndDataSection
Mais chez moi ça affiche gris comme image ...
