Page 1 sur 1

[Résolu] Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 12:40
par Micoute
Bonjour à tous,

toujours sur mon programme sur l'union européenne pour mes petits enfants et leurs parents, je souhaite que quand on sélectionne une rubrique, ça affiche un drapeau et une carte de l'état choisi.

Malheureusement, je n'ai pas toujours tous les fichiers correspondants que je charge en sprite et dans chaque choix, je charge les fameux sprites pour mon programme.

J'utilise IsSprite(#Drapeau) ou #Carte, mais ça me dit que le sprite est bien initialisé, mais pas s'il est chargé.

J'aimerais que quelqu'un me renseigne, pour n'avoir qu'une procédure pour afficher les 2 sprites en question et je l'en remercie grandement.

Re: Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 13:46
par Ar-S
IsSprite sert bien à voir sir le sprite est initialisé, c'est à dire créé. En gros tu alloues un espace "sprite" avec createsprite et tu vérifies que tout se passe bien via issprite..
(Dans ses conditions il te faut évidement le remplir avec du dessin via startdrawing(spriteoutput()) etc).

Si tu utilises plutôt loadsprite ou catchsprite, il te faut aussi vérifier si tout se passe bien à ce moment.
Il faut donc ajouter un IF à ses fonctions si tu veux vérifier que ton sprite est ok

Code : Tout sélectionner

If LoadSprite(#carte,"imagecarte.bmp",#tonflag) <> 0
endif

Code : Tout sélectionner

If InitSprite() = 0
    MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
    End
  EndIf
  
  If OpenWindow(0, 0, 0, 220, 160, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ButtonGadget(0, 170, 135, 45, 20, "Quitter")

    If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
      StickyWindow(0,1)
      
      ;/// Via CreateSprite
      
      CreateSprite(0, 20, 20)
      
      If IsSprite(0)
        Debug "Sprite 0 initialisé ! (mais pourtant vide)"
      EndIf  
      
      If StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20, RGB(255, 0, 155))
        Box(5, 5, 10, 10, RGB(155, 0, 255))
        StopDrawing()
      EndIf
      
      Debug ""
      Debug "Maintenant le sprite est rempli mais issprite n'est pas la pour vérifier ça"
      
      ;/// Via LoadSprite / Catchsprite
      
      MonSprite = LoadSprite(1,#PB_Compiler_Home +"Examples/Sources/Data/PureBasicLogo.bmp")  
      
      If MonSprite <> 0
        Debug ""
        Debug "-----------------"
        Debug "/// Via LoadSprite / Catchsprite"
        Debug "LA JE SAIS que le sprite 1 MonSprite est chargé grace au IF"
      EndIf
      
      
      
    Else
      MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
      End
    EndIf
    
    
    Repeat
    ; Il est très important de traiter tous les évènements restants dans la file d'attente à chaque tour
    ;
    Repeat
      Event = WindowEvent()
      
      Select Event 
        Case #PB_Event_Gadget
          If EventGadget() = 0
            End
          EndIf
        
        Case #PB_Event_CloseWindow
          End 
      EndSelect
    Until Event = 0
  
    FlipBuffers() 
    ClearScreen(RGB(0, 0, 0))
    DisplaySprite(0, 0, 0)
    
    DisplaySprite(1, 30, 30)
    
    Delay(1)
  ForEver
    
  EndIf


Re: [Résolu] Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 15:05
par Micoute
Merci Ar-s, c'est vraiment magique.

J'aimerais aussi, pendant que j'y suis, savoir comme effacer le tampon du clavier.

je m'explique, je fais un menu sur la fenêtre graphique avec DrawText() et je fais une boucle

Code : Tout sélectionner

  ; attendre qu'une touche soit pressée
  Repeat 
    ExamineKeyboard()
    If KeyboardReleased(#PB_Key_Space) Or
       KeyboardReleased(#PB_Key_Escape)
      
      Resultat = 1
    EndIf  
  Until Resultat = 1
Comment faire pour que la clavier soit vide ?

Re: [Résolu] Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 16:35
par Ar-S
Pas compris, tu veux effacer ton menu lorsque l'utilisateur presse la touche space ou esc ?
Tu veux dire quoi par le tampon du clavier?

Re: [Résolu] Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 17:31
par Micoute
Non, ce que je veux, c'est que le caractère entré pour valider un choix, ici ESPACE, ne sois pas pris en compte dans la réponse à la question qui va être posée, car il faussera la réponse.

Exemple:
Quelle est la capitale de la région MIDI-PYRENEES-LANGUEDOC-ROUSSILLON
" Toulouse"
Tu t'es trompé la réponse était "TOULOUSE"

j'ai mis des guillemets pour faire la différence

C'est pour cette raison que je voudrais vider le tampon du clavier avant de répondre à une question.

Merci d'avance.

Re: [Résolu] Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 17:42
par Ar-S
Vu que je ne sais pas comment tu captures ta reponse c'est pas facile de bien t'orienter.

Ton Flag resultat devrait se contenter d'informer sur l'etat de la capture.

J'organiserai ça dans ce genre.

Si clique sur Espace ou echap alors capture = 1
Si capture = 1
Reponse.s = ""
repete capture touche
Reponse.s = capturedetonclavier
juqu'à touche entree pour valider
Alors capture = 0
finsi

Sinon tu peux tout simplement regarder du coté de la commande Trim

Code : Tout sélectionner

Resultat$ = Trim(Reponse$ ," ")

Re: [Résolu] Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 18:22
par Micoute
Merci beaucoup, mais finalement j'ai changé de raccourci, j'ai remplacé #PB_Key_Space par #PB_Key_RightControl, comme ça pas de caractère imprimable dans le tampon.

Re: [Résolu] Comment savoir si un sprite est chargé

Publié : sam. 16/janv./2016 20:02
par Micoute
Ah bon sang, mais c'est bien sûr ! C'est tellement simple que je n'y ai même pas pensé.

Merci Spock.

Re: [Résolu] Comment savoir si un sprite est chargé

Publié : dim. 17/janv./2016 15:16
par case
oui et ucase lcase pour majuscule/ minuscules aussi

car sinon TOULOUSE <> toulouse <> Toulouse

il faut aussi penser aux accents notre langue en étant clafie ^^

Re: [Résolu] Comment savoir si un sprite est chargé

Publié : dim. 17/janv./2016 16:03
par Micoute
Oui bien sûr, mais je fais très attention à la casse des caractères et aussi à l'accentuation, la France n'en n'ayant pas le privilège.