Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
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 |
#include <iostream> namespace Spiel { char Spielfeld[] = {'0','1','2','3','4','5','6','7','8'}; int Turn; } void GameTurn(); void resetSpielfeld(char cCHar[]); void resetTurn(int iInt); void main() { using namespace std; using namespace Spiel; char s1 = '|'; char s2 = '-'; char p = '+'; cout << Spielfeld[0] << s1 << Spielfeld[1] << s1 << Spielfeld[2] << endl; cout << s2 << p << s2 << p << s2 << endl; cout << Spielfeld[3] << s1 << Spielfeld[4] << s1 << Spielfeld[5] << endl; cout << s2 << p << s2 << p << s2 << endl; cout << Spielfeld[6] << s1 << Spielfeld[7] << s1 << Spielfeld[8] << endl; // Aufbau des Spielfeldes GameTurn(); } void GameTurn() { using namespace std; using namespace Spiel; char Index; bool GameOver; char PlayerMark; bool PlayerWin; char PlayAgain; for ( Turn = 1; Turn < 10; ++Turn) { // allgemener Spielzug,zählt den aktuellen Zug if ( Turn % 2 == 0 ) { PlayerMark = 'O'; } else { PlayerMark = 'X';//bestimmt welcher Spieler an der Reihe ist } do { cin >> Index;// nimmt die Eingabe des Spielers an; Spieler X beginnt, dann folgt Spieler O cout << Index << PlayerMark << endl; // nur ein kleiner Test ob sich die Variablen PlayerMArk und Index verändern; funtioniert if (Spielfeld[Index] != 'O') { if (Spielfeld[Index] != 'X') { Spielfeld[Index] = PlayerMark; /* bestimmt ob das Feld noch frei ist, wenn ja, wird dem Feld der Wert der Variable PlayerMark zugewiesen; Dies geschieht aktuell nicht */ } } if (Spielfeld[0] == Spielfeld[1] == Spielfeld[2] || Spielfeld[0] == Spielfeld[3] == Spielfeld[6] || Spielfeld[8] == Spielfeld[7] == Spielfeld[6] || Spielfeld[8] == Spielfeld[5] == Spielfeld[2] || Spielfeld[4] == Spielfeld[0] == Spielfeld[8] || Spielfeld[4] == Spielfeld[2] == Spielfeld[6] || Spielfeld[4] == Spielfeld[3] == Spielfeld[5] || Spielfeld[4] == Spielfeld[1] == Spielfeld[7]) { /* wenn drei in einer Reihe liegende Felder den gleichen Wert besitzen wechseln sowohl GameOver als auch PlayerWin ihren Wert zu true; der do-loop wird beendet*/ GameOver = true; PlayerWin = true; } } while (GameOver = false); } if (GameOver == true) { if (PlayerWin == true) { cout << "Player " << PlayerMark << "wins" << endl; /* der Spieler der am Zug ist während GameWin zu true wechselt wird als Gewinner angezeigt */ } cout << "Play again?" << endl; cout << "yes(y) or no(n)" << endl; cin >> PlayAgain;// fragt nach einem erneutem game if (PlayAgain == 'y') { resetSpielfeld(Spielfeld[]); resetTurn(Turn); /* setzt sowohl das Spielfeld als auch die Variable Turn zurück; Allerdings fordert Spielfeld einen Index Wert; dann jedoch ist der array mit dem in dem argument array in resetSpielfeld inkompitabel. Hierfür weiß ich keine Lösung*/ } } } |
Zeile 5Wo wird Turn definiert (Zeile 39)
C-/C++-Quelltext |
|
1 2 3 |
//... for ( Turn = 1; Turn < 10; ++Turn) { //... |
C-/C++-Quelltext |
|
1 2 3 |
//... for (int Turn = 1; Turn < 10; ++Turn) { //... |
C-/C++-Quelltext |
|
1 2 3 4 |
//... int Turn; } //... |
C-/C++-Quelltext |
|
1 2 3 |
//... for ( Turn = 1 /* ZURÜCKSETZEN */; Turn < 10; ++Turn) { //... |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
//... char Index = ... //je nach dem mit welchem Wert du initalisieren möchtest...; bool GameOver = false; char PlayerMark = ...; bool PlayerWin = ...; char PlayAgain = ...; //... |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
//... while (GameOver == false){ for (int Turn = 1; Turn < 10; ++Turn) { // allgemener Spielzug,zählt den aktuellen Zug //... } } //... |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Harry222« (04.07.2011, 21:13)
Community-Fossil
Visual C++ Express nimmt das einrücken automatisch vor, wie sehe denn ein gut eingerückter Code aus?Die Einrückung ist grausig.
In Zeile 5 im namespace Feld, da ich Turn in mehreren Funktionen benötige .Zitat
Wo wird Turn definiert (Zeile 39)
Das while gehört eigentlich zu einem do in Zeile 45, ja und eigentlich sollte das auch ein Vergleich sein .Zitat
was macht das while in Zeile 68 und warum wird da kein Vergleich sondern eine Zuweisung durchgeführt
Zitat
Fehlercodes wären schön
Quellcode |
|
1 |
error C2059: Syntaxfehler: ']' |
Quellcode |
|
1 2 |
error C2664: 'resetSpielfeld': Konvertierung des Parameters 1 von 'char' in 'char []' nicht möglich 1> Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat |
Okay, auch wenns angenehm ist und ich es einfach mal testen wollteZitat
@Rexona for men: Versuch auf using namespace zu verzichten. Es spart vllt ein paar Sekunden beim Tippen aber kostet unter Umständen Stunden beim Debugen.
Community-Fossil
C-/C++-Quelltext |
|
1 |
resetSpielfeld(...); |
C-/C++-Quelltext |
|
1 |
resetSpielfeld(Spielfeld); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void IOwx::onClose() { if(m_TextPanel) { for(unsigned int page = 0; page < m_Parent->GetPageCount(); ++page) { if(m_Parent->GetPage(page) == m_TextPanel) { m_Parent->DeletePage(page); } } m_TextPanel = NULL; } } |
Ist geändertZitat
1. Es heißt int main. Alles andere ist nicht standardkonform.
Ja, ist mir jetzt auch erst aufgefallen, allerdings ne schlechte Angewohnheit von mirZitat
2. Entscheide dich für Englisch ODER Deutsch (am besten auch in den Kommentaren)
Bisher bin ich immer erst zu dem Punkt gekommen, wo ein Spielfeld eigentlich den Wert von PlayerMark annehmen sollte, sprichZitat
Falsches Programmverhalten?
Ich hab jetzt die [] aus dem default argument aus der Funktion resetSpielfeld rausgenommen und bekomme in der Richtung jetzt keinen Fehler mehr, allerdings weiß ich nicht ob das so richtig ist .Zitat
müsstest du eigentlich so aufrufen:
C-/C++-Quelltext
1
resetSpielfeld(Spielfeld);
Dann wird aber eine unaufgelöstes externes Symbol Fehlermeldung kommen weil die Funktion nicht definiert ist. (wenn das der komplette Code ist)
Zitat
(wenn das der komplette Code ist)
C-/C++-Quelltext |
|
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 |
#include <iostream> int GameTurn(); int main() { using namespace std; char Spielfeld[] = {'0','1','2','3','4','5','6','7','8'}; char s1 = '|'; char s2 = '-'; char p = '+'; // Aufbau des Spielfeldes cout << Spielfeld[0] << s1 << Spielfeld[1] << s1 << Spielfeld[2] << endl; cout << s2 << p << s2 << p << s2 << endl; cout << Spielfeld[3] << s1 << Spielfeld[4] << s1 << Spielfeld[5] << endl; cout << s2 << p << s2 << p << s2 << endl; cout << Spielfeld[6] << s1 << Spielfeld[7] << s1 << Spielfeld[8] << endl; GameTurn(); } int GameTurn() { using namespace std; char Spielfeld[] = {'0','1','2','3','4','5','6','7','8'}; int Turn; char Index; bool GameOver; char PlayerMark; bool PlayerWin; for ( Turn = 1; Turn < 10; ++Turn)// allgemener Spielzug,zählt den aktuellen Zug { if ( Turn % 2 == 0 ) { PlayerMark = 'O'; } else { PlayerMark = 'X';//bestimmt welcher Spieler an der Reihe ist } do { cin >> Index;// nimmt die Eingabe des Spielers an; Spieler X beginnt, dann folgt Spieler O cout << Index << PlayerMark << endl; // nur ein kleiner Test ob sich die Variablen PlayerMArk und Index verändern; funtioniert if (Spielfeld[Index] != 'O') { if (Spielfeld[Index] != 'X') { Spielfeld[Index] = PlayerMark; //prüft ob das Feld noch frei ist wenn ja wird es besetzt } } if (Spielfeld[0] == Spielfeld[1] == Spielfeld[2] || Spielfeld[0] == Spielfeld[3] == Spielfeld[6] || Spielfeld[8] == Spielfeld[7] == Spielfeld[6] || Spielfeld[8] == Spielfeld[5] == Spielfeld[2] || Spielfeld[4] == Spielfeld[0] == Spielfeld[8] || Spielfeld[4] == Spielfeld[2] == Spielfeld[6] || Spielfeld[4] == Spielfeld[3] == Spielfeld[5] || Spielfeld[4] == Spielfeld[1] == Spielfeld[7])//prüft ob eine Gewinnbedingung erfüllt wurde { GameOver = true; PlayerWin = true; } } while (GameOver == false); } if (GameOver == true) { if (PlayerWin == true) { cout << "Player " << PlayerMark << "wins" << endl; // zeigt den Spieler am Zug als Gewinner an } } return 0; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
int main(string args[]) { for(int i=0; i<10;++i) { //... } } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
int main(string args[]) { for(int i=0; i<10;++i) { //... } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
for ( Turn = 1; Turn < 10; ++Turn)// allgemener Spielzug,zählt den aktuellen Zug { if ( Turn % 2 == 0 ) { PlayerMark = 'O'; } else { PlayerMark = 'X';//bestimmt welcher Spieler an der Reihe ist } do { cin //... } while (GameOver == false); //... } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
for ( Turn = 1; Turn < 10; ++Turn)// allgemener Spielzug,zählt den aktuellen Zug { if ( Turn % 2 == 0 ) { PlayerMark = 'O'; } else { PlayerMark = 'X';//bestimmt welcher Spieler an der Reihe ist } do { //... } while (GameOver == false); //... } |
Werbeanzeige