Pur débutant en PURE BASIC.... aide images/sprites/souris

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Pur débutant en PURE BASIC.... aide images/sprites/souris

Message par drfloyd »

Hello ! Je suis un fan de basic depuis toujours (Locomotive basic, GFA basic dans les années 80) et j'ai programmé quelques jeux d'arcade et RPG en Dark Basic, QB64 et surtout Blitz 3D.

Ma derniere realisation :
http://gamopat.over-blog.com/2018/12/co ... -v.10.html

Blitz est maintenant hélas abandonné et je me tourne (avec qq difficultés) vers ce PURE Basic qui semble le basic le plus à la mode, et très puissant, et avec surtout une grosse communauté fr en anglaise.

Avec difficulté, oui, car la syntaxe est quand même un peu + complexe comparé au Blitz (il faut le reconnaitre). Mais ca va le faire. Je compte sur vous pour répondre à quelques questions.

J'essaye de commencer par un petit jeu test.
Premieres interrogations :

1.Il n'est pas possible de faire des rotations d'images avec drawimage ? Il faut passer par les sprites (et rotatesprite) ?

2.Il n'y a pas de fonction "mirroir" vertical ou horizontal pour les sprites ni pour les images ?

3. je veux créer un RPG avec 500 tiles environ.... Est ce que utiliser 500 sprites est un probreme ? Il il vaut mieux utiliser 500 images ?

Merci à vous !!!!!
Dernière modification par drfloyd le jeu. 26/sept./2019 17:08, modifié 1 fois.
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par majikeyric »

Trop marrant le gars qui crache sur PureBasic sur son forum et qui vient demander de l'aide ici :roll:

https://www.gamopat-forum.com/t76370-je ... re#1971713

https://www.gamopat-forum.com/t67074p90 ... le#3011597
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par case »

cracher sur le langage est un bien gros mot... de toutes façons il n'y a que les c... qui ne changent pas d'avis , bienvenu a lui si il a envie de découvrir purebasic... :mrgreen:

étant un peu rouillé avec tout ca je te donne quelques réponses

1.Il n'est pas possible de faire des rotations d'images avec drawimage ? Il faut passer par les sprites (et rotatesprite) ?

oui c'est exactement cela.

2.Il n'y a pas de fonction "mirroir" vertical ou horizontal pour les sprites ni pour les images ?

non mais a voir si il y a moyen avec TransformSprite()

3. je veux créer un RPG avec 500 tiles environ.... Est ce que utiliser 500 sprites est un probreme ? Il il vaut mieux utiliser 500 images ?

non je ne crois pas que cela soit un problème sauf peut être avec des machines très limitées.
ImageImage
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par case »

en fouinant un peu j'ai trouvé ce topic ou un code permet de faire du flip de sprite

https://www.purebasic.fr/french/viewtop ... =4&t=17479
ImageImage
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par drfloyd »

je confirme mes propos :

PureBasic est éloigné du basic d'origine des années 60... très éloigné de la simplicité légendaire de BLITZ... avec une syntaxe complexe

C'est un fait

Mais je tente quand meme de m'y mettre.... pour l'instant par curiosité
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par drfloyd »

case a écrit :cracher sur le langage est un bien gros mot... de toutes façons il n'y a que les c... qui ne changent pas d'avis , bienvenu a lui si il a envie de découvrir purebasic... :mrgreen:

étant un peu rouillé avec tout ca je te donne quelques réponses

1.Il n'est pas possible de faire des rotations d'images avec drawimage ? Il faut passer par les sprites (et rotatesprite) ?

oui c'est exactement cela.

2.Il n'y a pas de fonction "mirroir" vertical ou horizontal pour les sprites ni pour les images ?

non mais a voir si il y a moyen avec TransformSprite()

3. je veux créer un RPG avec 500 tiles environ.... Est ce que utiliser 500 sprites est un probreme ? Il il vaut mieux utiliser 500 images ?

non je ne crois pas que cela soit un problème sauf peut être avec des machines très limitées.
merci pour ces réponses, sympa
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par drfloyd »

case a écrit :en fouinant un peu j'ai trouvé ce topic ou un code permet de faire du flip de sprite

https://www.purebasic.fr/french/viewtop ... =4&t=17479

merci, donc il n'y a pas de réelle commande pour le flip mirroir des images, super étrange..... Je ferai sans
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par Marc56 »

PureBasic est éloigné du basic d'origine des années 60... très éloigné de la simplicité légendaire de BLITZ... avec une syntaxe complexe

C'est un fait
Non, c'est un a priori dû à une non-lecture de la doc 8)

70 ans après les machines ne sont plus les mêmes, les possibilités non-plus.
PB n'est pas un langage spécialisé jeu, mais un outil multi-fonction (console, graphique, multi-tâche, API, base de données etc). Ce que ne font pas les anciens Basics.


Mais malgré sa "complexité" le codage en un minimum de lignes est possible.

"Hello World" Mode graphique (Windows, Linux, Mac): 1 ligne (oui, c'est l'équivalent de MsgBox())

Code : Tout sélectionner

