Probleme SPRITES entre PURE 5.71 et 6.21

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Probleme SPRITES entre PURE 5.71 et 6.21

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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 ?????
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Probleme SPRITES entre PURE 5.71 et 6.21

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Itsy Bitsy
Messages : 13
Inscription : lun. 24/juin/2019 12:19

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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.....
Avatar de l’utilisateur
Itsy Bitsy
Messages : 13
Inscription : lun. 24/juin/2019 12:19

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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:
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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 ... :?
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message par falsam »

Pourrais tu nous décrire la configuration de ton ordinateur (Processeur, mémoire, carte graphique, mise à l'échelle, ...) ?
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%
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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 ??????
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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...

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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.
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message par threedslider »

Non en mode fullscreen c'est plutôt ça :

Code : Tout sélectionner

OpenScreen(640, 400, 32, "Hello world")
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Probleme SPRITES entre PURE 5.71 et 6.21

Message 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 ... :?
Répondre