Page 1 sur 2

Comment simuler un vieux ecran EGA

Publié : lun. 27/août/2007 20:50
par Kwai chang caine
Bonjour à tous

J'ai encore une idée à la "Biiip"

Voila je voudrais pouvoir créer une fenetre qui simulerais un vieux ecran EGA de style DOS d'une résolution par exemple de 90 caracteres horizontaux sur 30 caracteres verticaux.
Style caracteres vert, sur fond vert.
Avec le gros carré comme curseur ou bien le trait qui clignote :D

Avec une fonction d'ecriture et de lecture du style :

Code : Tout sélectionner

Procedure EcrisFenetreDos(Ligne,Colonne, texte)
*
*
*
EndProcedure

Procedure LitFenetreDos(Ligne,Colonne, NombreCaracteres)
*
*
*
EndProcedure

EcrisFenetreDos(4, 6, "Coucou") ' Ecrit le mot "Coucou" à la 4e ligne et 6e colonne 
Debug LitFenetreDos(4, 6, 5) ' Lit 5 caracteres à partir de la 4e ligne et 6e colonne
Je n'ai aucune idée de comment réaliser cette merveille.
Quelqu'un de vous pourrait éclairer ma lanterne désespérément étéinte :cry:

Merci de votre aide

Publié : lun. 27/août/2007 21:00
par Ollivier
Pour t'aider (Jeux >> Zone de texte en temps réel dans un jeu (mytic) )

Code : Tout sélectionner

Global Texte$ 
  
Declare Graph() 
Declare zone_texte(x.l,Y.l,Couleur.l) 
Declare.S Curs(ms.L, Char.S = "_") 

InitSprite () 
InitKeyboard () 
OpenWindow (0,0,0,300,300, "" ) 
OpenWindowedScreen ( WindowID (0),0,0,300,300,0,0,0) 

Texte$ = "A>" 
Repeat 
    Graph() 
    FlipBuffers () 
    Event = WindowEvent () 
Until Event = #PB_Event_CloseWindow 





