L'alphabet

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

L'alphabet

Message par Micoute »

Bonjour à tous,

Mes premiers petits-enfants ont maintenant l'âge de rentrer au C.P et je souhaiterais leur apprendre l'alphabet, c'est pourquoi j'ai commencé à écrire ce programme.

Pour afficher tous les sprites, il n'y a pas de problème, mais comme il y a problème, je vais vous expliquer lequel. Quand on choisi un niveau un certain nombre de sprites ne doivent pas s'afficher à leurs emplacements finaux, mais dans la zone de dépôt.

Première question : peut-on effacer un sprite ? Je ne crois pas, mais comment faire pour que certains sprites ne s'affichent pas ?
Deuxième question : peut-on régler ça avec une procédure principale ou dois-je créer une procédure par niveau.

Je vous remercie de votre aide bienveillante

Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik
Imageimagik

Code : Tout sélectionner

;L'ALPHABET

;Niveau 1 : on enlève 4 lettres
;Niveau 2 : on enlève 8 lettres
;Niveau 3 : on enlève 14 lettres
;Niveau 4 : on enlève 24 lettres

Enumeration
  #Fenetre_principale
EndEnumeration

Enumeration
  #Police
  #Police2
EndEnumeration

Structure Lettres
  Sprite.i ;Id
  X.i      ;Position horizontale
  Y.i      ;Position verticale
  X2.i     ;Position horizontale d'attente
  Y2.i     ;Position verticale d'attente
EndStructure

Global NewList Lettre.Lettres(), NewList LettreBis.Lettres()
Global Evenement, Fond, CoulFnd, ZoneRassemblage, Mouse, mousePress, Valider, Niveau.b, N1, N2, N3, N4, Quitter, Compteur, NiveauComplet

UsePNGImageDecoder()

InitSprite()
InitKeyboard()
InitMouse()
InitSound()

