Graphique console

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Graphique console

Message 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.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

..........
Dernière modification par Backup le sam. 01/oct./2011 12:34, modifié 1 fois.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message 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:
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message 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
Répondre