jookerxxx
31.08.2010, 15:30
Hallo,
ich habe vor 2 Tagen angefangen an einem Tic Tac Toe Game zu arbeiten.
Das Game ist noch "sozusagen" in der "Beta-Version" da es noch nicht vollständig ist( mit Menüs etc. ). Dennóch habe ich da zwei Probleme die mir einfach keine Ruhe lassen, und die ich auch versucht habe zu beheben.Wie die Überschrift es sagt, vermute ich , dass es an einer falschen verwendung mit Arrays in Bezug auf Funktionsparameter liegt :o ...
Hier die zwei Probleme:
1. Sobald man aufgefordert wird ein zweites Mal zu spielen und dies Tut,
...wird die Funktion Reset() zwar aufgerufen, jedoch erfüllt sie ihren zweck nicht.
2. Sobald man das zweite Mal das Spiel durchgespielt hat, beendet sich das ...Programm einfach.
Ich hoffe das Problem ist gut genug geschildert, bin nicht der beste in Deutsch xD, ´*hust* Immer diese Italiener *hust* xD
Danke schonmal im Voraus , falls es Antworten gibt.
Hier der Code:
// Copyright by Sterminio Productions ©
#include <iostream>
#include <windows.h>
using namespace std;
#define WIN32_LEAN_AND_MEAN //Eher SELTEN - VERWENDETE Teile aus <windows.h> nicht verwenden
//SpielBrett
char SpielBrett[10] = { "123456789" };
//GameOver Bedingung
bool bGameOver = false;
//Wer ist am Zug?
int iPlayer = 1;
//Eingabe
char cEingabe;
//Zeichen setzen
char cZeichen;
//Titel Screen
void TitelScreen();
//Korrekte Eingabe
bool bInput;
//Gibt es einen Gewinner ?
bool bWinner = false;
//Winner Price
void Winner( bool bW );
// Nochmal spielen ?
bool bAgain = true;
void End( bool *bA );
//Game Funktion
void Game();
//Reset Funktion
void Reset( char *Felder, int iElemente );
int main(){
//TitelScreen
//TitelScreen();
//SpielUmgebung Setzen
system("Color 0a");
Game();
End( &bAgain );
if( bAgain == true ){
Game();
Reset( SpielBrett, sizeof( SpielBrett )/sizeof( SpielBrett[0] ) );
}
else if( bAgain == false ){
exit(0);
}
return 0;
}
void TitelScreen(){
system("Color 4");
cout << endl << endl << endl << endl << endl << endl ;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
cout << " ß ß" << endl;
cout << " ß TIC TAC TOE ß" << endl;
cout << " ß ß" << endl;
cout << " ß ß" << endl;
cout << " ß ß" << endl;
cout << " ß ß" << endl;
cout << " ß Copyright Sterminio Productions ß" << endl;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
for( int i =0; i < 20; i++ ){
system("Color 1");
system("Color 2");
system("Color 3");
system("Color 4");
system("Color 5");
system("Color 6");
system("Color 7");
system("Color 8");
system("Color 9");
system("Color 0");
}
}
void Winner( bool bW ){
system("CLS");
cout << endl << endl << endl << endl << endl << endl << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[0] << " ß " << SpielBrett[1] << " ß " << SpielBrett[2] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[3] << " ß " << SpielBrett[4] << " ß " << SpielBrett[5] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[6] << " ß " << SpielBrett[7] << " ß " << SpielBrett[8] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
if( bW ){
cout << endl << endl << endl << endl;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
cout << " ß ß" << endl;
cout << " ß HERZLICHEN GLUECKWUNSCH ß" << endl;
cout << " ß ß" << endl;
printf( " ß Spieler : (%d) hat das Spiel ß\n",iPlayer);
cout << " ß ß" << endl;
cout << " ß GEWONNEN !!! ß" << endl;
cout << " ß ß" << endl;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
for( int i =0; i < 20; i++ ){
system("Color 1");
system("Color 2");
system("Color 3");
system("Color 4");
system("Color 5");
system("Color 6");
system("Color 7");
system("Color 8");
system("Color 9");
system("Color 0a");
}
}// if
else if( !bW ){
cout << "Keiner hat gewonnen. " << endl;
}
Sleep( 1000 );
}
void Game(){
do{
//Zeichen festlegen ( Player 1 = X ; Player 2 = O )
if( iPlayer == 1 ){
cZeichen = 'X';
}
else if ( iPlayer == 2 ){
cZeichen = 'O';
}
system("CLS");
cout << endl << endl << endl << endl << endl << endl << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[0] << " ß " << SpielBrett[1] << " ß " << SpielBrett[2] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[3] << " ß " << SpielBrett[4] << " ß " << SpielBrett[5] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[6] << " ß " << SpielBrett[7] << " ß " << SpielBrett[8] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
//Schleife zur Kontrolle ob ein "korrekter" Zug gemacht wurde
do{
bInput = true;
cin >> cEingabe;
//EingabeKontrolle
if( cEingabe == '1' && SpielBrett[0] == '1' ) {
SpielBrett[0] = cZeichen;
}
else if(cEingabe == '2' && SpielBrett[1] == '2' ){
SpielBrett[1] = cZeichen;
}
else if(cEingabe == '3' && SpielBrett[2] == '3' ){
SpielBrett[2] = cZeichen;
}
else if(cEingabe == '4' && SpielBrett[3] == '4' ){
SpielBrett[3] = cZeichen;
}
else if(cEingabe == '5' && SpielBrett[4] == '5' ){
SpielBrett[4] = cZeichen;
}
else if(cEingabe == '6' && SpielBrett[5] == '6' ){
SpielBrett[5] = cZeichen;
}
else if(cEingabe == '7' && SpielBrett[6] == '7' ){
SpielBrett[6] = cZeichen;
}
else if(cEingabe == '8' && SpielBrett[7] == '8' ){
SpielBrett[7] = cZeichen;
}
else if(cEingabe == '9' && SpielBrett[8] == '9' ){
SpielBrett[8] = cZeichen;
}
else{
cout << " Falsche Eingabe ! Versuche es noch einmal ! " << endl;
bInput = false;
Sleep(2000);
}//else
}while( !bInput ); //EingabeKontrolle
//Winner Check
if( SpielBrett[0] != '1' ){
if( SpielBrett[1] == SpielBrett[0] && SpielBrett[2] == SpielBrett[0] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[3] == SpielBrett[0] && SpielBrett[6] == SpielBrett[0] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
}
if( SpielBrett[4] != '5' ){
if( SpielBrett[3] == SpielBrett[4] && SpielBrett[5] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[1] == SpielBrett[4] && SpielBrett[7] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[0] == SpielBrett[4] && SpielBrett[8] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[2] == SpielBrett[4] && SpielBrett[6] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
}
if( SpielBrett[8] != '9' ){
if( SpielBrett[2] == SpielBrett[8] && SpielBrett[5] == SpielBrett[8] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[6] == SpielBrett[8] && SpielBrett[7] == SpielBrett[8] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
//Unentschieden
if ( SpielBrett[0] != '1' &&
SpielBrett[1] != '2' &&
SpielBrett[2] != '3' &&
SpielBrett[3] != '4' &&
SpielBrett[4] != '5' &&
SpielBrett[5] != '6' &&
SpielBrett[6] != '7' &&
SpielBrett[7] != '8' &&
SpielBrett[8] != '9' &&
!bGameOver ){
bGameOver = true;
bWinner = false;
bInput = false;
}
}//Winner Check
//Auch der andere Spieler will mal an der Reihe sein :)
if( iPlayer == 1 && bInput == true ){
iPlayer = 2;
}
else if ( iPlayer == 2 ){
iPlayer = 1;
}
}while( !bGameOver ); // Solange GameOver == False , kein Ende !
Winner( bWinner );
}
void Reset( char *Felder, int iElemente ){ // SpielBrett[0] ~> FALSCH !!!
Felder[0] = '1';
Felder[1] = '2';
Felder[2] = '3';
Felder[3] = '4';
Felder[4] = '5';
Felder[5] = '6';
Felder[6] = '7';
Felder[7] = '8';
Felder[8] = '9';
bWinner = false;
bGameOver = false;
bAgain = false;
}
void End( bool *bA ){
char cA;
cout << "Wollen Sie nochmal spielen ? (Y/N)" << endl;
cin >> cA;
if( cA == 'y' || cA == 'Y' ){
*bA = true;
}
else if( cA == 'n' || cA == 'N' ){
*bA = false;
}
} Felder[4] = '5';
Felder[5] = '6';
Felder[6] = '7';
Felder[7] = '8';
Felder[8] = '9';
bWinner = false;
bGameOver = false;
bAgain = false;
}[/SPOILER]
void End( bool *bA ){
char cA;
cout << "Wollen Sie nochmal spielen ? (Y/N)" << endl;
cin >> cA;
if( cA == 'y' || cA == 'Y' ){
*bA = true;
}
else if( cA == 'n' || cA == 'N' ){
*bA = false;
}
}
Ich hab Euch vorsichtshalber den GANZEN Code einmal reingestellt.
Hoffe Ihr könnt was damit anfangen, und ich bitte Euch nicht "andere
Fehler" oder Code-Stylistische "Fehler" zu beheben.
Dass ( system() ) nicht gerne bentutzt wird weiß ich auch, genauso
wie andere Elemente meines Codes.
Saluti a Tutti ( Mfg )
jookerxxx
ich habe vor 2 Tagen angefangen an einem Tic Tac Toe Game zu arbeiten.
Das Game ist noch "sozusagen" in der "Beta-Version" da es noch nicht vollständig ist( mit Menüs etc. ). Dennóch habe ich da zwei Probleme die mir einfach keine Ruhe lassen, und die ich auch versucht habe zu beheben.Wie die Überschrift es sagt, vermute ich , dass es an einer falschen verwendung mit Arrays in Bezug auf Funktionsparameter liegt :o ...
Hier die zwei Probleme:
1. Sobald man aufgefordert wird ein zweites Mal zu spielen und dies Tut,
...wird die Funktion Reset() zwar aufgerufen, jedoch erfüllt sie ihren zweck nicht.
2. Sobald man das zweite Mal das Spiel durchgespielt hat, beendet sich das ...Programm einfach.
Ich hoffe das Problem ist gut genug geschildert, bin nicht der beste in Deutsch xD, ´*hust* Immer diese Italiener *hust* xD
Danke schonmal im Voraus , falls es Antworten gibt.
Hier der Code:
// Copyright by Sterminio Productions ©
#include <iostream>
#include <windows.h>
using namespace std;
#define WIN32_LEAN_AND_MEAN //Eher SELTEN - VERWENDETE Teile aus <windows.h> nicht verwenden
//SpielBrett
char SpielBrett[10] = { "123456789" };
//GameOver Bedingung
bool bGameOver = false;
//Wer ist am Zug?
int iPlayer = 1;
//Eingabe
char cEingabe;
//Zeichen setzen
char cZeichen;
//Titel Screen
void TitelScreen();
//Korrekte Eingabe
bool bInput;
//Gibt es einen Gewinner ?
bool bWinner = false;
//Winner Price
void Winner( bool bW );
// Nochmal spielen ?
bool bAgain = true;
void End( bool *bA );
//Game Funktion
void Game();
//Reset Funktion
void Reset( char *Felder, int iElemente );
int main(){
//TitelScreen
//TitelScreen();
//SpielUmgebung Setzen
system("Color 0a");
Game();
End( &bAgain );
if( bAgain == true ){
Game();
Reset( SpielBrett, sizeof( SpielBrett )/sizeof( SpielBrett[0] ) );
}
else if( bAgain == false ){
exit(0);
}
return 0;
}
void TitelScreen(){
system("Color 4");
cout << endl << endl << endl << endl << endl << endl ;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
cout << " ß ß" << endl;
cout << " ß TIC TAC TOE ß" << endl;
cout << " ß ß" << endl;
cout << " ß ß" << endl;
cout << " ß ß" << endl;
cout << " ß ß" << endl;
cout << " ß Copyright Sterminio Productions ß" << endl;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
for( int i =0; i < 20; i++ ){
system("Color 1");
system("Color 2");
system("Color 3");
system("Color 4");
system("Color 5");
system("Color 6");
system("Color 7");
system("Color 8");
system("Color 9");
system("Color 0");
}
}
void Winner( bool bW ){
system("CLS");
cout << endl << endl << endl << endl << endl << endl << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[0] << " ß " << SpielBrett[1] << " ß " << SpielBrett[2] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[3] << " ß " << SpielBrett[4] << " ß " << SpielBrett[5] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[6] << " ß " << SpielBrett[7] << " ß " << SpielBrett[8] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
if( bW ){
cout << endl << endl << endl << endl;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
cout << " ß ß" << endl;
cout << " ß HERZLICHEN GLUECKWUNSCH ß" << endl;
cout << " ß ß" << endl;
printf( " ß Spieler : (%d) hat das Spiel ß\n",iPlayer);
cout << " ß ß" << endl;
cout << " ß GEWONNEN !!! ß" << endl;
cout << " ß ß" << endl;
cout << " ßßßßßßßßßßßßßßßßßßßßßßßßß ßßßßßßßßßßßßßßßßßßßß" << endl;
for( int i =0; i < 20; i++ ){
system("Color 1");
system("Color 2");
system("Color 3");
system("Color 4");
system("Color 5");
system("Color 6");
system("Color 7");
system("Color 8");
system("Color 9");
system("Color 0a");
}
}// if
else if( !bW ){
cout << "Keiner hat gewonnen. " << endl;
}
Sleep( 1000 );
}
void Game(){
do{
//Zeichen festlegen ( Player 1 = X ; Player 2 = O )
if( iPlayer == 1 ){
cZeichen = 'X';
}
else if ( iPlayer == 2 ){
cZeichen = 'O';
}
system("CLS");
cout << endl << endl << endl << endl << endl << endl << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[0] << " ß " << SpielBrett[1] << " ß " << SpielBrett[2] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[3] << " ß " << SpielBrett[4] << " ß " << SpielBrett[5] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
cout << " ß " << SpielBrett[6] << " ß " << SpielBrett[7] << " ß " << SpielBrett[8] << " ß" << endl;
cout << " ßßßßßßßßßßßßß" << endl;
//Schleife zur Kontrolle ob ein "korrekter" Zug gemacht wurde
do{
bInput = true;
cin >> cEingabe;
//EingabeKontrolle
if( cEingabe == '1' && SpielBrett[0] == '1' ) {
SpielBrett[0] = cZeichen;
}
else if(cEingabe == '2' && SpielBrett[1] == '2' ){
SpielBrett[1] = cZeichen;
}
else if(cEingabe == '3' && SpielBrett[2] == '3' ){
SpielBrett[2] = cZeichen;
}
else if(cEingabe == '4' && SpielBrett[3] == '4' ){
SpielBrett[3] = cZeichen;
}
else if(cEingabe == '5' && SpielBrett[4] == '5' ){
SpielBrett[4] = cZeichen;
}
else if(cEingabe == '6' && SpielBrett[5] == '6' ){
SpielBrett[5] = cZeichen;
}
else if(cEingabe == '7' && SpielBrett[6] == '7' ){
SpielBrett[6] = cZeichen;
}
else if(cEingabe == '8' && SpielBrett[7] == '8' ){
SpielBrett[7] = cZeichen;
}
else if(cEingabe == '9' && SpielBrett[8] == '9' ){
SpielBrett[8] = cZeichen;
}
else{
cout << " Falsche Eingabe ! Versuche es noch einmal ! " << endl;
bInput = false;
Sleep(2000);
}//else
}while( !bInput ); //EingabeKontrolle
//Winner Check
if( SpielBrett[0] != '1' ){
if( SpielBrett[1] == SpielBrett[0] && SpielBrett[2] == SpielBrett[0] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[3] == SpielBrett[0] && SpielBrett[6] == SpielBrett[0] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
}
if( SpielBrett[4] != '5' ){
if( SpielBrett[3] == SpielBrett[4] && SpielBrett[5] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[1] == SpielBrett[4] && SpielBrett[7] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[0] == SpielBrett[4] && SpielBrett[8] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[2] == SpielBrett[4] && SpielBrett[6] == SpielBrett[4] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
}
if( SpielBrett[8] != '9' ){
if( SpielBrett[2] == SpielBrett[8] && SpielBrett[5] == SpielBrett[8] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
if( SpielBrett[6] == SpielBrett[8] && SpielBrett[7] == SpielBrett[8] ){
bGameOver = true;
bWinner = true;
bInput = false;
}
//Unentschieden
if ( SpielBrett[0] != '1' &&
SpielBrett[1] != '2' &&
SpielBrett[2] != '3' &&
SpielBrett[3] != '4' &&
SpielBrett[4] != '5' &&
SpielBrett[5] != '6' &&
SpielBrett[6] != '7' &&
SpielBrett[7] != '8' &&
SpielBrett[8] != '9' &&
!bGameOver ){
bGameOver = true;
bWinner = false;
bInput = false;
}
}//Winner Check
//Auch der andere Spieler will mal an der Reihe sein :)
if( iPlayer == 1 && bInput == true ){
iPlayer = 2;
}
else if ( iPlayer == 2 ){
iPlayer = 1;
}
}while( !bGameOver ); // Solange GameOver == False , kein Ende !
Winner( bWinner );
}
void Reset( char *Felder, int iElemente ){ // SpielBrett[0] ~> FALSCH !!!
Felder[0] = '1';
Felder[1] = '2';
Felder[2] = '3';
Felder[3] = '4';
Felder[4] = '5';
Felder[5] = '6';
Felder[6] = '7';
Felder[7] = '8';
Felder[8] = '9';
bWinner = false;
bGameOver = false;
bAgain = false;
}
void End( bool *bA ){
char cA;
cout << "Wollen Sie nochmal spielen ? (Y/N)" << endl;
cin >> cA;
if( cA == 'y' || cA == 'Y' ){
*bA = true;
}
else if( cA == 'n' || cA == 'N' ){
*bA = false;
}
} Felder[4] = '5';
Felder[5] = '6';
Felder[6] = '7';
Felder[7] = '8';
Felder[8] = '9';
bWinner = false;
bGameOver = false;
bAgain = false;
}[/SPOILER]
void End( bool *bA ){
char cA;
cout << "Wollen Sie nochmal spielen ? (Y/N)" << endl;
cin >> cA;
if( cA == 'y' || cA == 'Y' ){
*bA = true;
}
else if( cA == 'n' || cA == 'N' ){
*bA = false;
}
}
Ich hab Euch vorsichtshalber den GANZEN Code einmal reingestellt.
Hoffe Ihr könnt was damit anfangen, und ich bitte Euch nicht "andere
Fehler" oder Code-Stylistische "Fehler" zu beheben.
Dass ( system() ) nicht gerne bentutzt wird weiß ich auch, genauso
wie andere Elemente meines Codes.
Saluti a Tutti ( Mfg )
jookerxxx