000
22.01.2010, 16:11 Uhr
fr33g
|
Hey Leute, hab mir ein Spiel programmiert, nämlich Schiffe versenken, nach einigen Stunden Fehlersuche lief es endlich Jetzt habe ich noch eine Funtkion eingebaut damit das Spiel den Sieg meldet und sich beendet. Jedoch funktioniert es einfach nicht und ich weiß nicht warum=( Das Spiel macht einfach weiter. Hoffe ihr könnt mir helfen:
main.cpp
C++: |
#include "classBretter.h"
#include <iostream> #include <iomanip> #include <string>
using namespace std;
void anzahlZweierSchiffe(Bretter&, const int&, const int&, int&); void anzahlDreierSchiffe(Bretter&, const int&, const int&, int&); void anzahlViererSchiffe(Bretter&, const int&, const int&, int&);
const int size1 = 10; const int size2 = 10; const int size3 = 4; bool stop = false; int choiceGes; int choiceGes1; int choiceGes2; int choiceGes3;
int main() { srand((unsigned)time(NULL)); cout << setw(60) << "Herzlich Willkommen bei Schiffeversenken\n"; cout << "\n"; cout << "\n"; cout << setw(61) << "Ein '.' bedeutet noch nicht hingeschossen\n"; cout << setw(56) << "Ein 'X' bedeutet das war nur Wasser\n"; cout << setw(79) << "Ein 'S' bedeutet da ist ein Schiff, die Klammer sagt wie lang das Schiff ist\n"; cout << "\n\n";
Bretter Brett1(size1,size2,size3); anzahlZweierSchiffe(Brett1, size1, size2, choiceGes1); anzahlDreierSchiffe(Brett1, size1, size2, choiceGes2); anzahlViererSchiffe(Brett1, size1, size2, choiceGes3); Brett1.brettAusgeben(size1, size2);
choiceGes = (choiceGes1 * 2) + (choiceGes2 * 3) + (choiceGes3 * 4); int x; int y;
while(stop == false) { cout << "\n"; cout << "Wo moechtest du hinschiessen: x= "; cin >> x; cout << "\n"; cout << "Wo moechtest du hinschiessen: y= "; cin >> y; cout << "\n";
Brett1.check(x,y); Brett1.brettAusgeben(size1, size2); if(Brett1.endGame(Brett1, choiceGes)) { stop = true; } }
cout.width(47); cout << "Herzlichen Glückwunsch, sie haben das Spiel erfolgreich beendet!"; }
|
classBretter.h
C++: |
#include <string>
#ifndef CLASSBRETTER_H_INCLUDED #define CLASSBRETTER_H_INCLUDED
class Bretter { public: Bretter(const int, const int, const int); ~Bretter(){}; void brettAusgeben(const int&, const int&)const; void zweierSchiffeSetzen(Bretter&, const int, const int); void dreierSchiffeSetzen(Bretter&, const int, const int); void viererSchiffeSetzen(Bretter&, const int, const int); void check(int&, int&); bool endGame(Bretter&, int&);
private: std::string Brett[10][10][4]; };
#endif // CLASSBRETTER_H_INCLUDED
[/CODE]
classBretter.cpp [CODE] #include "classBretter.h"
#include <iostream> #include <iomanip> #include <string>
using namespace std;
Bretter::Bretter(const int size1, const int size2, const int size3) { for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][0] = ". "; } }
for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][1] = "0"; } }
for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][2] = "0"; } }
for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { Brett[i][j][3] = "0"; } } }
void Bretter::brettAusgeben(const int& size1, const int& size2)const { cout << setw(67) << " 0 1 2 3 4 5 6 7 8 9\n";
for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { if(j == 0) { cout << setw(19) << i << " "; } cout << Brett[i][j][0]; }
cout<<"\n"; } }
bool Bretter::endGame(Bretter& Brett1, int& choiceGes) { int tempCheck = 0;
for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { if((Brett[i][j][3] == ("2") || ("3") || ("4")) && (Brett[i][j][0] == ("S(2) ") || ("S(3) ") || ("S(4) "))) { tempCheck += 1; } } }
if(tempCheck == choiceGes) { return true; } else { return false; }
}
void Bretter::zweierSchiffeSetzen(Bretter& Brett1, const int size1, const int size2) { unsigned int x = rand() % (size1 - 2 + 1); unsigned int y = rand() % size2; int tempx = x; int tempy = y;
if ((Brett[tempy][tempx][2] == "0") && (Brett[tempy][tempx+1][2] == "0")) { for (int i = 0; i < 2; i++) { Brett[tempy][tempx][2] = "1"; tempx++; } tempx = x; for (int i = 0;i < 2; i++) { Brett[tempy][tempx][3] = "2"; tempx++; } } else { Brett1.zweierSchiffeSetzen(Brett1,size1,size2); } }
void Bretter::dreierSchiffeSetzen(Bretter& Brett1, const int size1, const int size2) { unsigned int x = rand() % size1; unsigned int y = rand() % (size2 - 3 + 1); int tempx = x; int tempy = y; if ((Brett[tempy][tempx][2] == "0") && (Brett[tempy+1][tempx][2] == "0") && (Brett[tempy+2][tempx][2] == "0")) { for (int i = 0; i < 3; i++) { Brett[tempy][tempx][2] = "1"; tempy++; } tempy = y; for (int i = 0;i < 3; i++) { Brett[tempy][tempx][3] = "3"; tempy++; } } else { Brett1.dreierSchiffeSetzen(Brett1,size1,size2); } }
void Bretter::viererSchiffeSetzen(Bretter& Brett1, const int size1, const int size2) { unsigned int x = rand() % size1; unsigned int y = rand() % (size2 - 4 + 1); int tempx = x; int tempy = y;
if((Brett[tempy][tempx][2] == "0") && (Brett[tempy+1][tempx][2] == "0") && (Brett[tempy+2][tempx][2] == "0") && (Brett[tempy+3][tempx][2] == "0")) { for (int i = 0; i < 4; i++) { Brett[tempy][tempx][2] = "1"; tempy++; } tempy = y; for (int i = 0;i < 4; i++) { Brett[tempy][tempx][3] = "4"; tempy++; } } else { Brett1.viererSchiffeSetzen(Brett1,size1,size2); } }
void Bretter::check(int& x, int& y) { if(Brett[y][x][1] == "0") { if(Brett[y][x][2] == "1") { if(Brett[y][x][3] == "2") { cout << "Treffer\n"; Brett[y][x][0] = "S(2) "; Brett[y][x][1] = "1"; } if(Brett[y][x][3] == "3") { cout << "Treffer\n"; Brett[y][x][0] = "S(3) "; Brett[y][x][1] = "1"; } if(Brett[y][x][3] == "4") { cout << "Treffer\n"; Brett[y][x][0] = "S(4) "; Brett[y][x][1] = "1"; } } else { Brett[y][x][0] = "X "; Brett[y][x][1] = "1"; cout << "Leider nur Wasser\n"; } } else { cout << "Dort hast du schonmal hingeschossen\n"; } }
|
funktionen.cpp
C++: |
#include <iomanip>
using namespace std;
void anzahlZweierSchiffe(Bretter& Brett1, const int& size1, const int& size2, int& choiceGes1) { marke:; cout << "Wie viel zweier Schiffe moechtest du(mindestens 1, maximal 3)"; int choice; cin >> choice; choiceGes1 = choice; if ((choice < 4) && (choice > 0)) { for(int i = 0; i < choice; i++) { Brett1.zweierSchiffeSetzen(Brett1, size1, size2); } } else { cout << "Falsche Eingabe!\n"; goto marke; } }
void anzahlDreierSchiffe(Bretter& Brett1, const int& size1, const int& size2, int& choiceGes2) { marke:; cout << "Wie viel dreier Schiffe moechtest du(mindestens 1, maximal 3)"; int choice; cin >> choice; choiceGes2 = choice; if ((choice < 4) && (choice > 0)) { for(int i = 0; i < choice; i++) { Brett1.dreierSchiffeSetzen(Brett1, size1, size2); } } else { cout << "Falsche Eingabe!\n"; goto marke; } }
void anzahlViererSchiffe(Bretter& Brett1, const int& size1, const int& size2, int& choiceGes3) { marke:; cout << "Wie viel vierer Schiffe moechtest du(maximal 3)"; int choice; cin >> choice; cout << "\n\n"; choiceGes3 = choice; if ((choice < 4) && (choice > 0)) { for(int i = 0; i < choice; i++) { Brett1.viererSchiffeSetzen(Brett1, size1, size2); } cout << setw(58) << "Dann kann es ja losgehen!\n"; } else if (choice == 0) { cout << setw(58) << "Dann kann es ja losgehen!\n"; } else { cout << "Falsche Eingabe!\n"; goto marke; } }
|
Ich weiß is n langer Code, aber wär echt lieb wenn ihr mir trotzdem helfen könntet Dieser Post wurde am 22.01.2010 um 16:12 Uhr von fr33g editiert. |