Page 1 sur 1

Graphique console

Publié : mar. 04/août/2009 19:01
par MetalOS
Salut j'aurai voulu savoir si il était possible de faire une interface de ce type avec les commandes interne de PB pour la console.

Image

Si oui comment faire, et si non existe t'il une lib qui le permet ? Merci.

Publié : mer. 05/août/2009 2:55
par Ollivier
Salut MetalOS,

Oui, tu peux faire un affichage de ce type avec les fonctions natives de la binliothèque de la console. T'as juste à régler EnableGraphicalMachin() (je ne sais plus le terme exact: c'est dans la bibliothèque) pour écrire chaque "case" de manière individuelle. Le seul hic que je peux vérifier c'est si tu as les caractères graphiques pour faire le cadre, mais ça me semble superficiel...

Ollivier

Publié : mer. 05/août/2009 3:06
par Ollivier
Après vérif, tu as bien les rudiments de caractères graphiques pour faire un cadre. En revanche, si tu veux un tel affichage, il te faut donc activer la console graphique avec EnableGraphicalConsole(), et dans ce cas, ça n'est disponible que sous Windows et, surtout, il te devient impossible d'avoir les pipes.

Code : Tout sélectionner

OpenConsole()
EnableGraphicalConsole(1)
ConsoleColor(15, 1)
For H = 0 To 15
  For L = 0 To 15
    ConsoleLocate(L, H)
    Print(Chr(H << 4 + L) )
  Next
Next
Input()
CloseConsole()
End

Publié : mer. 05/août/2009 11:28
par Backup
..........

Publié : mer. 05/août/2009 16:31
par MetalOS
Merci Ollivier et Dobro pour vos réponses. Dobro je connaissais déjà ton casse brique en console mais je ne trouvais plus les sources. Merci . :wink:

Publié : ven. 07/août/2009 11:47
par Fortix
Salutation :D

@Dobro ton mini play façon spectrum est trop dure :lol:

en fait j'y pense :? , comment fait on pour afficher le curseur en pavé et coloré et en plus si possible qui clignotte en même temps(pavé=taille max);

pour ma part jsui bloqué sur ce truc qui semble être simple


merci :lol:

Code : Tout sélectionner


Global CAR$

x=10
y=10



If OpenConsole()
    
    EnableGraphicalConsole(1)

    ConsoleColor(9,0)
    ConsoleCursor(0)
    ConsoleLocate(x,y)
    
    CAR$=Chr(219)
    
    Repeat

        fin$=Inkey()
        FIN$=UCase(fin$)
        nb=Asc(FIN$)
        
        
        ;Debug CAR$
        ;Debug RawKey()
        ;Debug fin$
        
        If (nb>=65 And nb<=93) Or (nb>=45 And nb<=57) Or (nb>=35 And nb<=38) Or (nb>=40 And nb<=43) Or (nb>=58 And nb<=63) Or nb=95 Or nb=32 Or nb=13 Or nb=124 Or nb=126 ;Or nb=13 Or (nb>=48 And nb<=57) Or nb=58 Or (nb>=35 And nb<=38) 
            x=x+1
            
            If nb<>13 
                ConsoleLocate(x,y)
                                
                If GetAsyncKeyState_(#VK_LEFT)
                    x=x-1
                EndIf
        
                If GetAsyncKeyState_(#VK_RIGHT)
                    x=x+1
                EndIf
                                
                Print(FIN$+CAR$+" ") 
            EndIf
        EndIf


;         
        If nb=13
            y=y+1
            x=7
            ;ConsoleLocate(x,y)
        EndIf
        
        Delay(150)
    ForEver
    
EndIf

Publié : ven. 07/août/2009 22:54
par Ollivier
Tu as toutes les touches clavier dispo avec Inkey() et Rawkey(). Par contre, il ne faut pas systématiquement appeler Rawkey() sinon ça bugue. Il faut l'appeler uniquement quand Inkey() = "" sinon tu bloques Inkey().

Ex:

Code : Tout sélectionner

If OpenConsole()   
    
    EnableGraphicalConsole(1)
    
    ConsoleColor(15, 1)
    ConsoleCursor(10)
    For I = 0 To 24
      ConsoleLocate(0, I)
      Print(Space(80) )
    Next I
   
    CAR$=Chr(219)
   
    L = 0
    H = 0
    Repeat
      ConsoleLocate(L, H)
      Delay(1)
      K$ = Inkey()
      Raw = RawKey()
      If K$
        A = Asc(K$)
        If A > 31
          Print(K$) 
          L + 1
          If L > 79
            L = 0
            H + 1
          EndIf
        Else
          If A = 27
            Quit = 1
          EndIf
          If A = 13
            L = 0
            H + 1
          EndIf 
          If A = 8
            If L > 0
              L - 1
            EndIf
          EndIf
          If A = 9
            L = L - (L % 3) + 3
          EndIf
        EndIf
      Else
        Raw = RawKey()
        If Raw
          Select Raw
            Case 37
              If L > 0
                L - 1
              EndIf
            Case 38
              If H > 0
                H - 1
              EndIf
            Case 39
              If L < 79
                L + 1
              EndIf
            Case 40
              If H < 24
                H + 1
              EndIf
          EndSelect
          ConsoleLocate(0, 24)          ; 2 lignes qui servent à voir les codes 
          Print("<" + Str(Raw) + ">") ; reçus par RawKey()
        EndIf
      EndIf
    Until Quit
   
EndIf

Publié : sam. 08/août/2009 20:01
par Fortix
Salut @Ollivier :lol:

merci et bien joué pour le détail qui ma échapé :lol:

bravo et encore merci t'es un géni :D

moralitée de l'histoire: je n'exploite pas suffisament les possibilitées :lol:

donc comme tu as pu constater, je cherches à reproduire l'interface d'époque, et grace à toi j'y suis enfin parvenu enfin presque mais le principal est fait :lol: , merci merci :D