Konsole im Vollbildmodus
Re: Konsole im Vollbildmodus
Wie ich schon dachte, verwendest du Windows 7. Das ist nicht möglich. Du kannst, wie Derren vorgeschlagen hat, selber mit CanvasGadget machen.
Re: Konsole im Vollbildmodus
Du kannst doch vor dem Start die desktop Auflösung auslesen und das dos fenster entsprechend der größe erstellen.
Mode con coils=Fensterbreite als Wert Lines=Fensterhöhe als Wert
aber ich glaube damit kann man nichts in das command fenster übergeben.
wäre sowas wie:
dann hab ich sogar hier aufm 4K Monitor eine Fullscreen Console
getestet mit Windows 7
Usw.
Mode con coils=Fensterbreite als Wert Lines=Fensterhöhe als Wert
aber ich glaube damit kann man nichts in das command fenster übergeben.
wäre sowas wie:
Code: Alles auswählen
RunProgram("cmd.exe", " MODE CON COLS=999 LINES=999", "")
dann hab ich sogar hier aufm 4K Monitor eine Fullscreen Console
getestet mit Windows 7
Usw.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Re: Konsole im Vollbildmodus
Ich habe das Programm unter Windows 10 auf einem anderen PC ausprobiert, da geht das Programm von RSBasic. Das ist für mich dann die Lösung. Ich möchte keinen zusätzlichen Aufwand in den Eigenbau einer Konsole investieren (Buchstabenbreite, -höhe ausrechnen je nach Fenstergröße, etc.). Die Konsole hat alle Bildschirmbefehle, die ich brauche. Es soll wirklich wie früher nur ein Textbildschirm mit 80 x 25 Zeichen sein.
Danke Euch für die Tipps
Danke Euch für die Tipps
PB 5.72
Re: Konsole im Vollbildmodus
Vergiss cmd.exe - Die ist nicht wie früher!
Geht schon damit los, dass cmd heute nicht mehr die original MS-DOS-Schrift hat und endet damit, dass das Seitenverhältnis stark zum breiten hin verändert worden ist (ist eher wie der damalige 80x43 oder gar 80x50-Modus).
Der Eigenbau ist nicht sehr aufwändig, wenn du es so machst:
1. Du musst dir zunächst Codepage 437 bzw. 850 besorgen. Das ist die Originalschrift von MS-DOS. (Kann sein, dass auf den Schriftarten Urheberrecht drauf ist, aber zum Testen reicht es ja erstmal. Kannste immer noch austauschen, wenn das Projekt sich weiterentwickelt) - Keine Sorge: Damals wie heute sind in Eingabeaufforderungen alle Zeichen gleich groß, so dass die komplizierte Schriftgrößenberechnung auf ein Gesamtbreite=x*Zeichenbreite
reduziert ist
2. Entweder renderst du einmal alle Zeichen in DOSBox aus oder du nimmst einen Screenshot davon von Google. Das schneidest du so zurecht, dass du entweder alles in korrekter ASCII-Reihenfolge nebeneinander hast oder du ordnest es in einem Raster von 16x16 an.
3. Abspeichern als .PNG und in PB als Image laden.
4. Das PNG mit FOR-Schleifen und GrabImage() wieder zerlegen und sinnvollerweise auf den #ImageID-Bereich in richtiger Reihenfolge zwischen 0 und 255 legen. Kannst natürlich schummeln und mehr als 255 Zeichen erstellen.
5. Ein Array mit 80x25 Feldern machen. Darin speicherst du die Ascii-Codes für jede "Zelle"
6. Fenster öffnen, Ränder weg, Vollbild, Hintergrundfarbe auf Schwarz und CanvasGadget drauf. Oder du verwendest OpenScreen()
7. Baue dir mit Hilfe des CanvasGadget und dem Zeichenstatz diese uralt-BASIC-Funktionen aus DOS-Zeiten nach, dass die Bildschirmanzeige aussieht, wie in guten alten Zeiten: PRINT(), INPUT(), LOCATE(), CLS() und COLOR()
Die Default-Farben sind (die oberste Reihe):
https://upload.wikimedia.org/wikipedia/ ... rs.svg.png
Diese waren veränderbar.
Dann haste alles, was du für ein "DOS"-Spiel benötigst und es sieht auf jedem System absolut gleich aus und hat das ursprüngliche DOS-Feeling.
Hier noch zu dem alten 80x25-Screen-Modus (je nachdem, wie originalgetreu es werden soll):
- Bei 80x25 beträgt die native Auflösung (also die des CanvasGadget) 720x400 Pixel
- Ein Zeichen ist 9x16 Pixel. Die 8. und 9. Pixelspalte sind immer identisch! (war eine Sparmaßnahme, der Zeichensatz hatte intern 8x16 und die 9. Spalte wurde durch Dopplung der 8. erreicht) - Das war nur im Textmodus so. Im Grafikmodus waren die Zeichen nur 8px breit.
- Man hatte die Wahl zwischen: Entweder 16 Zeichenhintergrundfarben gleichzeitig ODER 8 Zeichenhintergrundfarben gleichzeitig (0-7), aber dafür konnte man einzelne Zeichen blinken lassen.
- 720x400 ist wahrscheinlich zu klein für heutige Bildschirme. Könntest das CanvasGadget um eine ganzzahligen Wert zoomen (z.B. alles mal 2), in die Mitte setzen und den Rest mit einem Rand auffüllen. Diesen Rand kannst du farblich dem Spiel anpassen.
- Zeichenfunktionen waren im Textmodus nicht verfügbar (nur mit Tricksereien durch Austausch bestimmter Zeichen in der Codepage). Einzelne Pixel zeichen war nicht möglich.
- Um den Mauszeiger darzustellen, hat man die Farben der betreffenden Zelle des 80x25-Rasters invertiert, auf welche die Maus gerade gezeigt hat. (es fehlten ja die Grafikfunktionen und deshalb fiel ein grafischer Pfeil ebenfalls aus)
PS: Dank DOSBox spräche nicht viel dagegen, ein echtes DOS-Spiel zu bauen. Dann hast du diese Probleme nicht.
Geht schon damit los, dass cmd heute nicht mehr die original MS-DOS-Schrift hat und endet damit, dass das Seitenverhältnis stark zum breiten hin verändert worden ist (ist eher wie der damalige 80x43 oder gar 80x50-Modus).
Der Eigenbau ist nicht sehr aufwändig, wenn du es so machst:
1. Du musst dir zunächst Codepage 437 bzw. 850 besorgen. Das ist die Originalschrift von MS-DOS. (Kann sein, dass auf den Schriftarten Urheberrecht drauf ist, aber zum Testen reicht es ja erstmal. Kannste immer noch austauschen, wenn das Projekt sich weiterentwickelt) - Keine Sorge: Damals wie heute sind in Eingabeaufforderungen alle Zeichen gleich groß, so dass die komplizierte Schriftgrößenberechnung auf ein Gesamtbreite=x*Zeichenbreite
reduziert ist
2. Entweder renderst du einmal alle Zeichen in DOSBox aus oder du nimmst einen Screenshot davon von Google. Das schneidest du so zurecht, dass du entweder alles in korrekter ASCII-Reihenfolge nebeneinander hast oder du ordnest es in einem Raster von 16x16 an.
3. Abspeichern als .PNG und in PB als Image laden.
4. Das PNG mit FOR-Schleifen und GrabImage() wieder zerlegen und sinnvollerweise auf den #ImageID-Bereich in richtiger Reihenfolge zwischen 0 und 255 legen. Kannst natürlich schummeln und mehr als 255 Zeichen erstellen.
5. Ein Array mit 80x25 Feldern machen. Darin speicherst du die Ascii-Codes für jede "Zelle"
6. Fenster öffnen, Ränder weg, Vollbild, Hintergrundfarbe auf Schwarz und CanvasGadget drauf. Oder du verwendest OpenScreen()
7. Baue dir mit Hilfe des CanvasGadget und dem Zeichenstatz diese uralt-BASIC-Funktionen aus DOS-Zeiten nach, dass die Bildschirmanzeige aussieht, wie in guten alten Zeiten: PRINT(), INPUT(), LOCATE(), CLS() und COLOR()
Die Default-Farben sind (die oberste Reihe):
https://upload.wikimedia.org/wikipedia/ ... rs.svg.png
Diese waren veränderbar.
Dann haste alles, was du für ein "DOS"-Spiel benötigst und es sieht auf jedem System absolut gleich aus und hat das ursprüngliche DOS-Feeling.
Hier noch zu dem alten 80x25-Screen-Modus (je nachdem, wie originalgetreu es werden soll):
- Bei 80x25 beträgt die native Auflösung (also die des CanvasGadget) 720x400 Pixel
- Ein Zeichen ist 9x16 Pixel. Die 8. und 9. Pixelspalte sind immer identisch! (war eine Sparmaßnahme, der Zeichensatz hatte intern 8x16 und die 9. Spalte wurde durch Dopplung der 8. erreicht) - Das war nur im Textmodus so. Im Grafikmodus waren die Zeichen nur 8px breit.
- Man hatte die Wahl zwischen: Entweder 16 Zeichenhintergrundfarben gleichzeitig ODER 8 Zeichenhintergrundfarben gleichzeitig (0-7), aber dafür konnte man einzelne Zeichen blinken lassen.
- 720x400 ist wahrscheinlich zu klein für heutige Bildschirme. Könntest das CanvasGadget um eine ganzzahligen Wert zoomen (z.B. alles mal 2), in die Mitte setzen und den Rest mit einem Rand auffüllen. Diesen Rand kannst du farblich dem Spiel anpassen.
- Zeichenfunktionen waren im Textmodus nicht verfügbar (nur mit Tricksereien durch Austausch bestimmter Zeichen in der Codepage). Einzelne Pixel zeichen war nicht möglich.
- Um den Mauszeiger darzustellen, hat man die Farben der betreffenden Zelle des 80x25-Rasters invertiert, auf welche die Maus gerade gezeigt hat. (es fehlten ja die Grafikfunktionen und deshalb fiel ein grafischer Pfeil ebenfalls aus)
PS: Dank DOSBox spräche nicht viel dagegen, ein echtes DOS-Spiel zu bauen. Dann hast du diese Probleme nicht.
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: Konsole im Vollbildmodus
Hallo DarkSoul,
wäre diese Schnittstelle cool?
Gruß
wäre diese Schnittstelle cool?
Code: Alles auswählen
; Schnittstelle für MyDos Console
#TestDos=1
CompilerIf Defined(TestDos,#PB_Constant)
Procedure MyDosClose() : MessageRequester("Konsole zu","fertig"):CloseConsole() : EndProcedure
Procedure MyDosCls() : ClearConsole() : EndProcedure
Procedure MyDosColor(Farbe,Hintergrund) : ConsoleColor(Farbe,Hintergrund) : EndProcedure
Procedure.s MyDosInkey() : ProcedureReturn Inkey() : EndProcedure
Procedure.s MyDosInput() : ProcedureReturn Input() : EndProcedure
Procedure MyDosLocate(x.i,y.i) :ConsoleLocate(x,y) : EndProcedure
Procedure MyDosOpenConsole() : OpenConsole() : EnableGraphicalConsole(1) : EndProcedure
Procedure MyDosPrint(Text.s) : Print(Text) : EndProcedure
Procedure MyDosPrintN(Text.s) : PrintN(Text) : EndProcedure
Procedure.i MyDosRawKey() : ProcedureReturn RawKey() : EndProcedure
CompilerElse
Procedure MyDosClose() : EndProcedure
Procedure MyDosCls() : EndProcedure
Procedure MyDosColor(Farbe,Hintergrund) : EndProcedure
Procedure.s MyDosInkey() : ProcedureReturn "" : EndProcedure
Procedure.s MyDosInput() : ProcedureReturn "" : EndProcedure
Procedure MyDosLocate(x.i,y.i) : EndProcedure
Procedure MyDosOpenConsole() : EndProcedure
Procedure MyDosPrint(Text.s) : EndProcedure
Procedure MyDosPrintN(Text.s) : EndProcedure
Procedure.i MyDosRawKey() : ProcedureReturn $ff : EndProcedure
CompilerEndIf
Macro ClearConsole() : MyDosCls() : EndMacro
Macro CloseConsole() : MyDosClose() : EndMacro
Macro ConsoleColor(Farbe,Hintergrund) : MyDosColor(Farbe,Hintergrund) : EndMacro
Macro ConsoleLocate(x,y) : MyDosLocate(x,y) : EndMacro
Macro ConsoleTitle(Text) : EndMacro
Macro EnableGraphicalConsole(Wert) : EndMacro
Macro Inkey() : MyDosInkey() : EndMacro
Macro Input() : MyDosInput() : EndMacro
Macro OpenConsole() : MyDosOpenConsole() : EndMacro
Macro Print (Text) : MyDOSPrint(Text) : EndMacro
Macro PrintN(Text) : MyDOSPrint(Text) :EndMacro
Macro RawKey() : MyDosRawKey() : EndMacro
Re: Konsole im Vollbildmodus
Kommst ein bisschen spät damit.
Ich habe vor Weihnachten alle (bis auf ein bisher noch nicht auf andere Programmiersprachen gerettetes großes) PureBasic-Projekte im Papierkorb entsorgt, weil ich die letzte Zeit sehr viel Pech mit dieser Programmiersprache hatte.
Da war so ein DOS-Nachbau dabei, den ich allerdings komplett entsorgt habe. Zwei Monate früher und ihr hättet das haben können.
Ich habe vor Weihnachten alle (bis auf ein bisher noch nicht auf andere Programmiersprachen gerettetes großes) PureBasic-Projekte im Papierkorb entsorgt, weil ich die letzte Zeit sehr viel Pech mit dieser Programmiersprache hatte.
Da war so ein DOS-Nachbau dabei, den ich allerdings komplett entsorgt habe. Zwei Monate früher und ihr hättet das haben können.
Re: Konsole im Vollbildmodus
Was z.B.?DarkSoul hat geschrieben:weil ich die letzte Zeit sehr viel Pech mit dieser Programmiersprache hatte.
Re: Konsole im Vollbildmodus
Siehe meine Threads in der Forenkategorie "Linux" and diverse alte Bugmeldungen von mir im großen Forum, die zwar anerkannt, aber bis heute nicht behoben worden sind.