tomaschku
Goto Top

Sollen die Streifen so sein?

Hallo Leute!

Schaut euch mal das Bild an und sagt mir, was ihr davon hält. Ist das Normal?
Wenn man mit der Mouse (und Quickedit enabled) draufklickt oder das Fenster nur Vergrößert/Verkleinert verschwindet es. (Bei der Maus nur teilweise)
Der Code ist selbsterstellt und in einem Kommentar von mir aufgelistet.

Gruß,
tomaschku
admin.de

Content-ID: 368973

Url: https://administrator.de/contentid/368973

Ausgedruckt am: 05.11.2024 um 20:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 22.03.2018 um 21:30:30 Uhr
Goto Top
Zitat von @tomaschku:

Ist das Normal?

Was sagt denn die Spezifikation?

lks
tomaschku
tomaschku 22.03.2018 aktualisiert um 21:45:38 Uhr
Goto Top
Spezi-was? Meinst du den Code, oder?

Gruß,
bis Morgen
rubberman
rubberman 22.03.2018 um 22:00:39 Uhr
Goto Top
Versuchst du irgendwas grafisches in einem Konsolefenster? Das wird Murks. Ohne Code kann aber niemand auf deine Frage antworten ...

Steffen
Lochkartenstanzer
Lochkartenstanzer 22.03.2018 um 22:11:41 Uhr
Goto Top
Zitat von @tomaschku:

Spezi-was? Meinst du den Code, oder?

bevor man Code schreibt, spezifiziert man, was das Programm tun soll und wie z.b. der Bildschirm aussehen soll. dementsprechend kann man bewerten, ob das was der Code produziert das ist, was die Spezifikation sagt.

lks
nikoatit
nikoatit 23.03.2018 um 11:53:33 Uhr
Goto Top
Auf alle Fälle Monitor und Grafikkarte tauschen!

Gruß
Penny.Cilin
Penny.Cilin 23.03.2018 um 12:48:43 Uhr
Goto Top
Was ist denn diese Drawing.exe? Ein Programm von Dir?
Keine Ahnung was Du da machst.

Gruss Penny.
tomaschku
tomaschku 23.03.2018 aktualisiert um 16:06:41 Uhr
Goto Top
Ich habe mir einfach eine Funktion erstellt, die an den angegebenen Koordinaten ein Zeichen schreibt (Header außenvor):

void printxy(unsigned int x, unsigned int y, char sym) {
	_printxy_check_(x, y, 1);

	COORD pos;
	pos.X = x;
	pos.Y = y;

	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
	std::cout << sym;
}
Und das in 2 for Schleifen:

	for (int X = 0; X < 119; X++) {
		for (int Y = 0; Y < 30; Y++) {
			printxy(X, Y, 'Û');  
			std::this_thread::sleep_for(std::chrono::microseconds(1));
		}
	}
	pause();
	cls();
	for (int Y = 0; Y < 30; Y++) {
		for (int X = 0; X < 119; X++) {
			printxy(X, Y, 'Û');  
			std::this_thread::sleep_for(std::chrono::microseconds(1));
		}
	}
	pause();

Eigentlich war es mehr eine humoristische Frage, aber ich dachte, in Humor passt es dann doch nicht so rein. face-smile

(Mein Plan war ein pseudografisches Spiel, dass war halt ein Schnelligkeitstest, da ich mir unter microsecond nicht viel vorstellen hab können)
tomaschku
tomaschku 23.03.2018 um 16:09:30 Uhr
Goto Top
bevor man Code schreibt, spezifiziert man, was das Programm tun soll und wie z.b. der Bildschirm aussehen soll.
Spezifizieren tut man also außerhalb des Programmes, mehr oder weniger gedanklich, oder? Nicht Böse gemeint, aber ich verstehe grad nur Bahnhof, auch weil Google meine einzige Quelle ist (und nichts ausspuckt).
tomaschku
tomaschku 23.03.2018 um 16:10:37 Uhr
Goto Top
Ja, hab mein Code getestet. Hatt ich vergessen, dazuzuschreiben.
rubberman
Lösung rubberman 23.03.2018 aktualisiert um 18:56:16 Uhr
Goto Top
OK, das beantwortet deine Frage nach dem "soll das so sein". Antwort, nein soll nicht, aber ist nun mal so. Da du mit dem "Full Block" Zeichen versuchst Grafiken zu erstellen, ist es nun mal so, dass das immer noch einzelne Zeichen bleiben. Das Windows Konsolefenster ist in einzelne Character Cells aufgeteilt. Kannst du dir vorstellen wie eine Exceltabelle, bei der jede Zelle die Breite und Höhe hat, um genau ein Zeichen zu beinhalten. Kleine Ungenauigkeiten in der Darstellung (Überlappen oder Abstand der Blockzeichen zum Rand der Character Cells) führen zu dieser streifigen Darstellung.

Die Windows Konsole ist ein rein textbasiertes Fenster. Wenn du dort versuchst missbräuchlich Grafiken hinein zu zaubern, dann muss dir klar sein, dass das nicht der Sinn eines Konsolefensters ist und dass du mit Nebenwirkungen zu rechnen hast.

Steffen