[2D] Kill Birds

Programmation avancée de jeux en PureBasic
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: [2D] Kill Birds

Message par G-Rom »

Pour te simplifier la vie, le nom sur les animations via des map & des listes :
Comme cela un coup de
displayAnimationSprite(Birdie,"fly left",100,100)
et tu affiches l'animation voulue ;)
Facile à amélioré en plus :D

Code : Tout sélectionner

Structure vector2i
  x.i
  y.i
EndStructure

Structure rectangle
  A.vector2i ; min
  B.vector2i ; size
EndStructure

Structure animation
  animSpeed.l
  animTimer.i
  currentFrame.l
  List region.rectangle()
EndStructure

Structure animSprite
  atlasTexture.l
  cellWidth.l
  cellHeight.l
  Map animation.animation()
EndStructure

Procedure.i LoadAnimSprite(name.s, cellWidth.l, cellHeight.l, spriteMode.l = 0)
  *a.animSprite = AllocateMemory(SizeOf(animSprite))
  If *a
    InitializeStructure(*a,animSprite)
    *a\atlasTexture = LoadSprite(#PB_Any,name,spriteMode)
    *a\cellWidth    = cellWidth
    *a\cellHeight   = cellHeight
    
    If Not *a\atlasTexture
      FreeMemory(*a)
      ProcedureReturn #Null
    EndIf 

    ProcedureReturn *a
  EndIf 
  
  ProcedureReturn #Null
EndProcedure


Procedure setAnimationFrame(*spr.animSprite, name.s, cellX.l, cellY.l)
  If *spr
    AddElement( *spr\animation(name)\region() )
      *spr\animation(name)\region()\A\x = cellX * *spr\cellWidth
      *spr\animation(name)\region()\A\y = cellY * *spr\cellHeight
      *spr\animation(name)\region()\B\x = *spr\cellWidth
      *spr\animation(name)\region()\B\y = *spr\cellHeight
  EndIf 
EndProcedure

Procedure setAnimationSpeed(*spr.animSprite, name.s, speed.i)
  If *spr
    *spr\animation(name)\animSpeed = speed
  EndIf
EndProcedure


Procedure displayAnimationSprite(*spr.animSprite, name.s, x.f, y.f)
  If *spr
    *rect.rectangle = @*spr\animation(name)\region()
    If *spr\animation(name)\animTimer < ElapsedMilliseconds()
       *spr\animation(name)\animTimer = ElapsedMilliseconds() + *spr\animation(name)\animSpeed
      
         If NextElement(*spr\animation(name)\region()) = 0
           FirstElement(*spr\animation(name)\region())
         EndIf 
    
    EndIf
    ClipSprite(*spr\atlasTexture,*rect\A\x, *rect\A\y, *rect\B\x, *rect\B\y)
    DisplayTransparentSprite(*spr\atlasTexture,x,y)
  EndIf 
EndProcedure


;
;-TEST
;

InitSprite() 
OpenWindow(0,0,0,800,600,"")
OpenWindowedScreen(WindowID(0),0,0,800,600)

UsePNGImageDecoder()

Birdie = LoadAnimSprite("./bird.png",64,64,#PB_Sprite_AlphaBlending)

setAnimationFrame(Birdie,"fly left",0,0)
setAnimationFrame(Birdie,"fly left",1,0)
setAnimationFrame(Birdie,"fly left",2,0)
setAnimationFrame(Birdie,"fly left",3,0)
setAnimationSpeed(Birdie,"fly left",50)

setAnimationFrame(Birdie,"fly right",0,1)
setAnimationFrame(Birdie,"fly right",1,1)
setAnimationFrame(Birdie,"fly right",2,1)
setAnimationFrame(Birdie,"fly right",3,1)
setAnimationSpeed(Birdie,"fly right",50)


While 1
  event = WindowEvent()
  
  If event = #PB_Event_CloseWindow
    Break
  EndIf 
  
  ClearScreen(0)  
  displayAnimationSprite(Birdie,"fly left",100,100)
  displayAnimationSprite(Birdie,"fly right",200,200)
  FlipBuffers()
Wend 
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Kill Birds

Message par falsam »

Voila un system intéressant qui se rapproche de certains framework javascript :) Merci G-Rom.
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%
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: [2D] Kill Birds

Message par venom »

Génial ce petit jeux Bravo et merci du partage 8)