LoadFont(#Police, "Alien Encounters", 56)

Enumeration Sons
  #Son_1
  #Son_2
  #Son_3
  #Son_4
  #Son_Niveau
EndEnumeration


;Chargement des sons
CatchSound(#Son_Niveau, ?Niveau)
CatchSound(#Son_1, ?Niv1)
CatchSound(#Son_2, ?Niv2)
CatchSound(#Son_3, ?Niv3)
CatchSound(#Son_4, ?Niv4)

Procedure Dire_le_niveau(Niveau)
  If Niveau
    Select Niveau
      Case 1
        PlaySound(#Son_Niveau)
        Delay(1000)
        PlaySound(#Son_1)
      Case 2
        PlaySound(#Son_Niveau)
        Delay(1000)
        PlaySound(#Son_2)
      Case 3
        PlaySound(#Son_Niveau)
        Delay(1000)
        PlaySound(#Son_3)
      Case 4
        PlaySound(#Son_Niveau)
        Delay(1000)
        PlaySound(#Son_4)
    EndSelect
  EndIf  
EndProcedure  

Procedure InitialiseAlphabet()
  ;- Création des différentes lettres
  With Lettre()
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?A) :\X =   40 :\Y = 130 :\X2 =   40 :\Y2 = 130
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?B) :\X =  200 :\Y = 130 :\X2 =   40 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?C) :\X =  360 :\Y = 130 :\X2 = 1160 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?D) :\X =  520 :\Y = 130 :\X2 =  840 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?E) :\X =  680 :\Y = 130 :\X2 =  200 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?F) :\X =  840 :\Y = 130 :\X2 = 1480 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?G) :\X = 1000 :\Y = 130 :\X2 = 1320 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?H) :\X = 1160 :\Y = 130 :\X2 = 1640 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?I) :\X = 1320 :\Y = 130 :\X2 =  200 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?J) :\X =   40 :\Y = 290 :\X2 =  360 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?K) :\X =  200 :\Y = 290 :\X2 = 1800 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?L) :\X =  360 :\Y = 290 :\X2 =  680 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?M) :\X =  520 :\Y = 290 :\X2 =  520 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?N) :\X =  680 :\Y = 290 :\X2 =  520 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?O) :\X =  840 :\Y = 290 :\X2 = 1160 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?P) :\X = 1000 :\Y = 290 :\X2 = 1640 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?Q) :\X = 1160 :\Y = 290 :\X2 =  360 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?R) :\X = 1320 :\Y = 290 :\X2 =  680 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?S) :\X =   40 :\Y = 450 :\X2 =   40 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?T) :\X =  200 :\Y = 450 :\X2 = 1480 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?U) :\X =  360 :\Y = 450 :\X2 = 1000 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?V) :\X =  520 :\Y = 450 :\X2 =  840 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?W) :\X =  680 :\Y = 450 :\X2 = 1000 :\Y2 = 780
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?X) :\X =  840 :\Y = 450 :\X2 = 1320 :\Y2 = 630
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?Y) :\X = 1000 :\Y = 450 :\X2 = 1000 :\Y2 = 450
    AddElement(Lettre())
    \Sprite = CatchSprite(#PB_Any, ?Z) :\X = 1160 :\Y = 450 :\X2 = 1800 :\Y2 = 780
  EndWith
  
  CopyList(Lettre(), LettreBis())
  
  ForEach Lettre()
    With Lettre()
      ZoomSprite(\Sprite, 150, 140)
    EndWith
  Next
EndProcedure

Procedure AfficherLettres(Niveau)
  For i = 0 To 25
    With Lettre()
      Select Niveau
        Case 1
          Select i
            Case 0 To 25
              SelectElement(Lettre(), 0)
              DisplaySprite(\Sprite, \x, \y)
              i2 = 2
              While i2 <= 8
                SelectElement(Lettre(), i2)
                DisplaySprite(\Sprite, \x, \y)
                i2 + 1
              Wend  
              i3 = 10
              While i3 <= 13
                SelectElement(Lettre(), i3)
                DisplaySprite(\Sprite, \x, \y)
                i3 + 1
              Wend  
              SelectElement(Lettre(), 15)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 16)
              DisplaySprite(\Sprite, \x, \y)
              i4 = 18
              While i4 <= 25
                SelectElement(Lettre(), i4)
                DisplaySprite(\Sprite, \x, \y)
                i4 + 1
              Wend  
          EndSelect
        Case 2
          Select i
            Case 0 To 25  
              SelectElement(Lettre(), 0)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 2)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 3)
              DisplaySprite(\Sprite, \x, \y)
              i2 = 5
              While i2 <= 8
                SelectElement(Lettre(), i2)
                DisplaySprite(\Sprite, \x, \y)
                i2 + 1
              Wend
              SelectElement(Lettre(), 10)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 12)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 15)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 16)
              DisplaySprite(\Sprite, \x, \y)
              i3 = 18
              While i3 <= 22
                SelectElement(Lettre(), i3)
                DisplaySprite(\Sprite, \x, \y)
                i3 + 1
              Wend
              SelectElement(Lettre(), 24)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 25)
              DisplaySprite(\Sprite, \x, \y)
          EndSelect
        Case 3
          Select i
            Case 0 To 25  
              SelectElement(Lettre(), 0)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 2)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 3)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 5)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 6)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 7)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 10)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 15)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 19)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 21)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 24)
              DisplaySprite(\Sprite, \x, \y)
              SelectElement(Lettre(), 25)
              DisplaySprite(\Sprite, \x, \y)
          EndSelect
        Case 4
          Select i
            Case 0,24
              SelectElement(Lettre(), i)
              DisplaySprite(\Sprite, \x, \y)
          EndSelect
      EndSelect    
    EndWith  
  Next i
EndProcedure