Procedure zone_texte(x.l,Y.l,Couleur.l) 
  ExamineKeyboard() 
  Texte$ = Left(Texte$, Len(Texte$) - KeyboardReleased( #PB_Key_Back ) ) + KeyboardInkey () 
  DrawingMode(#PB_2DDrawing_Transparent) 
  DrawText (x+2,Y+2,texte$ + Curs(500),#Black,0) 
  DrawText (x,Y,texte$ + Curs(500),Couleur,0)    
EndProcedure 

Procedure Graph() 
    StartDrawing ( ScreenOutput ()) 
    xc = 1 
    yc = 1 
     For Rayon = 400 To 10 Step -10 
         Circle (xc, yc, Rayon , RGB ( Random (255), Random (255), Random (255))) 
     Next Rayon 
    zone_texte(10,10,#White) 
     StopDrawing () 
EndProcedure 

Procedure.S Curs(ms.L, Char.S = "_") 
  Static Used.L 
  Static Start.L 
  Static CursorStat.B 
  If Used = 0: Start = ElapsedMilliseconds(): Used = 1: EndIf 
  If ElapsedMilliseconds() > Start + ms 
    CursorStat = 1 - CursorStat 
    Used = 0 
  EndIf 
  If CursorStat 
    ExitChar.S = Char 
  Else 
    ExitChar = "" 
  EndIf 
  ProcedureReturn ExitChar 
EndProcedure 

Publié : lun. 27/août/2007 21:19
par Kwai chang caine
Merci OLLIVIER de ta réponse rapide.

Effectivement c'est un bon début, mais y'a encore du lab :D

Pas de retour à la ligne.
Pas de resizing de la fenetre possible.
Pas de lecture de zone de texte.

Mais c'est un bon debut quand meme, je le met dans ma hotte.
Encore merci 8)

Publié : lun. 27/août/2007 22:25
par Backup
..........

Publié : lun. 27/août/2007 22:46
par Ollivier
Phénoménal ! T'arrête pas de triper!
:D

Publié : mar. 28/août/2007 5:16
par Kwai chang caine
Ooouuuaaahh!!!
Trop top cool de la balle :D

On s'y croirais.
T'avais de ces idées....

Dis voir crois tu qu'il serait possible de faire ce genre d'ecran dans une fenetre avec les caracteres qui grossissent si l'on agrandit l'ecran.
En fin de compte proportionnel à la grandeur de la fenetre ?

Publié : mar. 28/août/2007 7:48
par Backup
........

Publié : mar. 28/août/2007 8:18
par Kwai chang caine
Alors la .......on s'approche, on s'approche, de ce que je veux réaliser.
J'suis super content :D

Y'a ben que des barjos comme nous deux pour essayer de creer des EGA avec une résolution de 90 X 30 monochrome, alors que tous les clampins de la terre courent apres les terapixels :lol:

Moi c'est mon coté nostalgie, en plus j'adore ces affichages.
J'ai meme plein de ces ecrans dans mon grenier.
Je ne desepere pas un jour d'avoir le temps de les rebrancher à un vieux GOUPIL ou IBM et de les regarder briller de leur "2" couleurs ecrire un :
"c:\>" :D

Je pense que ce doit etre plus dur mais aurais tu une combine pour la fonction inverse, la lecture des caracteres inscrit dans ton super beau ecran DOS.

Encore merci de ta precieuse aide 8)

Publié : mar. 28/août/2007 8:33
par Backup
.......

Publié : mar. 28/août/2007 8:40
par Kwai chang caine
Tu as raison, le mode console a l'air fait pour ça.

Le bleme c'est que lorsque l'on modifie les dimensions de la fenetre, le texte ne s'agrandie pas et se perd dans les ascenseurs, :?

Comme moi quand je me promene dans une tour bourré d'ascenseur :lol:

Publié : mar. 28/août/2007 8:54
par Kwai chang caine
Dis voir je viens de jeter un oeil aux instructions "Consoles" pour lire les caracteres tu utiliserais donc :

Code : Tout sélectionner

Resultat = ReadConsoleData(*Buffer, Taille)

Publié : mar. 28/août/2007 11:36
par Kwai chang caine
Bon je viens de creuser un peu partout et j'ai trouvé un code de SROD qui permet de lire les lignes de la console.
Je l'ai "mixé avec celui de DOBRO

Code : Tout sélectionner

If OpenConsole() 

 ConsoleTitle("Ceci est le titre de la console")
 EnableGraphicalConsole(1) ; passe en mode graphique 
 ConsoleColor(10,0)  ; couleur de text vert, couleur fond noir 
 ConsoleCursor(10) ; gros curseur 
 ConsoleLocate(5, 30); positionne le curseur 
 PrintN("Appuyez sur [Entree] pour quitter") ; ecrit 
 ConsoleLocate(40, 30) ; laisse le curseur a la fin 
 a$ = Input() ; attent une reponse :D 
 MessageRequester("", a$) 
 Coordinate.l
 x.w = 5: y.w = 30
 PokeW(@Coordinate, x) 
 PokeW(@Coordinate + 2, y)
 NumCharsRead.l 
 Buffer$=Space(100)
 ReadConsoleOutputCharacter_(7, Buffer$, 100, Coordinate, @NumCharsRead) 
 Debug Buffer$ 
 CallDebugger
 
EndIf 
Apparement ça marche, mais c'est pas tres simple.
Pas de "ReadConsoleData"

Est-ce la meilleure methode a votre avis ?

Publié : mer. 12/sept./2007 22:48
par Fortix
que de nostalgies :) ,

ça me fais rappeler mon premier "Trojan", que je manipulais avec ce type de console :cry: avec un petit language interpreteur façon @Dobro (en moin compliqué bien sûr :lol: )

le bon vieux temp :cry: :cry:

Publié : jeu. 13/sept./2007 9:05
par Kwai chang caine
M'en parle pas.
Que donnerais-je pour retourner 30 ans en arriere :cry:

TO7, TO7 ou est tu ???
M'en fous j'en ai racheté un sur E-Bay, na! :D

Publié : jeu. 13/sept./2007 14:48
par Fortix
Salution, est il possible de changer la couleur du curseur de la console??,
merci :D