Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Variabeln außerhalb while-Schleife wirken wie Pointer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.03.2013, 16:21 Uhr
~Solly
Gast


Wie ihr bereits lesen könnt, verstehe ich was nicht. Warum sind Variabeln, die außerhalb einer while-Schleife liegen, so wie Pointer? Wenn ich sie in der while-Schleife per cout anzeigen lassen will, dann erscheint 0x.......

Warum ist das so? Wie löst man so ein Problem? Mit Klassen? Namespaces?

Danke im Voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.03.2013, 16:49 Uhr
Tommix



Hallo,
zeig mal ein bißchen Code.

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.03.2013, 17:04 Uhr
~Solomon
Gast


Keine Sorge, ich bin Solly.

Ich mache ein Tic-Tac-Toe-Spiel auf C++. Alles funktioniert gut, also es wechselt automatisch die Spieler ab und ich kann Positionen nicht überschreiben. Aber wenn ich jetzt schon Richtung Vergleich und Ergebnis programmiere, kommen nur komische Sachen raus.

Der Code:


C++:
#include <iostream>
using namespace std;

int main()
{
    // Variabeln
    bool x_turn, y_turn;
    char matrix[3][3] = { {'1', '2', '3'},
        {'4', '5', '6'},
        {'7', '8', '9'} };
    int array[2][9] = { (0, 0, 0, 0, 0, 0, 0, 0, 0),
                        (0, 0, 0, 0, 0, 0, 0, 0, 0)};

    while(1) {
        int player_x, player_y;
        int fx, sx, fy, sy;
        int i = -1;
        int j = 0;
        
        // Feld zeichnen
        do {
            if(i == 2) {
                i = -1;
                j++;
                cout << endl;
            }
            i++;
            cout << matrix[j][i];
        } while(i != 3 && j != 3);
        
        cout << "\r";
        
        
        // Die Spieler
        if(x_turn == true && y_turn == false)
        {
            while(array[0][player_x - 1] != 0 || array[1][player_x - 1] != 0)
            {
                cout << "Spieler X ist dran: ";
                cin >> player_x;
            }
            x_turn = false;
            y_turn = true;
            if(player_x <= 3)
            {
                fx = 0;
                sx = player_x -1;
            }
            if(player_x <= 6)
            {
                fx = 1;
                sx = player_x - 4;
            }
            if(player_x <= 9)
            {
                fx = 2;
                sx = player_x - 7;
            }
            matrix[fx][sx] = 'X';
            array[0][player_x - 1] = 1;
        } else if(x_turn == false && y_turn == true) {
            while(array[0][player_y - 1] != 0 || array[1][player_y - 1] != 0) {
                cout << "Spieler Y ist dran: ";
                cin >> player_y;
            }
            x_turn = true;
            y_turn = false;
            if(player_y <= 3)
            {
                fy = 0;
                sy= player_y;
            }
            if(player_y <= 6)
            {
                fy = 1;
                sy = player_y - 4;
            }
            if(player_y <= 9)
            {
                fy = 2;
                sy = player_y - 7;
            }
            matrix[fy][sy] = 'O';
            array[1][player_y - 1] = 2;
        } else {
            cout << "Spieler X ist dran: ";
            cin >> player_x;
            x_turn = false;
            y_turn = true;
            if(player_x <= 3)
            {
                fx = 0;
                sx = player_x - 1;
            }
            if(player_x <= 6)
            {
                fx = 1;
                sx = player_x - 4;
            }
            if(player_x <= 9)
            {
                fx = 2;
                sx = player_x - 7;
            }
            matrix[fx][sx] = 'X';
            array[0][player_x - 1] = 1;
        }
        int new_array[9];
        int k;
        for(k = 0; k < 8; k++)
        {
            if(array[0][k] == 1)
            {
                new_array[k] = array[0][k];
            } else if(array[1][k] == 2) {
                new_array[k] = array[1][k];
            }
            cout << new_array[k];
        }

    }
}


Ich hoffe, du verstehst ihn. Ich hab so ein Gefühl, ich habe ihn sehr kompliziert geschrieben.

Das kommt in der Konsole raus:


Code:
123
456
789
Spieler X ist dran: 1
13276710148918161632767172365915932767X23
456
789
Spieler Y ist dran: 4
13276712148918161632767172365915932767X23
O56
789
Spieler X ist dran: 6
1327671214891816161172365915932767X23
O5X
789
Spieler Y ist dran: 7
1327671214891816161232767X23
O5X
O89
Spieler X ist dran: 1
Spieler X ist dran: 2
111214891816161232767XX3
O5X
O89
Spieler Y ist dran: 5
111221232767XX3
OOX
O89
Spieler X ist dran: 7
Spieler X ist dran: 8
11122121XX3
OOX
OX9
Spieler Y ist dran:
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.03.2013, 17:08 Uhr
~Solomon
Gast


Problem gelöst! Sry. Wenn ich den Array nicht definiere, dann kommen komische Sachen raus, ähnlich wenn ich eine int Funktion gleich, ohne sie zu definieren, zum cout herausgebe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.03.2013, 17:54 Uhr
~Solomon
Gast


Ich freue euch mitteilen zu dürfen, dass ich gerade Tic-Tac-Toe fertig programmiert habe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: