Die Geschichte mit dem hüpfenden Ball
-
Kann mir niemand helfen? Ich bin da schon am Verzweifeln...
-
TaccoGo schrieb:
wegen int i das kann in der ersten schleife stechen und es zächlt trosdem.
Quatsch! Bei deinem Compiler vielleicht... Nicht jeder benutzt einen <= 6er MS-Compiler
-
Boah ne, ich glaubs net... Der fehler lag hier:
if (pos_x >= breite) // Variablen zur Position neu setzen { if (richtungx == 1) richtungx = 2; else richtungx = 1; } else { if (richtungx == 1) pos_x++; else pos_x--;
logischerweise wird hier der else Block nur ausgeführt, wenn der Ball nicht an einer Wand ist. Wenn der Ball mitten im Feld ist wird der Ball in die jeweilige Richtung bewegt. Da der Ball an der Wand ja in diesem Falle nicht bewegt wird, weil der else Block nicht ausgeführt wird findet auch kein Richtungswechsel statt...
Der Code sieht jetzt so aus:if (pos_x >= breite) // Variablen zur Position neu setzen richtungx = 2; else if (pos_x <= 1) richtungx = 1; if (richtungx == 1) pos_x++; if (richtungx == 2) pos_x--;
und wegen solchen logischen Fehlern muss man immer 2 Tage lang kopfen und andere Leute stressen -.-
Ich hoffe mal ich lerne drausbuffoon
-
Ach ja noch was:
kann ich in Linux ne andere funktion außer sleep() verwenden? da kann man nämlich nur in Sekunden eingeben und das geht irgend wie zu langsam... da stockt der ball so. Sleep() geht ja nicht unter Linux soweit ich nicht falsch informiert bin.
-
nimm usleep()
$ man 3 usleep
da steht mehr dazu
mfg, KdeE
-
Dankeschön... usleep ist fein...
-
btw
cout << "\033[2J"; // Bildschirm wieder löschen, für eine neue generation des Bildes sleep(1); // Warten, damit der Benutzer den Ball sehen kann :)
glück, dass nicht geflusht wird und nicht eine sekunde lang ein leerer bildschirm angezeigt wird
-
So, bin jetzt dabei, das Programm nach und nach zu verbessern. Hab schon eingebaut, dass der User die geschwindigkeit einstellen kann...
Nun möchte ich aber folgendes machen: Das Programm soll das Feld automatisch über die ganze Konsole machen, außer es werden parameter angegeben (zb "./ball -x 50 -y 20")
Im Internet kann man mal wieder nix brauchbares finden... Hat jemand ne ahnung wie das gehen kann?
-
davie schrieb:
btw
cout << "\033[2J"; // Bildschirm wieder löschen, für eine neue generation des Bildes sleep(1); // Warten, damit der Benutzer den Ball sehen kann :)
glück, dass nicht geflusht wird und nicht eine sekunde lang ein leerer bildschirm angezeigt wird
Ja, das stimmt. Ist mir aber schon ein bisschen früher aufgefallen und das Programm sieht jetzt sowieso ein bisschen anders aus.
Jetzt wird nämlich nicht mehr der ganze bildschirm gelöscht... Dann flimmert das nicht so, sondern einfach ein " " über den alten ball gemacht und danach der neue gezeichnet... ist schöner so
-
hat niemand ne ahnung, wie ich die Größe der Konsole raus kriege?
-
Also da wärst du besser im Konsolenforum beraten (evtl. steht dazu schon etwas in der FAQ). Hier werden nur Standard C++ Probleme diskutiert
.
-
Anscheinend schon... Ich wollte dafür nur nicht einen neuen thread aufmachen...