Salut,
J'ai un peu la flemme de chercher et surtout : je ne sais pas quoi chercher.
Quoi donc ?
=> la fameuse instruction qui ajoute et qui retire un element d'une serie d'evenement (comme par exemple un point ou un sprite)
Si vous ne voyez toujours pas, imaginez 100 pixels se déplaçant dans l'ecran. A chaque collision, ca ajoute un pixel (ou ca elimine un pixel, qu'importe).
Merci
Je cherche une instruction
Je cherche une instruction
!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
Re: Je cherche une instruction
Tes sprites sont gérés dans un tableau ? Tu affiches un nombre N pour démarrer. En gérant les collisions par coordonnées par exemple, à toi de modifier le N dans ta boucle +1 ou -1 si collision.
ici tableau de 1000 sprites max
Tu en affiches 150
Si 2 pixels se touchent, soit +1 vert, soit -1
Les verts ensuite ne peuvent avoir le même comportement qu'avec les blancs.
ici tableau de 1000 sprites max
Tu en affiches 150
Si 2 pixels se touchent, soit +1 vert, soit -1
Les verts ensuite ne peuvent avoir le même comportement qu'avec les blancs.
Code : Tout sélectionner
; Initialisation
InitSprite()
InitKeyboard()
OpenScreen(800, 600, 32, "Sprites aléatoires")
Structure Sprite
x.l
y.l
color.l
isGreen.b ; 1 = Vert, 0 = Blanc
EndStructure
Global Dim sprites.Sprite(1000) ; Tableau contenant jusqu'à 1000 sprites
Global spriteCount = 150 ; Départ avec 150 sprites actifs
Global Dim pixelGrid(800, 600) ; Grille de détection des collisions (blancs uniquement)
; Initialisation des 150 premiers sprites (blancs)
For i = 0 To spriteCount - 1
sprites(i)\x = Random(799)
sprites(i)\y = Random(599)
sprites(i)\color = RGB(255, 255, 255) ; Blanc
sprites(i)\isGreen = 0
pixelGrid(sprites(i)\x, sprites(i)\y) = 1 ; Seuls les blancs sont enregistrés
Next
Procedure UpdateSprites()
For i = 0 To spriteCount - 1
; Effacer l'ancienne position de la grille si le sprite est blanc
If sprites(i)\isGreen = 0
pixelGrid(sprites(i)\x, sprites(i)\y) = 0
EndIf
; Déplacement aléatoire de ±1 pixel
sprites(i)\x + Random(2) - 1
sprites(i)\y + Random(2) - 1
; Vérification des limites
If sprites(i)\x < 0 : sprites(i)\x = 0 : EndIf
If sprites(i)\x > 799 : sprites(i)\x = 799 : EndIf
If sprites(i)\y < 0 : sprites(i)\y = 0 : EndIf
If sprites(i)\y > 599 : sprites(i)\y = 599 : EndIf
; **Détection de collision** (seulement pour les blancs)
If sprites(i)\isGreen = 0 And pixelGrid(sprites(i)\x, sprites(i)\y) = 1
If Random(1) = 0 And spriteCount > 1 ; Supprimer un sprite blanc
spriteCount - 1
sprites(i) = sprites(spriteCount) ; Remplace par le dernier
ElseIf spriteCount < 1000 ; Ajouter un sprite vert à l'endroit de la collision
sprites(spriteCount)\x = sprites(i)\x
sprites(spriteCount)\y = sprites(i)\y
sprites(spriteCount)\color = RGB(0, 255, 0) ; Nouveau sprite en vert
sprites(spriteCount)\isGreen = 1 ; Marqué comme vert
spriteCount + 1
EndIf
EndIf
; Remettre à jour la grille **uniquement pour les blancs**
If sprites(i)\isGreen = 0
pixelGrid(sprites(i)\x, sprites(i)\y) = 1
EndIf
Next
EndProcedure
Procedure DrawSprites()
ClearScreen(RGB(0,0,0))
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default)
For i = 0 To spriteCount - 1
Plot(sprites(i)\x, sprites(i)\y, sprites(i)\color)
Next
StopDrawing()
FlipBuffers()
EndProcedure
; Boucle principale
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape) : End : EndIf
UpdateSprites()
DrawSprites()
Delay(16)
ForEver
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Je cherche une instruction
Justement pas !
Je cherche la fameuse instruction qui n'a pas besoin d'une limite. Je crois me rappeler que ca ajoute (on peux dire: a l'infini) un sprite de plus à l'ecran (un sprite ou autre).
Il me semble que ca n'a rien a voir avec un dim()

!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
Re: Je cherche une instruction
Sinon une liste chainée... Tu ajoutes (ou enlève) un élément au fur et à mesure.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Je cherche une instruction
Je pense que c'est ça !
(je teste ça)
Thx
(je teste ça)

Thx
!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