Hi,
ich bastel gerade an einem Spiel. Es wird unter anderem auch auf der Konsole laufen (voll Retro, aber es stammt auch aus den 80er Jahren. Ich habe es stundenlang auf dem ZX Spektrum gezockt). Momentan stelle ich die einzelnen Spielelemente durch simple Buchstaben dar (S = Spieler, Z = Ziel), aber schöner wäre es natürlich, wenn man hier seine eigenen Symbole/Zeichen definieren könnte. Ich hab schon mal ein bisserl gegoogelt, aber bisher nichts passendes gefunden.
Kann mir jemand sagen, wie ich sowas angehen kann?
Eigene Zeichen auf der Console machen
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Eigene Zeichen auf der Console machen
Ich mag Pascal...
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Eigene Zeichen auf der Console machen
Ich weis nicht, ob dies direkt von Lazarus aus geht, aber du könntest eine eigene Schrift bauen, und dies bei den Eigenschaften der Eingabeaufforderung einbinden.
Unter DOS mit Turbo-Pascal hatte ich mal so etwas gemacht, aber dies nützt unter Windows leider nicht viel.
Unter DOS mit Turbo-Pascal hatte ich mal so etwas gemacht, aber dies nützt unter Windows leider nicht viel.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: Eigene Zeichen auf der Console machen
Ich habe mal ein wenig weiter recherchiert und bin für Windows beim Tool EudCEdit fündig geworden. Hier eine Anleitung, falls das jemand brauchen kann: https://www.youtube.com/watch?v=fbu-7fazjSY. Ist natürlich absolut nicht CrossCompiling...
War es das, was du damit meintest, eine eigene Schrift zu bauen? Ich muss auch erst noch austesten, wie man das bei einem Programm weitergeben kann, oder ob es immer an die Maschine gebunden ist, auf der man solche Zeichen erstellt hat...
... man kann sowas wohl weitergeben, aber es ist kein eigener Font: http://www.pcwelt.de/ratgeber/2-Eudcedi ... 42182.html. Ich stöber mal in Richtung eigener Font weiter... ... Murks! Was hat Font mit Konsole zu tun???
War es das, was du damit meintest, eine eigene Schrift zu bauen? Ich muss auch erst noch austesten, wie man das bei einem Programm weitergeben kann, oder ob es immer an die Maschine gebunden ist, auf der man solche Zeichen erstellt hat...
... man kann sowas wohl weitergeben, aber es ist kein eigener Font: http://www.pcwelt.de/ratgeber/2-Eudcedi ... 42182.html. Ich stöber mal in Richtung eigener Font weiter... ... Murks! Was hat Font mit Konsole zu tun???

Ich mag Pascal...
Re: Eigene Zeichen auf der Console machen
Viel! Zum Beispiel kann man auch den UTF8-Zeichensatz unter Windows auf der Konsole nutzen und ist nicht nur an die verschiedenen Codepages gebunden. Dabei können verschiedene Fonts genutzt werden. Es gibt Standard-Fonts, die (jedem) Windows beigefügt sind, wie Courier oder Lucida Console oder auch (freie) Raster-Fonts, die für die Konsole genutzt werden können. Je nach Font, kann dieser bestimmte Zeichen darstellen oder auch nicht.Marsmännchen hat geschrieben:Was hat Font mit Konsole zu tun???
So kann man z.B. den eingestellten Font ändern:
Code: Alles auswählen
program project1;
uses
Windows;
const
LF_FACESIZE = 32;
type
CONSOLE_FONT_INFOEX = record
cbSize : ULONG;
nFont : DWORD;
dwFontSizeX : SHORT;
dwFontSizeY : SHORT;
FontFamily : UINT;
FontWeight : UINT;
FaceName : array [0..LF_FACESIZE-1] of WCHAR;
end;
{ Only supported in Vista and onwards!}
function SetCurrentConsoleFontEx(hConsoleOutput: HANDLE; bMaximumWindow: BOOL; var CONSOLE_FONT_INFOEX): BOOL; stdcall; external 'kernel32.dll' name 'SetCurrentConsoleFontEx';
var
New_CONSOLE_FONT_INFOEX : CONSOLE_FONT_INFOEX;
begin
Write('Default Font <press Enter>');
ReadLn;
FillChar(New_CONSOLE_FONT_INFOEX, SizeOf(CONSOLE_FONT_INFOEX), 0);
New_CONSOLE_FONT_INFOEX.cbSize := SizeOf(CONSOLE_FONT_INFOEX);
New_CONSOLE_FONT_INFOEX.FaceName := 'Lucida Console';
New_CONSOLE_FONT_INFOEX.FontWeight := 400;
SetCurrentConsoleFontEx(StdOutputHandle, False, New_CONSOLE_FONT_INFOEX);
Write('Font Lucida Console <press Enter>');
ReadLn;
New_CONSOLE_FONT_INFOEX.FaceName := 'Consolas';
SetCurrentConsoleFontEx(StdOutputHandle, False, New_CONSOLE_FONT_INFOEX);
Write('Font Consolas <press Enter>');
ReadLn;
New_CONSOLE_FONT_INFOEX.FaceName := 'Courier';
SetCurrentConsoleFontEx(StdOutputHandle, False, New_CONSOLE_FONT_INFOEX);
Write('Font Courier (mostly default font) <press Enter>');
ReadLn;
end.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Eigene Zeichen auf der Console machen
Das wird wohl die Konsolen betreffen, welche kein 16Bit mehr unterstützen und kein Vollbild mehr können.{ Only supported in Vista and onwards!}
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot