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 :D :

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 :P

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. :idea:

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 :idea:

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. :roll:

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. :idea:

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 :

Code : Tout sélectionner

OpenScreen(640, 400, 32, "Hello world")

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 ... :?