C++ - Quellcodes erklärung?
-
Hi, bin Neuling in der C++ Programmierung und habe mir gerade erst ein Buch gekauft. Der Folgende Quelltext ist zwar erklärt aber ich verstehs trotzdem nicht.
Die Listings sind für das Spiel "Bermuda" was sich ähnlich vie Schiffeversenken Spielt.
Wäre vllt jemand so nett und würde mir diese Quellcodes erklären?
Schonmal danke

Nr1: Spielfeld:
#include <iostream> using namespace std; const int X=9; const int Y=7; int main() { char Spielfeld[X][Y]; int x, y; char cx, cy; for (x=0; x<X; x++) { for (y=0; y<Y; y++) { Spielfeld[x][y] = "."; } } bool SchleifenEnde = false; int xin, yin; do { cout<< " 1 2 3 4 5 6 7 8 9" << endl; for (y=0; y<Y; y++) { cout<< (char) ('A'+y) << " "; for (x=0; x<X; x++) { cout<< " " << Spielfeld[x][y]; } cout<< endl; } cin>> cx >> cy; xin = cx -'1'; yin = cy -'A'; if (xin>=0 && xin<9 && yin>=0 && yin<7) { Spielfeld[xin][yin] = 'x' } else { SchleifenEnde = true; } }while (!Schleifenende); }Nr2: Schiffe:
#include <iostream> #include <stdlib.h> using namespace std; const int X=9; const int Y=7; const int MaxSchiff=4; struct tSchiff { int x; int y; bool gefunden; }; tSchiff Schiff[MaxSchiff]; int main() { int i, j; bool neueZahl; srand(0); for(i=0; i<MaxSchiff; i++) { Schiff[i].gefunden = false; do { Schiff[i].x = rand() % X; Schiff[i].y = rand() % Y; neueZahl = true; for (j=0; j<i; j++) { if (Schiff[j].x==Schiff[i].x && Schiff[j].y==Schiff[i].y) { neueZahl = false; } } } while (!neueZahl); } for (i=0; i<MaxSchiff; i++) { cout << Schiff[i].x << "," << Schiff[i].y << " "; } cout << std::endl; }Ich hoffe ich habe nichts falsches geschrieben und dass mir jemand helfen kann.
EDIT by Phoemuex: cpp-Tags und Einrückung (in Zukunft bitte selber machen!)
-
Nr1: Spielfeld:
#include <iostream> //Brauchst du für "cout und cin..." also Eingaben und Ausgaben using namespace std; //Zwei Konstante deklarieren (Die Werte können nicht geändert werden) const int X=9; const int Y=7; //Hauptprogramm int main() { //Ein 2D-Array deklarieren char Spielfeld[X][Y]; //Zwei Variablen deklarieren vom Typ int (ganzzahl) int x, y; //Zwei Variablen deklarieren vom Typ Char (Ein Zeichen) char cx, cy; //Verschachtelte For-Schleifen, die anscheinend das Spielfeld zeichnen for (x=0; x<X; x++) { for (y=0; y<Y; y++) { Spielfeld[x][y] = "."; } } //Bool-Variable initialisieren mit false bool SchleifenEnde = false; // Wieder 2 int Variablen int xin, yin; // Eine Do Schleife do { cout<< " 1 2 3 4 5 6 7 8 9" << endl; //Gebe 1 2 3 4 5... in der Console aus //Wieder ne For-Schleife for (y=0; y<Y; y++) { cout<< (char) ('A'+y) << " "; //Ausgeben: Die Zeichenkonstante 'A' um y erhöhen for (x=0; x<X; x++) { cout<< " " << Spielfeld[x][y]; //Das ganze 2D-Array ausgeben } cout<< endl; } //Zwei Variablen einlesen cin>> cx >> cy; //Erklärt sich von selber xin = cx -'1'; yin = cy -'A'; if (xin>=0 && xin<9 && yin>=0 && yin<7) { Spielfeld[xin][yin] = 'x' } else { SchleifenEnde = true; } } while (!Schleifenende); } //...........................................................Meinst du so erklären? Besser wäre es wenn du mitteilst, was du nicht verstehst.
Lg Mentras
-
Ist das zufällig "Einstieg in C++"?

-
Ja ich habe Einstieg in C++

und danke für deine Antwort, hat mir sehr geholfen.
Genau so hab ich es gemeint
-
Honky schrieb:
Ja ich habe Einstieg in C++

und danke für deine Antwort, hat mir sehr geholfen.
Genau so hab ich es gemeint
Hätte auch gerne den 2. Quellcode gemacht, aber das ist ja ziemlich das selbe. (Außerdem weiß ich nicht was die lib <stdlib> macht x( )
Lg Mentras
-
stdlib.h(bzw unter C++cstdlib) wird für die Funktionrandbenötigt, die eine Zufallszahl zurückgibt. Bei jedem Aufruf des Programms wird die selbe (pseudo-zufällige) Zahlenfolge generiert. (Wobei das ein "Problem" ist, dass sich mitsrandumschiffen lässt, wenn man zum Beispiel die Zeit als Parameter übergibt und somit den PNG jedesmal anders initialisiert.)
-
Ohhh, verstehe!
Dank dir!