MessageRequester("Hello", "World")
"Hello World" Mode console: on ajoute simplement une commande d'ouverture de la console système et une commande pour attendre une intervention utilisateur si on a besoin de temps pour lire la sortie.

Code : Tout sélectionner

OpenConsole()

        Print("Hello World")

Input()
:arrow: Maintenant, il faudrait y passer plus de quelques minutes avant de porter un jugement définitif.
Tester un langage, c'est au moins une centaine d'heures et la lecture de la doc. Au moins une première fois en diagonale (PDF 2135 pages).
https://www.purebasic.com/french/support.php
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par case »

pour avoir utilisé les deux (depuis blitz 2D) et de manière très assidue , la syntaxe du purebasic n'est pas plus complexe que celle du blitz, elle est différente mais pas vraiment plus complexe.
mais il est vrais que de passer de blitz a purebasic ça demande de remettre a plat certaines choses, tout comme l'inverse.
ImageImage
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par drfloyd »

Merci pour vos com'

Par contre je n'ai pas pigé comment afficher une image avec une couleur transparente (le noir 0,0,0 par exemple)

La doc est un peu confuse sur ce point. Est ce que quelqu'un peut l'expliquer ?


pour une image PNG que j'ai chargé en mémoire

drawimage (imageID(1),100,100)

je veux que le contour noir soit transparent pour laisser apparaitre le décor...

j'ai tenté :
drawingmode (PB_2DDrawing_Default) et d'autres sans succès
et comment definir que c'est la couleur 0,0,0 qui est transparente ?

merci à vous !
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par Ar-S »

Salut.

Tu charges ton sprite normalement.
Ensuite dans la boucle d'affichage tu utilises :

Code : Tout sélectionner

TransparentSpriteColor(#TONSPRITE,$TACOULEURDECONTOUR) ; attention couleur GBR ET PAS RGB
DisplayTransparentSprite(#TONSPRITE,x ,Y )
Pour cela il faut que ton sprite soit BIEN précis niveau séparation des couleurs.
Je suppose que tu veux utiliser des spritesheets existant.

Exemple vite fait.
Mon sprite est un carré noir avec un packman dedans. je l'ai fait en png 16 couleurs
Image

à l'affichage sur fond (rouge pour l'exemple) le noir n'est pas visible.

Code : Tout sélectionner

InitSprite() : InitKeyboard()
UsePNGImageDecoder()

;fenêtre
Lfenetre=GetSystemMetrics_(#SM_CXSCREEN)  ; recup la resolution de l'ecran en cours
Hfenetre=GetSystemMetrics_(#SM_CYSCREEN)
If Lfenetre>800 And Hfenetre>400
  Lfenetre=800 : Hfenetre=400
EndIf
Lscreen=Lfenetre : Hscreen=Hfenetre-20
centre=Lscreen/2-LPalette/2 ; on trouve le centre de la fenetre

OpenWindow(0, #PB_Ignore, #PB_Ignore, Lfenetre, Hfenetre, "Window", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(0, 0, Hfenetre-20, 100, 20, "Quitter")
OpenWindowedScreen(WindowID(0), 0, 0, Lscreen, Hscreen, 0, 0, 0)


If LoadSprite(0,"D:\OneDrive\Documents\PB\_Ressources\spritepac.png",0) ; CHARGE TON SPRITE
Else
  Debug "ça chie au chargement du sprite"
EndIf


;{- Event loop
Repeat
  
  Event= WindowEvent ()
  Delay (2)
  ExamineKeyboard ()
  
   
  If KeyboardPushed(#PB_Key_Escape)
    Break
  EndIf
  
  Repeat
    event = WindowEvent()
    
    Select event
      Case #PB_Event_Gadget
        If EventGadget() = 0
          End
        EndIf
        
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until event = 0
  
  ;---AFFICHAGE---- ( a la fin , c'est plus clair !!! )
  
  TransparentSpriteColor(0,$0) ; La couleur $0 pour le noir
  
  DisplayTransparentSprite(0,150,150 )
  
  FlipBuffers()
  ClearScreen(#Red) ; fond d’écran en rouge
  
  
  
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
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par drfloyd »

les sprites j'ai réussi sans probleme... c'est avec les images que je n'ai pas reussi (drawimage)

ou tu vas me répondre qu'il faut absolument tout passer en sprite ? meme le decor de fond ?
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par case »

regarde du coté de DrawAlphaImage()
il faut que l'image aie un canal alpha bien sur (png avec transparence par exemple)
ImageImage
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par Ar-S »

Exactement.

Avant ton displaysprite tu affiches ton image png transparente.

Code : Tout sélectionner

  StartDrawing(ScreenOutput())
  DrawAlphaImage (ImageID(1),0,0,255)
  StopDrawing()
Tu n'auras pas l'équivalent d'un TransparentSpriteColor pour une image.

Avec une image détouré à l'arrache et le meme code ça donne :
Image
~~~~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
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Pur débutant en PURE BASIC.... aide images/sprites

Message par case »

tu peux aussi dessiner sur un sprite au lieu de l’écran courant.
puis afficher le sprite a comme fond d’écran.
ce sera peut être plus rapide.

tu peux aussi évidement utiliser uniquement des sprites.
ImageImage
Répondre