Bouncing Ball problem
-
hallo,
ich diesen code aus einem buch von ulla prinz abgetippt.#include <iostream> #include <vector> #include <string> #include <cctype> using namespace std; #define DELAY 10000000L #define CLS (cout<<"/033[2J") #define LOCATE(z,s) (cout << "/033["<< z<<';'<<s<<'H') void main() { int x=2,y=3,dx=1,speed=0; string floor(79,'-'), header = "*****BALL******"; CLS; LOCATE(1,25); cout << header; LOCATE(25,1); cout << floor; while(true) { LOCATE(y,x); cout << 'o'<<endl; for( long wait = 0; wait < DELAY; ++wait) ; if (x==1 || x==79 ) dx = -dx; if (y==24) { speed = -speed; if (speed == 0) speed = -7; } speed +=1; LOCATE(y,x); cout<< ' '; y += speed; x+=dx; } }ich hab ka was der code machen soll. was beduetet
#define CLS (cout<<"/033[2J").
es wird genau das gemacht was ich dachte, er gibt /033[2J aus was keinen sinn ergibt.als compiler benutze ich VS2010
hat jemand eine idee was das soll ?
-
Das ist eine Escapesequenz unter DOS zum Löschen des Bildschirms.
Die wird unter Windows wahrscheinlich nicht mehr funktionieren.siehe http://www.c-plusplus.net/forum/39323 für genauere Info
-
kann man denn das buch" a complete guide to programing in c++" von prinz noch empfehlen ?
scheint mir etwas veraltet

-
kantaki schrieb:
kann man denn das buch" a complete guide to programing in c++" von prinz noch empfehlen ?
scheint mir etwas veraltet
Auf jeden Fall ist obiger Code Müll.
Mischung aus Pascal- und C-Stil, nur C++ ist nicht dabei.
-
primer ftw
-
schon für
Ulla Prinz schrieb:
void main()sollte man die Buchauthorin ohrfeigen...
void main() war zu keiner Zeit Standard-C++.Zu den Escape-Sequenzen:
Unter Unix/Linux funktionieren die einwandfrei und auch unter älteren Windows-Versionen.
Die Ansi-Escape-Sequenzen werden erst ab Windows-NT nicht mehr unterstützt.Das würde ich also weniger als Kritikpunkt betrachten.
Ansonsten hat volkard Recht:
Massiger Gebrauch von Makros und Variablendeklarationen am Scope-Anfang weisen deutlich auf C hin.
-
DrakoXP schrieb:
Zu den Escape-Sequenzen:
Unter Unix/Linux funktionieren die einwandfrei und auch unter älteren Windows-Versionen.
Die Ansi-Escape-Sequenzen werden erst ab Windows-NT nicht mehr unterstützt.Das würde ich also weniger als Kritikpunkt betrachten.
edit: Weg:"
Nein, das nicht." Hin:"Nein, das ist nicht das Problem, da gebe ich Dir recht." Wir haben for(;;) als eigenes Idiom für Endlosschleifen. Aber CLS müßte wirklich eine Funktion sein. Und DELAY eine const. Die Zeitschleife hat keinen Körper und wird wegoptimiert. Wenigstens cout<<""; machen. Alle Variablen am Anfang ist in C++ Anti-Stil. Selbst, wenn man CLS als Makro dulden würde, danbn aber bitte CLS(); statt CLS;. Kurzum, alles voll zum Kotzen.
-
Das mit em Kritikpunkt bezog sich einzig und allein auf die ANSI-Escape-Sequenzen.
Der Code an sich, da gebe ich dir völlig Recht, ist natürlich grauenhaft.
-
Wie immer ist system() schlecht doch da du scheinbar noch nichts selber geschrieben hast kannst du solange system("cls"); nehmen.
