Konsole im Vollbildmodus

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Konsole im Vollbildmodus

Beitrag von RSBasic »

Wie ich schon dachte, verwendest du Windows 7. Das ist nicht möglich. Du kannst, wie Derren vorgeschlagen hat, selber mit CanvasGadget machen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: Konsole im Vollbildmodus

Beitrag von udg »

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:

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
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Re: Konsole im Vollbildmodus

Beitrag von Hyper »

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 :allright:
PB 5.72
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Konsole im Vollbildmodus

Beitrag von DarkSoul »

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). :mrgreen:

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

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. :allright:
Bild
Benutzeravatar
juergenkulow
Beiträge: 188
Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten

Re: Konsole im Vollbildmodus

Beitrag von juergenkulow »

Hallo DarkSoul,

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
Gruß
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Konsole im Vollbildmodus

Beitrag von DarkSoul »

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. :|
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Konsole im Vollbildmodus

Beitrag von RSBasic »

DarkSoul hat geschrieben:weil ich die letzte Zeit sehr viel Pech mit dieser Programmiersprache hatte.
Was z.B.?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Konsole im Vollbildmodus

Beitrag von DarkSoul »

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. :wink:
Bild
Antworten