1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
328
328
EMPFEHLEN
-
27.12.11 17:30 #1
- Registriert seit
- Nov 2011
- Beiträge
- 148
Hallo,
Ich hab mal wieder ein Problem und nach knapp 1 Stunde habe ich mich entschlossen euch zu fragen. Mein Problem liegt bei der Funktion gewinnPruf und der Rückgabe von gewinn.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
#include <iostream> #include <conio.h> #include <Windows.h> using namespace std; void Render(char *f); char Setzen(char eingabe, char *f, bool player_turn, char zeichen); int gewinnPruf(char *f, int gewinn, bool player_turn); void neuesSpiel(int gewinn, char eingabe); int main() { //********************************************// //Variablen //********************************************// bool player_turn = true; int gewinn = 0; char ki; char zeichen = ' '; char eingabe = ' '; bool exit = false; char f[9]; for(int i = 0; i < 9; i++) { f[i] = i+'1'; } cout << "TicTacToe" << endl; cout << "Waehle eine Spiel Modus aus:" << endl << "0: mehr Spieler Modus" << endl << "1: gegen Computer einfach" << endl << "2: gegen Computer schwerer als einfach" << endl << "3: gegen Computer mittel" << endl << "4: gegen Computer leichter als schwer" << endl << "5: gegen Computer schwer" << endl; ki = getch(); //********************************************// //Game_Loop //********************************************// if(ki == '0') { while(!exit) { system("cls"); Render(f); Setzen(eingabe, f, player_turn, zeichen); gewinnPruf(f, gewinn, player_turn); neuesSpiel(gewinn, eingabe); cout << gewinn; getch(); player_turn = !player_turn; } } else if(ki == '1') { while(!exit) { } } else if(ki == '2') { while(!exit) { } } else if(ki == '3') { while(!exit) { } } else if(ki == '4') { while(!exit) { } } else if(ki == '5') { while(!exit) { } } return 0; } void Render(char *f) { for(int i = 1; i <=9; i++) { cout << f[i - 1]; if(!(i % 3)) cout << endl << "-+-+-" << endl; else cout << "|"; } } char Setzen(char eingabe, char *f, bool player_turn, char zeichen) { if(player_turn) { cout << "Spieler 1 ist dran. Bitte waehle ein Feld: "; zeichen = 'x'; } if(!player_turn) { cout << "Spieler 2 ist dran. Bitte waehle ein Feld: "; zeichen = 'o'; } eingabe = getch(); while(true) { int zahl = eingabe - 49; if(eingabe >= 49 && eingabe <= 57) { if(f[zahl] == eingabe) { f[zahl] = zeichen; system("cls"); Render(f); break; } else { system("cls"); Render(f); cout << "Dieses Feld ist besetzt. Waehle ein neues: "; eingabe = getch(); } } else { system("cls"); Render(f); cout << "Flasche Eingabe" << endl << "Waehle ein neues Feld: "; eingabe = getch(); } } return eingabe, *f, zeichen; } int gewinnPruf(char *f, int gewinn, bool player_turn) { int c; for(c = 0;c<=8;c++) { if(f[c]==f[c+1]&&f[c+1]==f[c+2]) { if(player_turn)gewinn=1; if(!player_turn)gewinn=2; } else if(f[c]==f[c+3]&&f[c+3]==f[c+6]) { if(player_turn)gewinn=1; if(!player_turn)gewinn=2; } else if(f[0]==f[4]&&f[4]==f[8]) { if(player_turn)gewinn=1; if(!player_turn)gewinn=2; } else if(f[2]==f[4]&&f[4]==f[6]) { if(player_turn)gewinn=1; if(!player_turn)gewinn=2; } else if( f[0] != '1' && f[1] != '2' && f[2] != '3' && f[3] != '4' && f[4] != '5' && f[5] != '6' && f[6] != '7' && f[7] != '8' && f[8] != '9' ) { gewinn = 3; } } return gewinn; } void neuesSpiel(int gewinn,char eingabe) { if(gewinn == 1 || gewinn == 2) { system("cls"); cout << "Spieler "<< gewinn << " hat gewonnen!" << endl << "Neues Spiel?(Y für Ja und N für Nein)"; getch(); } }
Ich höffe der Fehler ist nicht ganz zu doof
mfG
-
Du gibst bei der Funktion zwar gewinn zurück, speicherst den Wert im main() aber nicht!
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
while(!exit) { system("cls"); Render(f); Setzen(eingabe, f, player_turn, zeichen); gewinnPruf(f, gewinn, player_turn); neuesSpiel(gewinn, eingabe); cout << gewinn; getch(); player_turn = !player_turn; } }
Wie du hier siehst, wird nur die Funktion ausgeführt, der Wert von gewinn wird aber nirgends gespeichert.
Du müsstest schreiben:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
while(!exit) { system("cls"); Render(f); Setzen(eingabe, f, player_turn, zeichen); gewinn = gewinnPruf(f, gewinn, player_turn); // gewinn den Rückgabewert der Funktion zuweisen! neuesSpiel(gewinn, eingabe); cout << gewinn; getch(); player_turn = !player_turn; } }
-
27.12.11 19:30 #3
- Registriert seit
- Nov 2011
- Beiträge
- 148
Danke. Ich hab so gedacht das f ja auch gespeichert wird das ist aber weil es ein Zeiger ist.
Ähnliche Themen
-
Rückgabe von system()
Von muehle im Forum C/C++Antworten: 13Letzter Beitrag: 20.02.10, 20:42 -
sp_executesql und rückgabe
Von styri im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 23.06.06, 11:39 -
Probleme bei Rückgabe von Variable durch Funktion
Von [nAZguL] im Forum .NET ArchivAntworten: 2Letzter Beitrag: 30.07.05, 19:34 -
Rückgabe Array
Von srpcool im Forum PHPAntworten: 4Letzter Beitrag: 29.04.05, 15:49 -
Rückgabe von C an PHP
Von Mairhofer im Forum PHPAntworten: 3Letzter Beitrag: 23.08.04, 16:25





Zitieren
Login






