Page 6 sur 9

Re: Pour YOGI

Publié : mer. 19/oct./2016 18:22
par Ar-S
J'ai repris ton code, modifie juste le chemin de l'image.
J'ai commenté ;)

Je pause, je vais faire à bouffer ^^

Code : Tout sélectionner


; Prends l'habiude d'énumérer tes gadgets/fenêtre/éléments sinon tu vas te perdre par la suite
Enumeration
  #fenetre_principale
  ; Gadget
  #gadget_bouton_ok
  #MonCanvas
  ; Image
  #MonImage
EndEnumeration

; Au meme titre que les enumération, déclare tes procédures
Declare AfficheDansCanvas(IDimage)
Declare Ouvre_Fenetre_principale()




; decode les png jpg
UsePNGImageDecoder()
UseJPEGImageDecoder()

; On charge l'image mais on vérifie qu'elle ait été chargé
Global image = LoadImage(#MonImage, "D:\OneDrive\Images\web1.jpg")
If image = 0
  Debug "soucis de chargement de l'image"
  End
EndIf

; La procédure qui permettra d'afficher (toutes les) l'image

Procedure AfficheDansCanvas(IDimage)
  StartDrawing(CanvasOutput(#MonCanvas))
  DrawImage(IDimage,0,0)
  StopDrawing()
EndProcedure


Procedure Ouvre_Fenetre_principale()
  If OpenWindow ( #fenetre_principale , 0, 0, 800 , 600, "fenêtre principale" , #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
    
    ; Le canvas est un très bon support graphique pour l'affichage non animé
    ; les screen se prètent plus à l'animation
    CanvasGadget(#MonCanvas,  0,0,800,600) 
    ; On affiche l'image dans le canvas
    AfficheDansCanvas(image) ; image est l'ID de #MonImage
    
  Else
    
  EndIf
EndProcedure

Ouvre_Fenetre_principale()

Repeat
  Event = WaitWindowEvent ()
  ; Mettre ici la gestion des évènements
Until Event = #PB_Event_CloseWindow ; si on appui sur la croix, on ferme le programme
End                                 ; Fin du programme 

Re: Pour YOGI

Publié : mer. 19/oct./2016 18:32
par yogi
superbe merci ! je vais potasser tout cela demain matin !
yes et vu que je suis sur deepin os, j'avais du mal à mettre un lien vers le bureau pour purebasic.
bref tout arrive à point nommé, à moi de coder maintenant

très bonne soirée à toi

yogib33r

Re: Pour YOGI

Publié : jeu. 20/oct./2016 20:36
par TazNormand
Salut Yogi,

Tu peux jeter un œil à un ancien tuto que j'avais fait, il s'agit d'un remake d'une cracktro de SkidRow.

Les codes sont à revoir, car bien des versions de PureBasic sont sorties depuis ce tuto, mais le code reste, je pense, à peu près fonctionnel.

Je n'ai testé à l'instant que le premier code de mon ancien tuto, et à part le CreateSprite() qui ne connaît plus la constante #PB_Sprite_Texture, le reste fonctionne.

Re: Pour YOGI

Publié : jeu. 20/oct./2016 22:07
par yogi
bonsoir taznormand

grand merci pour ton code que je vais lire demain matin au reveil :)
je cherche un effet de plasma au cas ou :) très bonne fin de soirée à toi

merci encore

stéphane

Re: Pour YOGI

Publié : jeu. 20/oct./2016 23:48
par Ar-S
Tu veux aller trop vite...
Affiche un screen, fais bouger des sprites dedans, pour les effets de demomaker utilisant les math (plasma, sinuscroll et compagnie), tu auras juste à trouver les formules qui vont bien sur les forums PB (ou autre !) et les mettre en pratique Mais pour celà faut que tu piges bien comment fonctionne la 2D et PB.
Fais des tests de ClipSprite par exemple, ça te sera utile pour les scroll text si tu souhaites utiliser des sheet de fonts à l'ancienne.

Re: Pour YOGI

Publié : ven. 21/oct./2016 0:00
par falsam
Ar-S a écrit :Tu veux aller trop vite...
ça c'est clair au vu du peu que j'ai vu dans ton dernier code.
Ar-S a écrit :faut que tu piges bien comment fonctionne la 2D et PB.
Suis bien ce conseil d'Ar-S ^^

La découverte avant toute chose avant de passer à une application concrète.

Re: Pour YOGI

Publié : ven. 21/oct./2016 10:28
par yogi
bonjour messieurs

oui je vais aller tout doucement en effet.
bref oui je m'y remets stap, avec envie car la syntaxe est simple mais le langage puissant.
merci a vous :)
stéphane

Re: Pour YOGI

Publié : ven. 21/oct./2016 16:24
par yogi
re

en fait je vais commencer par lire tous les excellents tutos tout en haut dans /debutants
bref j'ai à faire :)
merci à tous de votre amabilité sisi ç fait du bien :)

stéphane

Re: Pour YOGI

Publié : ven. 21/oct./2016 21:28
par Ar-S
Je suis en train de pondre quelque chose... j'ai pas trop de date mais ça devrait te plaire.
Je posterai le tout une fois terminé avec le code.

Re: Pour YOGI

Publié : ven. 21/oct./2016 22:00
par yogi
coucou monsieur A-Rs !
yes j'ai hâte de voir cela :)
très bonne soirée

Re: Pour YOGI

Publié : sam. 22/oct./2016 15:59
par Ar-S
Petit exemple de scrolling parallaxe
Particularité, image qui boucle donc utilisation de clipsprite à gogo
D'autres exemples sur ce topic : http://www.purebasic.fr/french/viewtopi ... e+Parallax



IMAGES ICI : http://share.ldvmultimedia.com/imagescrolll.zip

Code : Tout sélectionner

; Ar-S / Infinite Parallax Scroll using clipsprite.
; Clip de 200px de large uniquement

UsePNGImageDecoder()

Enumeration
  #Fenetre_principale
  #ter
  #her
EndEnumeration

Define.l EV

Global StyleFen.i=#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered

If Not (InitSprite() And InitSound() And InitKeyboard())
  End
EndIf



OpenWindow(#Fenetre_principale, 0, 0, 200, 135, "scroll", StyleFen)

If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, 200, 135, 1, 0, 0)
  LoadSprite(#ter,"paralax.png",#PB_Sprite_AlphaBlending)
  LoadSprite(#her,"herbe.png",#PB_Sprite_AlphaBlending)
  Xter = 0


Repeat ;Evemement 2D
 
  Repeat
    EV = WindowEvent()
   
    Select EV   
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until EV=0
 
  ClearScreen(RGB(0, 0, 0))
 
  ClipSprite(#ter, Xter, 0, 200, 135)
  DisplayTransparentSprite(#ter,0,0)
  ClipSprite(#her, Xher, 0, 200, 135)
  DisplayTransparentSprite(#her,0,0)
 
  If Xher >= 600
    Xher = 0
  EndIf
  If xter >= 400
    Xter=0
  EndIf
 
  vitesse = 2
  Xter+Vitesse/2
  XHer+Vitesse
 
  FlipBuffers()
ForEver

Else
  Debug "ça chie" : End
 
EndIf

Re: Pour YOGI

Publié : sam. 22/oct./2016 17:07
par yogi
yes merci monsieur Ar-S :)
je vais potasser tout cela je vais petet faire un seul screen
bref passion meci encore à toi

yogi

Re: Pour YOGI

Publié : sam. 22/oct./2016 17:39
par yogi
ok j'ai compris la logique de la chose bref oui ça a l'air simple mais la syntaxe de la chose m'échappe encore un peu.
je vais prendre mon temps pour ^^ comprendre tout cela
très bonne soirée à toi Ar-S et à tous

Re: Pour YOGI

Publié : dim. 23/oct./2016 14:30
par Marc56
Tu as du mal à démarrer car tu commence sur deux "sujets" en même temps:
  • La gestion des "variables" de type image
  • La manipulation des images et interaction entre-elles (sprites)
Commence d'abord par comprendre l’utilisation de:
  • La réservation d'une "zone" mémoire pour l'image: (CreateImage)
  • Le chargement de cette "zone" (LoadImage) ou le dessin dynamique (StartDrawing)
  • La découpe (GrabImage), copie etc
  • La sauvegarde (SaveImage)
  • La libération de la mémoire (FreeImage)
Une fois qu tu auras compris ces principes, commence les Sprites.

Astuce: Active le visualiseur de bibliothèque pour voir les images dès qu'elles sont créées en ram
En début de code, ajoutes:

Code : Tout sélectionner

ShowLibraryViewer()
:wink:

Re: Pour YOGI

Publié : dim. 23/oct./2016 16:16
par yogi
bonsoir Marc56

yes je vais regarder tout cela. je m'y remets demain après midi et consulter la doc aussi

merci à toi