Moi ça me fait penser a un jeu de chasse au canard sur nes, j'avais même le gun en guise de manette :D







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: [2D] Kill Birds

Message par Atlante »

Sympa mais comme tous les jeux 2d PureBasic ça déconne grave avec la souris (ça se deplace pas ou ça saute 5cm d'un coup).
Cf le lien ci-dessous :)
@+
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Kill Birds

Message par falsam »

Atlante a écrit :Sympa mais comme tous les jeux 2d PureBasic ça déconne grave avec la souris (ça se deplace pas ou ça saute 5cm d'un coup).
Bizarre ton soucis (du moins avec ce jeu) je ne rencontre pas ce probléme et parmi tout ceux qui sont intervenus sur ce post, personne n'en parle.
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%
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: [2D] Kill Birds

Message par Atlante »

J'ai une souris roccat et je sais que les personnes avec des souris razer ont le problème aussi.
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Kill Birds

Message par falsam »

Atlante a écrit :J'ai une souris roccat et je sais que les personnes avec des souris razer ont le problème aussi.
On pourrait supposer que ces souris ou plutot les drivers sont la cause de ces soucis ? Pourquoi impliquer forcément Pure Basic ? :)
Atlante a écrit :Sympa mais comme tous les jeux 2d PureBasic ça déconne grave avec la souris
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%
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: [2D] Kill Birds

Message par Atlante »

Oui mais non, déjà vérité tout est à jour et j'ai aucun soucis dans tous les jeux (cs, battlefield 3&4, starcraft2, rift...).
Je pense vraiment que c'est un problème côté PB, cela ne doit pas prendre en compte le matos qui sort de l'ordinaire ou s'appuyer sur windows. J'en sais trop rien mais je ne suis pas le seul.
Il y a même un topic sur le forum anglais pour ce problème.

Voila une capture d'écran que la config souris :
Image

Sinon en modifiant ton code avec ce topic : http://www.purebasic.fr/french/viewtopi ... ilit=mouse
ça fonctionne bien :)
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Kill Birds

Message par falsam »

Ok je vais adapter mon code (et les prochains) en proposant cette astuce en option je pense. Une case à cocher surement. Merci pour cette info.

Reedit : Mince ça ne fonctionne que sous Windows !
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%
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: [2D] Kill Birds

Message par Mindphazer »

Mindphazer a écrit : Hum...
Pas sur Mac, visiblement.
Du coup maintenant, les piafs sont tous affichés sur un carré noir
Damned !
J'avais pas retéléchargé les images, et j'avais encore le fichier birds.png avec le fond noir :?
Du coup, avec le bon fichier, ça fonctionne très bien
Sorry :oops: :oops: :oops:
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Kill Birds

Message par falsam »

Ha ben bravo !!! C'est aussi de ma faute. J'aurais du te demander si tu avais bien les bonnes images. :)
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%
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: [2D] Kill Birds

Message par Mindphazer »

Ben oui
En plus tu avais bien précisé code et téléchargement mis à jour dans ton post...
Faut que je m'achète de lunettes
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: [2D] Kill Birds

Message par flaith »

Bien symphatique, merci :)
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: [2D] Kill Birds

Message par Mesa »

J'aimerais bien pouvoir tirer plusieurs fois de suite, histoire de faire un carnage dans les règles de l'art, tant qu'à faire :D :D

M.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [2D] Kill Birds

Message par Ar-S »

je viens d'essayer le code, je rejoints Atlante, j'ai le même soucis avec ma Cyborg RAT5
~~~~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
Répondre