Procedure Jeu(Niveau)
  Select Niveau
    Case 1
      Compteur = 4
      With Lettre()
        SelectElement(Lettre(), 1)
        DisplaySprite(\Sprite,  \X2,  \Y2)
        SelectElement(Lettre(), 9)
        DisplaySprite(\Sprite,  \X2,  \Y2)
        SelectElement(Lettre(), 14)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 17)
        DisplaySprite(\Sprite, \X2, \Y2)
      EndWith  
    Case 2
      Compteur = 8
      With Lettre()
        SelectElement(Lettre(), 1)
        DisplaySprite(\Sprite,  \X2,  \Y2)
        SelectElement(Lettre(), 4)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 9)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 11)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 13)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 14)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 17)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 23)
        DisplaySprite(\Sprite, \X2, \Y2)
      EndWith  
    Case 3
      Compteur = 14
      With Lettre()
        SelectElement(Lettre(), 1)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 4)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 8)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 9)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 11)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 12)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 13)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 14)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 16)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 17)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 18)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 20)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 22)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 23)
        DisplaySprite(\Sprite, \X2, \Y2)
      EndWith  
    Case 4
      Compteur = 24
      With Lettre()
        SelectElement(Lettre(), 1)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 2)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 3)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 4)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 5)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 6)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 7)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 8)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 9)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 10)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 11)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 12)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 13)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 14)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 15)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 16)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 17)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 18)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 19)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 20)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 21)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 22)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 23)
        DisplaySprite(\Sprite, \X2, \Y2)
        SelectElement(Lettre(), 25)
        DisplaySprite(\Sprite, \X2, \Y2)
      EndWith  
      
  EndSelect
EndProcedure

Procedure Programme_principal()
  If OpenWindow(#Fenetre_principale, 0, 0, 1990, 1000, "L'alphabet © Micoute - 25 juillet 2017", #PB_Window_TitleBar|#PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, WindowWidth(#Fenetre_principale), WindowHeight(#Fenetre_principale))
    
    ;- Création du tapis de fond
    Fond = CreateSprite(#PB_Any, WindowWidth(#Fenetre_principale), WindowHeight(#Fenetre_principale))
    StartDrawing(SpriteOutput(Fond))
    CoulFnd = $488958
    Box(0, 0, WindowWidth(#Fenetre_principale), WindowHeight(#Fenetre_principale), CoulFnd)
    DrawingFont(FontID(#Police))
    DrawText((WindowWidth(#Fenetre_principale)- TextWidth("L'ALPHABET"))/2, 40, "L'ALPHABET", $4BFCFF, CoulFnd)
    DrawText((WindowWidth(#Fenetre_principale)- TextWidth("Choisis un niveau"))/2, (WindowHeight(#Fenetre_principale)-TextHeight(" "))/2, "Choisis un niveau", $4BFCFF, CoulFnd)
    StopDrawing()
    
    ;- Création de la zone de jeu
    ZoneRassemblage = CreateSprite(#PB_Any, 1910, 770)
    StartDrawing(SpriteOutput(ZoneRassemblage))
    Box(0, 0, 1910, 770, CoulFnd)
    StopDrawing()
    
    ;- Création de la souris
    LoadFont(#Police2 ,"FontAwesome", 30)
    
    Mouse = CreateSprite(#PB_Any, 24, 40)
    
    StartDrawing(SpriteOutput(Mouse))
    Box(0, 0, 24, 40, #White)
    DrawingFont(FontID(#Police2))
    DrawText(0, 0, Chr($F245), #Black, #White)
    StopDrawing()
    
    TransparentSpriteColor(Mouse, #White)
    
    ;- Création du bouton niveau 1
    N1 = CreateSprite(#PB_Any, 130, 50)
    StartDrawing(SpriteOutput(N1))
    Box(0, 0, 130, 50, $00FF40)
    DrawingFont(FontID(#Police2))
    Texte$ = "Niveau 1"
    DrawText((130-TextWidth(Texte$))/2, 3, Texte$, #Black, $00FF40)
    StopDrawing()
    
    ;- Création du bouton niveau 2
    N2 = CreateSprite(#PB_Any, 130, 50)
    StartDrawing(SpriteOutput(N2))
    Box(0, 0, 130, 50, $00D5FF)
    DrawingFont(FontID(#Police2))
    Texte$ = "Niveau 2"
    DrawText((130-TextWidth(Texte$))/2, 3, Texte$, #Black, $00D5FF)
    StopDrawing()
    
    ;- Création du bouton niveau 3
    N3 = CreateSprite(#PB_Any, 130, 50)
    StartDrawing(SpriteOutput(N3))
    Box(0, 0, 130, 50, $006DFF)
    DrawingFont(FontID(#Police2))
    Texte$ = "Niveau 3"
    DrawText((130-TextWidth(Texte$))/2, 3, Texte$, #Black, $006DFF)
    StopDrawing()
    
    ;- Création du bouton niveau 4
    N4 = CreateSprite(#PB_Any, 130, 50)
    StartDrawing(SpriteOutput(N4))
    Box(0, 0, 130, 50, $FF)
    DrawingFont(FontID(#Police2))
    Texte$ = "Niveau 4"
    DrawText((130-TextWidth(Texte$))/2, 3, Texte$, #Black, $FF)
    StopDrawing()
    
    ;- Création du bouton quitter
    Quitter = CreateSprite(#PB_Any, 260, 50)
    StartDrawing(SpriteOutput(Quitter))
    Box(0, 0, 260, 50, CoulFnd)
    DrawingFont(FontID(#Police2))
    Texte$ = "Echap pour quitter"
    DrawText((260-TextWidth(Texte$))/2, 3, Texte$, #Black, CoulFnd)
    StopDrawing()
    
    InitialiseAlphabet()
    
  EndIf
EndProcedure

Programme_principal()

;- Boucle
Repeat
  Repeat : Until WindowEvent() = 0
  ;{ Affichage des sprites
  DisplaySprite(Fond, 0, 0)
  
  ;Affichage de la zone de jeu
  If Niveau
    DisplaySprite(ZoneRassemblage, 40, 130)
  EndIf
  
  ;Affichage du bouton niveau 1
  DisplaySprite(N1, 50, 940)
  
  ;Affichage du bouton niveau 2
  DisplaySprite(N2, 250, 940)
  
  ;Affichage du bouton niveau 3
  DisplaySprite(N3, 450, 940)
  
  ;Affichage du bouton niveau 4
  DisplaySprite(N4, 650, 940)
  
  ;Affichage du bouton quitter
  DisplaySprite(Quitter, 1680, 940)
  
  ;Affichage de la souris en dernier
  If IsSprite(Mouse)
    DisplayTransparentSprite(Mouse, MouseX(), MouseY())
  EndIf  
  ;}
  
  ;Evénements clavier
  If ExamineKeyboard()
  EndIf
  
  ;Evénements souris
  If ExamineMouse()
    If MouseButton(#PB_MouseButton_Left)
      mousePress = #True
    Else
      mousePress = #False
    EndIf
    
    If mousePress = #True
      If Bool(MouseY() >= 940 And MouseY() <= 990)
        
        ;Test de collision entre la souris et le sélecteur de niveau 1
        If Bool(MouseX() >= 50 And MouseX() <= 180)
          Niveau = 1
          Dire_le_niveau(Niveau)
          CopyList(LettreBis(), Lettre())
          
          
          ;Test de collision entre la souris et le sélecteur de niveau 2
        ElseIf Bool(MouseX() >= 250 And MouseX() <= 380)
          Niveau = 2
          Dire_le_niveau(Niveau)
          CopyList(LettreBis(), Lettre())
          
          
          ;Test de collision entre la souris et le sélecteur de niveau 3
        ElseIf Bool(MouseX() >= 450 And MouseX() <= 580)
          Niveau = 3
          Dire_le_niveau(Niveau)
          CopyList(LettreBis(), Lettre())
          
          
          ;Test de collision entre la souris et le sélecteur de niveau 4
        ElseIf Bool(MouseX() >= 650 And MouseX() <= 780)
          Niveau = 4
          Dire_le_niveau(Niveau)
          CopyList(LettreBis(), Lettre())
        EndIf
        
      EndIf ;MouseY() >= 940 And MouseY() <= 990
      
    EndIf ;mousePress = #True
    
    ;Décrémenter le compteur
    With Lettre()
      If SpriteCollision(\Sprite, \X2, \Y2, \Sprite, \X, \Y)
        Compteur - 1
      EndIf
    EndWith  
    
  EndIf ;ExamineMouse()
  
  ;- NIVEAU
  Select Niveau
    Case 1 To 4
      AfficherLettres(Niveau)
      Jeu(Niveau)
  DisplayTransparentSprite(Mouse, MouseX(), MouseY())
  EndSelect    
  
  ;Test collision entre la souris et les lettres
  If mousePress = #True
    ForEach Lettre()
      With Lettre()
        If SpriteCollision(Mouse, MouseX(), MouseY(), \Sprite, \x2, \y2)
          \x2 = MouseX() - 75
          \y2 = MouseY() - 70
          
          If Compteur = 0
            NiveauComplet = #True
          Else
            NiveauComplet = #False
          EndIf  
          
          Break
          
        EndIf   
      EndWith
    Next
  EndIf
  
  StartDrawing(SpriteOutput(Fond))
  DrawingFont(FontID(#Police2))
  If Niveau
    DrawText(1830, 50, "Niveau " + Niveau, $00FFFF, CoulFnd)
  EndIf
  
  If Compteur > -1 And Niveau
    DrawText(1630, 50, Space(15), $00FFFF, CoulFnd)
    DrawText(1630, 50, "Encore " + Compteur, $00FFFF, CoulFnd)
  EndIf
  StopDrawing()
  
  FlipBuffers()
  
Until KeyboardReleased(#PB_Key_Escape)

DataSection
  A:
  IncludeBinary #PB_Compiler_FilePath + "\Images\A.png"
  B:
  IncludeBinary #PB_Compiler_FilePath + "\Images\B.png"
  C:
  IncludeBinary #PB_Compiler_FilePath + "\Images\C.png"
  D:
  IncludeBinary #PB_Compiler_FilePath + "\Images\D.png"
  E:
  IncludeBinary #PB_Compiler_FilePath + "\Images\E.png"
  F:  
  IncludeBinary #PB_Compiler_FilePath + "\Images\F.png"
  G:
  IncludeBinary #PB_Compiler_FilePath + "\Images\G.png"
  H:
  IncludeBinary #PB_Compiler_FilePath + "\Images\H.png"
  I:
  IncludeBinary #PB_Compiler_FilePath + "\Images\I.png"
  J:
  IncludeBinary #PB_Compiler_FilePath + "\Images\J.png"
  K:
  IncludeBinary #PB_Compiler_FilePath + "\Images\K.png"
  L:
  IncludeBinary #PB_Compiler_FilePath + "\Images\L.png"
  M:
  IncludeBinary #PB_Compiler_FilePath + "\Images\M.png"
  N:
  IncludeBinary #PB_Compiler_FilePath + "\Images\N.png"
  O:
  IncludeBinary #PB_Compiler_FilePath + "\Images\O.png"
  P:
  IncludeBinary #PB_Compiler_FilePath + "\Images\P.png"
  Q:
  IncludeBinary #PB_Compiler_FilePath + "\Images\Q.png"
  R:
  IncludeBinary #PB_Compiler_FilePath + "\Images\R.png"
  S:
  IncludeBinary #PB_Compiler_FilePath + "\Images\S.png"
  T:
  IncludeBinary #PB_Compiler_FilePath + "\Images\T.png"
  U:
  IncludeBinary #PB_Compiler_FilePath + "\Images\U.png"
  V:
  IncludeBinary #PB_Compiler_FilePath + "\Images\V.png"
  W:
  IncludeBinary #PB_Compiler_FilePath + "\Images\W.png"
  X:
  IncludeBinary #PB_Compiler_FilePath + "\Images\X.png"
  Y:
  IncludeBinary #PB_Compiler_FilePath + "\Images\Y.png"
  Z:
  IncludeBinary #PB_Compiler_FilePath + "\Images\Z.png"
  Niveau:
  IncludeBinary #PB_Compiler_FilePath + "\Sons\niveau.wav"
  Niv1:
  IncludeBinary #PB_Compiler_FilePath + "\Sons\01.wav"
  Niv2:
  IncludeBinary #PB_Compiler_FilePath + "\Sons\02.wav"
  Niv3:
  IncludeBinary #PB_Compiler_FilePath + "\Sons\03.wav"
  Niv4:
  IncludeBinary #PB_Compiler_FilePath + "\Sons\04.wav"
EndDataSection  
Dernière modification par Micoute le ven. 28/juil./2017 11:14, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: L'alphabet

Message par Ar-S »

Je n'ai pas testé et je n'ai pas le temps de le faire,
mais pour réponde à ta question.
peut-on effacer un sprite ? Je ne crois pas, mais comment faire pour que certains sprites ne s'affichent pas ?
C'est vraiment un exemple hein... Mais libre à toi de te créer une ListeChainee SPRITE_Level2 avec l'ID des sprites à afficher..

Code : Tout sélectionner

; exemple de procedure
Procedure ShowSprite2()
ForEach( SPRITE_Level2() )
DisplaySprite(SPRITE_Level2(), PositionX, PositionY)
; PositionX+15
Next

EndProcedure
Dans ta boucle d'affichage tu ajoutes des SELECT / CASE / ENDSELECT qui réagiront à des Flags (drapeaux).

Code : Tout sélectionner

Select LEVEL
Case 2 ;level2
ShowSprite2()
EndSelect
Bonne chance
~~~~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
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: L'alphabet

Message par microdevweb »

Bonjour Micoute,

Voici comment moi je ferais

Code : Tout sélectionner

; dans mon exemple je ne ferais pas toutes les lettres :)
Global Dim text.s(8)
text(0)="A"
text(1)="B"
text(2)="C"
text(3)="D"
text(4)="E"
text(5)="F"
text(6)="G"
text(7)="H"
Global Dim mySprite(8)
Structure sAlphabet
  value.s
  x.l
  y.l
  IdSprite.l
EndStructure
Global Dim myAlphabet.sAlphabet(8)
Global Bloqued.b=#False
; police de caractère
LoadFont(0,"ARIAL",24,#PB_Font_HighQuality)
Procedure ChangeAlphabet()
  ; je vais changer la valeur aléatoirement des lettres
  Protected NotExists.b
  ; Replace les valeur à vide
  For i=0 To 7
    myAlphabet(i)\value=""
  Next
  For i=0 To 7
    Repeat
      NotExists=#True
      v=Random(7,0)
      ; ici je vérifie que la lettre n'est pas déjà attribuée
      For r=0 To i
        If myAlphabet(r)\value=text(v)
          NotExists=#False ; Lettre déjà attibuée
          Break            ; pas besoins d'aller plus loin
        EndIf
      Next
    Until NotExists
    ; J'affecte maintenant la valeur et le srpite
    myAlphabet(i)\value=text(v)
    myAlphabet(i)\IdSprite=mySprite(v)
  Next
EndProcedure
MessageRequester("Info","Pressez ESPACE pour changer l'alphabet")

If InitSprite()
  InitKeyboard()
  If OpenWindow(0,0,0,800,240,"Teste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    If OpenWindowedScreen(WindowID(0),0,0,800,240)
      ; j'initialise la place des lettres
      For x=1 To 4
        yp=0
        For y=1 To 2
          myAlphabet(i)\x=xp
          myAlphabet(i)\y=yp
          yp+120
          i+1
        Next
        xp+200
      Next
      ; Je crée les sprites
      For i=0 To 7
        mySprite(i)=CreateSprite(#PB_Any,200,120)
        StartDrawing(SpriteOutput(mySprite(i)))
        DrawingFont(FontID(0))
        xt=100-(TextWidth(text(i))/2)
        yt=60-(TextHeight(text(i))/2)
        DrawingMode(#PB_2DDrawing_Default)
        Box(0,0,200,120,$D4FF7F)
        DrawingMode(#PB_2DDrawing_Transparent)
        DrawText(xt,yt,text(i),$000000)
        StopDrawing()
      Next
            
      ; Je change l'aphabet
      ChangeAlphabet()

      ; Boucle du jeu
      Repeat
        Repeat
          ClearScreen(0)
          myEvent=WindowEvent()
          If myEvent=#PB_Event_CloseWindow
            CloseWindow(0)
            End
          EndIf
        Until myEvent=0
        ExamineKeyboard()
        If KeyboardPushed(#PB_Key_Space) And Not Bloqued
          Bloqued=#True
          ChangeAlphabet()
        EndIf
        If KeyboardReleased(#PB_Key_All)
          Bloqued=#False
        EndIf
        ; Affiche le jeux
        For i=0 To 7
          With myAlphabet(i)
            DisplaySprite(\IdSprite,\x,\y)
          EndWith
        Next
        FlipBuffers()
      ForEver 
    EndIf
  EndIf
EndIf
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: L'alphabet

Message par Micoute »

Merci à tous les deux, votre aide m'a été très précieuse.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: L'alphabet

Message par Micoute »

J'ai remis mon code à jour, mais je n'arrive pas à déterminer quand l'alphabet est complet.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre