Frage zu meinem Code!
-
Hi erstmal. Ich habe eine Frage an euch und zwar habe ich vor einer Woche angefangen C++ zu lernen. Ich habe mir ein Buch gekauft, in welchem ich ein Programm programmieren soll das einen Ball simuliert. Ich habe den Code geschrieben und das hat auch alles super geklapt nur gibt mir mein Compiler ständig nur folgendes aus:
< [9;H < [71;Ho
usw.
Das rattert dann immer undendlich lang von oben nach unten runter. Ich habe daraufhin den Lösungscode des Buch genommen. Doch bei diesem zeigt mir mein Compiler nach der Erstellung das selbe an.
Hier ist mal der Code:// ball1.cpp
// Simuliert einen springenden Ball
// Hinweis: Programm mit Strg+C beenden.
// --------------------------------------------------
// Damit die Steuerzeichen wirksam sind, muß ein
// entsprechender Bildschirmtreiber geladen sein.
// Unter Windows 9x geschieht dies durch folgende
// Zeile in der Datei CONFIG.SYS:
// DEVICE = C:\Windows\Command\Ansi.sys
// ---------------------------------------------------#include <iostream>
#include <string>
using namespace std;#define DELAY 10000000L // Verzögerung
#define CLS (cout << "\033[2J") // Bildschirm löschen
#define LOCATE(z,s) (cout <<"\033["<< z <<';'<< s <<'H')
// Cursor in Zeile z und Spalte s positionierenvoid 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); cout << boden;while(true) // Ball "immer" springen lassen
{
LOCATE(y,x);
cout << 'o' << endl; // Ball anzeigen
for( long warten = 0; warten < DELAY; ++warten)
;
if(x == 1 || x == 79) dx = -dx; // An einer Wand?
if( y == 24 ) // Am Boden?
{
geschw = - geschw;
if( geschw == 0 ) geschw = -7; // Neu anstossen
}
geschw += 1; // Beschleunigung = 1LOCATE(y,x); cout << ' '; // Anzeige löschen
y += geschw; x += dx; // Neue Position
}
}Ach ja ich habe das ganze als Win32-Konsolenandwendung programmiert.
Ich hoffe ihr könnt mir weiterhelfen.
-
Welches Buch ist das?
-
Das Buch heist: "C++ Lernen und professionell anwenden". Das ist von Peter Prinz und Ulla Kirch-Prinz und erschien im mitp verlag.
-
Habe das Buch auch, mit meinem Borland-Compiler konnte ich den Code fehlerfrei übersetzen. Welchen Compiler benutzt du?
PS: Ups.. ja bei mir ist es auch zu sehen.. hmm ich gucke mal woran das liegen könnte.
-
also mein Compiler macht keine Fehler so ist das nicht. Aber das Ergebnis also die exe Datei zeigt mir das an.
Wurde bei dir der Ball angezeigt???
-
Hehe ich sehe es grade... der Ball soll auch nicht angezeigt werden, es ist nur eine Simulation, die sowas simuliert und Koordinaten anzeigt! Oder ich bin zu blöde
-
lol das ist ja richtig hammer das progrämmchen, wusste gar nicht das sowas in c++ geht!
-
Wie ist bei dir die Ausgabe?
-
ja nein ich glaube das muss irgendwie grafish dargestellt werden. Denn im paar Seiten danach heist es: Der Bal soll blau auf einem grauen hintergrund dargestellt werden. Oder was meint ihr? Habt ihr das Buch auch?
Oder soll das wirklich nur so dargestellt werden?
-
der ball soll wegen den escapesequenzen dargestellt werden, tut er aber nicht bei mir, aber der ball hüpft trotzdem.
-
Ne, das sollte grafisch dargestellt werden, nur warum es nicht klappt weiß ich (noch) nicht.
-
@Marc++us: Wenn du das hier liest:
Du sagst in deinen Buchbeschreibungen, dass dieses Buch für Einsteiger in C++ gut geeignet ist. Ich verstehe ja nicht sehr viel von C++, aber ich muss sagen, dass mir der Code und die Aufgabenstellung sehr merkwürdig für so ein C++-Buch erscheint. Denkst du wirklich, dass C++-Einsteiger mit solchen Beispielen C++ anfangen sollten?
Sollten Anfänger zum Beispiel lernen, dass man mit
for( long warten = 0; warten < DELAY; ++warten) ;
sein Programm verzögert? Ich würde davon ausgehen, dass ein guter Compiler diese Schleife einfach wegoptimiert.
Auch die defines erscheinen mir hier sehr merkwürdig angewandt.
Zudem sagst du, dass sich das Buch an den aktuellen Standard hält. Das kann ja wegen des hier vorhandenem "void main" nicht so ganz stimmen. Andere Dinge scheinen hingegen dem aktuellen Standard zu entsprechen.
Sollten C++-Einsteiger lernen, dass man Programme durchaus mit STRG-C beenden kann (als einzige Möglichkeit)?
Naja, wie schon gesagt: Ich kenne mich mit C++ nicht aus. Du bist der Experte. Mich würde aber deine Meinung interessieren.
-
Ist denn der entsprechende Bildschirmtreiber überhaupt geladen?
-
ja also das Programm da oben ist natürlich aus einem Kapitel das erst später kommt! Natürlich bekommt man in den ersten Kapiteln die Grundlagen erklährt usw. Aber selber bin ich nicht der checker das ist ja das Problem ich habs wie gesagt selbst erst angefangen.
Ich hoffe du meinst mit deinem Beitraga uch mich.Zu dem Treiber: Also bei mir nicht denn wie gesagt ich hab keine Ahnung wie ich den aktivieren kann. Das muss man irgendwo in eine Console schreiben.
-
FlorianBaer schrieb:
Ich hoffe du meinst mit deinem Beitraga uch mich.
Ich bin davon ausgegangen, dass das da oben der Code aus dem Buch ist. Ist das nicht so?
-
doch das ist der Code aus dem Buch!
-
Hi,
ich besitze das Buch auch, mit Dev-C++ bekomme ich ausgaben dieser Art:
<-[23,42H <-[13,22Ho
Ich habe es vor einer Woche durch den Autoren VC++ 6.0 gescheucht und bekam einen blau grauen Bildschirm zu sehen, mit einem OK Feld
(weis nicht was da stand).
Das Buch ist an sich sehr gut, blos für absolute Anfänger nicht geeignet.
Ich tue mir bis jetzt Kapitel Zeiger und Referenzen mit ein paar vorkenntnissen recht hart, aber das schaffen wir schon
Das Buch orientiert sich bis auf void Functionen auch am standard. Ausserdem schlucken die meisten Compiler void main oder?(Ich weis man soll es nich tuen, ich tue es auch nicht.)cu max
-
Master_Max schrieb:
Ausserdem schlucken die meisten Compiler void main oder?
Weiß ich nicht. Mein g++ schluckt das zumindest nicht und gibt stattdessen einen Fehler aus.
-
@ MAster Max also bei mir wird das selbe angezeigt! Du bist also nicht der einzige! Könnte es vielleicht daran liege, dass wir es bzw. ich es als eine Konsolenanwendung programmiert habe?? Vielleicht wende ich mich auch mit einer E-Mail an die Autoren vielleicht können die uns helfen.
-
Dev-C++ schluckt es auch nicht.(Ich weis nicht welchen Compiler das verwendet.)
Die Übungen im Buch gefallen mir eigentlich auch nicht wirklich, aber man lernt dabei ne menge. Wenn man es mit einsteiger Büchern wie C++ Für Dummies oder Jetzt lerne ich C++ vergleicht ist der Schwierigkeitsgrad um einiges höher. Ich finde eigentlich auch das ihr es höher einstufen könntet,
den ab seite 300 wirds richtig böse (und die Präprozessor direktiven am Anfang sind für einen Anfänger auch nicht einfach zu verstehen(ging mir so, lernt man ja eh erst wenn man eigene .h´s schreibt), ich weis allerdings nicht wie schwer das Buch noch wird wenn Templates, Vektoren... kommencu max
-
// --------------------------------------------------
// Damit die Steuerzeichen wirksam sind, muß ein
// entsprechender Bildschirmtreiber geladen sein.
// Unter Windows 9x geschieht dies durch folgende
// Zeile in der Datei CONFIG.SYS:
// DEVICE = C:\Windows\Command\Ansi.sys
// --------------------------------------Hier steht doch schon alles...
Das Programm funktioniert nur unter Windows 9x und auch dann nur wenn die Treiber geladen sind.