Programm macht unerwünschte Ausgabe
-
Hallo zusammenm,
ich habe hier ein kleines Programm, das ich aus meinem Lehrbuch kopiert habe. Es soll einen springenden Ball simulieren. Ich kannte die Makros CLS und LOCATE noch nicht. Leider wird kein springender Ball ausgegeben, sondern etwas was seh dem Makrosinhalten ähnelt. Könnt ihr mir helfen, das Programm zum Laufen zu kriegen?#include <iostream> #include <string> #define DELAY 10000000L #define CLS (cout << "\033[2J") /soll eigentlich den Bildschirm leeren, aber wird ausgegeben #define LOCATE(z,s) (cout << "\033["<<z<<';'<<s<<'H') //soll Curser an richtige Position bringen, wird aber auch ausgegeben using namespace std; void main() { int x = 2, y = 3, dx = 1, geschw = 0; string boden(79,'-'), header = "**** Springender Ball ****"; CLS; LOCATE(1,25); cout << header; LOCATE(25,1); while(true) { LOCATE(y,x); cout << 'o' << endl; for ( long warten = 0; warten < DELAY; ++warten); if(x == 1 || x == 79) dx=-dx; if(y == 24) { geschw=-geschw; if (geschw == 0) geschw = -7; } geschw+=1; LOCATE(y,x); cout << ' '; y+=geschw; x +=dx; } }
Vielen Dnak
lg, freakC++
-
Du verschweigst uns, dass du Windows nutzt
Da musst du einen Treiber laden, das sollte aber in dem Buch drinnen stehen.Und wieder einer der sich ärgern sollte, dass Mickeysoft es nicht für wichtig empfindet, die Steuerzeichen, welche im ANSI-C-Standard niedergelegt wurden, zu unterstützen...
-
Und wie lade ich die Treiber? Wo kann ich diesen herbekommen und warum benötige ich ihn?
Vielen Dank
lg, freakC*+
-
Laut meinem "Prinz", S. 829:
Windows 9x folgende Zeile in die CONFIG.SYS:DEVICE = C:\Windows\Command\Ansi.sys
WinNT/Win2000 (und wahrscheinlich auch neuer) unterstützen diese Steuerzeichen nicht. Und auf der CD gibts scheinbar nen Wrapper, der das in Windows-Systemaufrufe übersetzt...
-
wo finde ich gkeich nochnal config.sys?
lg, freakC++
-
Hä, ich soll einfach die unten gennante Zeile in config.sys einbinden? Ich finde diese Datei einfach nicht...bin ich einfach zu blöd oder was muss ich machen??
Vielen Dank
lg, freakC++PS.: Ich will den Ball springen sehen
PPS.: Ich sehe gerade, dass sogar die FAQ das Thema anspricht. Da heißt es, dass ich den Windowspfad auch anpassen soll. Ich frage mich aber, woher ich überhaupt ansi.sys herbekomme...
siehe hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39320-and-view-is-next.html
-
Hast du denn ein Windows9x (also z.B. win 98)? Denn wie bereits geschrieben geht das ab Windows2000 nicht mehr...
Und 1 Minute Google liefert mir das:
C:\config.sys
Außerdem sind CLS und LOCATE nur Macros, die du beliebig mit den dollen Windows-Systemaufrufen füttern kannst.
-
Ich verwende Windows Vista und XP. In C befindet sich bei mir diese Datei nicht. Heißt das, dass dieser Treiber gar nicht mehr funktioniert und ich somit das Programm auch nicht ausführen kann?
Gibt es keine Möglichkeit das Programm zum Laufen zu bekommen?
Vielen Dank für die Hilfe
lg, freakC++
-
Hallo,
anscheinend ist es nicht ohne Weiteres möglich, dass Programm unter XP oder Vista zum Laufen zu bekommen.
Dennoch muss es doch eine Möglichkeit geben es zum Laufen zu bringen. Ich müsste die Makros CLS und LOCATE ersetzen.
Gibt es eine moderene Möglichkeit?Für mich ist das sehr wichtig, aber ohne eure Hilfe schaffe ich das nicht.
Was muss ich machen? Das mit ansi.sys verstehe ich irgendwie nicht. Ich finde keine Datei names config.sys und laut google
ist das auch schon veraltet (wenn ich es richtig verstanden habe).Könnt ihr mir helfen?
Vielen Dank
lg, freakC++
-
freakC++ schrieb:
Was muss ich machen? Das mit ansi.sys verstehe ich irgendwie nicht. Ich finde keine Datei names config.sys und laut google
ist das auch schon veraltet (wenn ich es richtig verstanden habe).Drum hab ich das 2x geschrieben, dass das Laden der ansi.sys nur unter Windows < win2000 geht. Drum bist du allen Möglichkeiten beraubt, deine Konsole über Escape-Sequenzen zu steuern.
Und die Lösung hast du selber verlinkt (indirekt). Folge dem obigen Link zu der Win/DOS FAQ, und klicke auf den Link "Improved Console". Alternativ schau dir an ob du mit den Resten aus conio.h zurecht kommst.
Aber eigentlich kann ich dir gar nicht richtig helfen, da Windows für mich ein Fremdkörper ist, ich kenne nur Linux. Und da gibts ANSI-std-Escape-Sequenzen.
-
Orakel-Joe schrieb:
Und wieder einer der sich ärgern sollte, dass Mickeysoft es nicht für wichtig empfindet, die Steuerzeichen, welche im ANSI-C-Standard niedergelegt wurden, zu unterstützen...
Die Dinger heissen zwar ANSI-Steuerzeichen, haben aber nicht das geringste mit den ANSI/ISO C- oder C++-Standards zu tun.
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn ich das richtig sehe, brauchst Du eine Funktion, die den Bildschirm löscht und eine, die den Cursor positioniert.
Ersteres wird in einem Thread in diesem Forum hier diskutiert, der Thread heißt:
'Konsolenfenster löschen'.
Letzteres machst Du mit der WinApi-Funktion 'SetConsoleCursorPosition'.