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
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
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
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

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!

Publié : mar. 28/août/2007 5:16
par Kwai chang caine
Ooouuuaaahh!!!
Trop top cool de la balle
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
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
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:\>"
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

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

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 :
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

avec un petit language interpreteur façon @Dobro (en moin compliqué bien sûr

)
le bon vieux temp

Publié : jeu. 13/sept./2007 9:05
par Kwai chang caine
M'en parle pas.
Que donnerais-je pour retourner 30 ans en arriere
TO7, TO7 ou est tu ???
M'en fous j'en ai racheté un sur E-Bay, na!

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