Du bist nicht angemeldet.

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

11

30.12.2007, 12:25

Ja, aber wo ist da das Spiel? Das ist ja dann einfach eine Simulation, die der Computer innherhalb einer tausendstel Sekunde berechnet hat.

OK. Ich hab im Internet eine grobe Maussteuerung gefunden und für meine Zwecke mal modifiziert. Leider gibt es da einige ernsthafte Probleme ;)...

Hier mal der Code:

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
#include <windows.h> 
#include <iostream>

using namespace std;
// Initialisiert die Maus und gibt die Anzahl der Maustasten zurück 

DWORD mouseInit () 
{ 
    DWORD mode; 
    GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),&mode); 
    SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),mode|ENABLE_MOUSE_INPUT); 

    DWORD buttons; 
    GetNumberOfConsoleMouseButtons(&buttons); 

    return buttons; 
} 

// Zeigt oder versteckt den Mauscursor 

void showCursor (bool show = true) 
{ 
    ShowCursor(show); 
} 

int main () 
{ 
    mouseInit(); 
    showCursor(); 

    bool running = true; 
    do 
    { 
        DWORD count; 
        INPUT_RECORD ir; 
        ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE),&ir,1,&count); 
    
        

       switch(ir.EventType) 
        { 
            case MOUSE_EVENT: 
              //   cout << "X: " << ir.Event.MouseEvent.dwMousePosition.X; 

              //   cout << " Y: " << ir.Event.MouseEvent.dwMousePosition.Y; 

                if(ir.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED) 
              //      cout << " | Linke Taste gedrueckt!"; 

                if(ir.Event.MouseEvent.dwButtonState & RIGHTMOST_BUTTON_PRESSED) 
              //    cout << " | Rechte Taste gedrueckt!"; 

            break; 
        } 

       cout << " Bitte hier Klicken: [ ] " << endl;
                    if ((ir.Event.MouseEvent.dwButtonState && FROM_LEFT_1ST_BUTTON_PRESSED && ir.Event.MouseEvent.dwMousePosition.X == 33 && ir.Event.MouseEvent.dwMousePosition.Y == 0) || 
                        (ir.Event.MouseEvent.dwButtonState && FROM_LEFT_1ST_BUTTON_PRESSED && ir.Event.MouseEvent.dwMousePosition.X == 34 && ir.Event.MouseEvent.dwMousePosition.Y == 0) ||
                        (ir.Event.MouseEvent.dwButtonState && FROM_LEFT_1ST_BUTTON_PRESSED && ir.Event.MouseEvent.dwMousePosition.X == 35 && ir.Event.MouseEvent.dwMousePosition.Y == 0))
                {
                    cout << "Auf richtiges Feld geklickt!" << endl;
                }
    } 
    while(running); 
    return 0; 
}


Ich will hier eben, dass es das "Bitte Klicken" nur einmal anzeigt und nicht immer wenn man die mausbewegt...

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

12

30.12.2007, 13:08

Sieht erstmal ganz interessant aus, hat aber nen paar ungereimtheiten drin ;)

:arrow: Dir sollte klar sein, dass auch Mausbewegung etc. schon ein Event ist - wenn die Schrift nur einmal kommen soll dann gehört sie vor den Schleifenstart
:arrow: Deine Abfrage hat schlicht die falschen Koordinaten drin. Wenn du mal nachzählst wirst du feststellen, dass [ ] nicht bei x 33-35 sondern bei x 21-23 zu finden ist.
:arrow: Deine switch-case Anweisung hätteste dir sparen können wenn du sie eh auskommentierst
:arrow: Deine If-Abfrage macht ziemlich oft das selbe
:arrow: Du hast vergessen, das Programm irgendwann zu beenden.

In Code das, was ich geschrieben hab:

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
int main ()
{
    mouseInit();
    showCursor();

    bool running = true;

    std::cout << " Bitte hier Klicken: [ ] " << std::endl;
    do
    {
        DWORD count;
        INPUT_RECORD ir;
        ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE),&ir,1,&count);


        if (ir.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED &&
            ir.Event.MouseEvent.dwMousePosition.Y == 0 &&
            (ir.Event.MouseEvent.dwMousePosition.X == 21 ||
             ir.Event.MouseEvent.dwMousePosition.X == 22 ||
             ir.Event.MouseEvent.dwMousePosition.X == 23))
        {
            std::cout << "Auf richtiges Feld geklickt!" << std::endl;   
            Sleep(2000);
            running = false;
        }
    } while(running);

    return 0;
}

13

30.12.2007, 13:45

Ahhh, vielen Dank :idea:
jetzt kann ich die Maussteuerung auf jeden Fall verwenden.

Ich hab jetzt mal das Grundgerüst erstellt:

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
TicTacToe - The Game
V 0.1
By raXor
*/

#include <iostream>
#include <windows.h>
using namespace std;

// Klassen

//

class CSpiel
{
public:

    // Memberfunktionen

    //

    void SpielStarten ();
    void Optionen ();
    void Info ();
    void Beenden ();
};

// Hauptprogramm

//

int main ()
{
    // Variablen

    // 

    int iAuswahl;
    CSpiel Menue;

    cout << "\n ~ ~ Willkommen bei TicTacToe ~ ~ " << endl;
    do
    {
        // Hauptmenü

    
        cout << "\n ~ ~ Hauptmenue ~ ~\n" << endl;
        cout << "       1 - Spiel Starten - 1" << endl;
        cout << "       2 -    Optionen   - 2" << endl;
        cout << "       3 - Informationen - 3" << endl;
        cout << "       4 - Spiel beenden - 4" << endl;
        cout << "         Auswahl ";
        cin >> iAuswahl;
        cout << "\n\n";

        switch (iAuswahl)
        {

        case (1):
            {
                Menue.SpielStarten ();
            }   break;

        case (2):
            {
                Menue.Optionen ();
            }   break;

        case (3):
            {
                Menue.Info ();
            }   break;

        case (4):
            {
                Menue.Beenden ();
            }   break;

        default:
            {
            cout << "Ungueltige Eingabe" << endl;
            }   break;
        }
    }   while (iAuswahl != 4);

    return 0;
}

// SpielStarten Funktion

// Aufgabe: Startet das Spiel und ruft die Spieldaten ab

void CSpiel::SpielStarten ()
{
    cout << "Spiel wird gestartet" << endl;
}   // SpielStarten Funktion Ende


// Optionen Funktion

// Aufgabe: Zur vornahme von Einstellungen

void CSpiel::Optionen ()
{
    cout << "Optionen werden abgerufen" << endl;
}   // Optionen Funktion Ende


// Info Funktion

// Aufgabe: Ausgabe der Informationen

void CSpiel::Info ()
{
    cout << "Informationen werden abgerufen" << endl;
}   // Info Funktion Ende


// Beenden Funktion

// Aufgabe: Spiel beenden

void CSpiel::Beenden ()
{
    cout << "Spiel wird beendet..." << endl;
    Sleep (1000);
    cout << "Bis zum naechsten Mal!" << endl;
    Sleep (500);
}   // Beenden Funktion Ende


Kritik / Verbesserungsvorschläger ?!

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

14

30.12.2007, 14:46

Klar -> sicherstellen, dass nicht das ganze Game spinnt, weil bei cin >> iAuswahl; jemand was anderes als ne Zahl schreibt ;)
das alte Thema also^^

Außerdem solltest du bei der Gelegenheit gleich überlegen, ob du nicht besser ne einheitliche Steuerung machst -> auch das Menu könnte man mit Maussupport ausstatten. Was aber nicht heißt, dass es zwangsläufig nur mit Maus gehen soll, sondern dass du sowohl auf die Eingabe einer Zahl als auch auf nen Mausklick reagierst.
Allerdings ist es deine Entscheidung, ob du das willst, denn es ist natürlich einiges an Aufwand für ne nette kleine Erweiterung.
Wenn du allerdings so ne Eingabe gescheit in eine Funktion auslagerst dürfte es problemlos möglich sein, sowas überall wieder anzuwenden.

Ansonsten musste schon erstmal bisschen Inhalt in das Gerüst bringen, damit es sinnvoll ist, Kritik zu üben.

15

30.12.2007, 15:48

Durch default: wird doch sichergestellt, dass nicht alles spinnt!
// edit: Oder auch nicht :D

Ja, mal sehen ob ich die Maussteuerung überall reinmache. Ich will schließlich nur ein "kleines" Programm schreiben und kein Overkill Prog.

Ich schreib auch erstmal das Prog ohne Maussteuerung und implementier das dann später, glaub ich.

16

30.12.2007, 16:49

So habs jetzt mal erweitert. Leider tut es mal wieder nicht und ich bin kurz vor knapp :D

Das mit den Zeigern hab ich eben noch nicht so drauf und globale Variablen sollte man vermeiden, also mach ichs nicht...

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
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
/*
TicTacToe - The Game
V 0.1
By raXor
*/

#include <iostream>
#include <windows.h>
using namespace std;

// Klassen

//

class CSpiel
{

public:

    // Memberfunktionen

    //

    void SpielStarten ();
    void DatenEingeben (int *px, int *py, int *pSpieler1, int *pSpieler2);
    void Optionen ();
    void Info ();
    void Beenden ();
};

// Hauptprogramm

//

int main ()
{
    // Variablen

    // 

    int iAuswahl;
    CSpiel Menue;

    cout << "\n ~ ~ Willkommen bei TicTacToe ~ ~ " << endl;
    do
    {
        // Hauptmenü

    
        cout << "\n ~ ~ Hauptmenue ~ ~\n" << endl;
        cout << "       1 - Spiel Starten - 1" << endl;
        cout << "       2 -    Optionen   - 2" << endl;
        cout << "       3 - Informationen - 3" << endl;
        cout << "       4 - Spiel beenden - 4" << endl;
        cout << "         Auswahl ";
        cin >> iAuswahl;
        cout << "\n\n";

        switch (iAuswahl)
        {

        case (1):
            {
                Menue.SpielStarten ();
            }   break;

        case (2):
            {
                Menue.Optionen ();
            }   break;

        case (3):
            {
                Menue.Info ();
            }   break;

        case (4):
            {
                Menue.Beenden ();
            }   break;

        default:
            {
            cout << "Ungueltige Eingabe" << endl;
            }   break;
        }
    }   while (iAuswahl != 4);

    return 0;
}

// Strukturen

//

struct S_Besetzt
{
    bool Besetzt;
};
 
// SpielStarten Funktion

// Aufgabe: Startet das Spiel und ruft die Spieldaten ab

void CSpiel::SpielStarten ()
{
    // Variablen

    CSpiel Abfrage;
    const int Breite = 3;   // Breite des Feldes

    const int Hoehe = 3;    // Hoehe des Feldes

    S_Besetzt Spieler1[Breite][Hoehe];
    S_Besetzt Spieler2[Breite][Hoehe];

    // Feld zeichnen

    for (int y=0; y<Hoehe; y++)
    {
        for (int x=0; x<Breite; x++)
        {
            if (Spieler1[x][y].Besetzt == false)
                cout << "       [ ] ";
            else 
                cout << "       [X] ";
            
            if (Spieler2[x][y].Besetzt == false)
                cout << "       [ ] ";
            else
                cout << "       [0] ";
        }

        cout << endl;
    }

    Abfrage.DatenEingeben (int &x, int &y, &Spieler1, &Spieler2);

    cout << "\nSpiel wird gestartet" << endl;
}   // SpielStarten Funktion Ende


// DatenEingeben Funktion:

// Aufgabe: Eingabe für den Spieler

void CSpiel::DatenEingeben (int *px, int *py, S_Besetzt *pSpieler1, S_Besetzt *pSpieler2)
{
    // Variablen

    // 

    const int Breite = 3;   // Breite des Feldes

    const int Hoehe = 3;    // Hoehe des Feldes

    

    // Koordinaten abfragen

    cout << "Spieler 1, bitte Koordinaten zur Setzung Deines Kreuzes eingeben\n";
    do
    {
        cout << "X - Position: ";
        cin >>  x;
    } while (x<1 || x>Breite);
    
        do
    {
        cout << "Y - Position: ";
        cin >>  y;
    } while (y<1 || y>Breite);
    
    Spieler1[x-1][y-1].Besetzt = true;

    cout << "Spieler 2, bitte Koordinaten zur Setzung Deiner Null eingeben\n";
    do
    {
        cout << "X - Position: ";
        cin >>  Breite;
    } while (x<1 || x>Breite);
    
        do
    {
        cout << "Y - Position: ";
        cin >>  Hoehe;
    } while (y<1 || y>Breite);
    
    Spieler2[x-1][y-1].Besetzt = true;
}   // Ende DatenEingeben


// Optionen Funktion

// Aufgabe: Zur vornahme von Einstellungen

void CSpiel::Optionen ()
{
    cout << "Optionen werden abgerufen" << endl;
}   // Optionen Funktion Ende


// Info Funktion

// Aufgabe: Ausgabe der Informationen

void CSpiel::Info ()
{
    cout << "Informationen werden abgerufen" << endl;
}   // Info Funktion Ende


// Beenden Funktion

// Aufgabe: Spiel beenden

void CSpiel::Beenden ()
{
    cout << "Spiel wird beendet..." << endl;
    Sleep (1000);
    cout << "Bis zum naechsten Mal!" << endl;
    Sleep (500);
}   // Beenden Funktion Ende



Quellcode

1
2
3
4
5
6
7
8
9
10
11
1>------ Build started: Project: Aufgabe 1, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:\users\oem\documents\visual studio 2008\projects\aufgabe 1\aufgabe 1\main.cpp(120) : error C2144: syntax error : 'int' should be preceded by ')'
1>c:\users\oem\documents\visual studio 2008\projects\aufgabe 1\aufgabe 1\main.cpp(120) : error C2660: 'CSpiel::DatenEingeben' : function does not take 0 arguments
1>c:\users\oem\documents\visual studio 2008\projects\aufgabe 1\aufgabe 1\main.cpp(120) : error C2059: syntax error : ')'
1>c:\users\oem\documents\visual studio 2008\projects\aufgabe 1\aufgabe 1\main.cpp(128) : error C2511: 'void CSpiel::DatenEingeben(int *,int *,S_Besetzt *,S_Besetzt *)' : overloaded member function not found in 'CSpiel'
1>        c:\users\oem\documents\visual studio 2008\projects\aufgabe 1\aufgabe 1\main.cpp(14) : see declaration of 'CSpiel'
1>Build log was saved at "file://c:\Users\OEM\Documents\Visual Studio 2008\Projects\Aufgabe 1\Aufgabe 1\Debug\BuildLog.htm"
1>Aufgabe 1 - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

17

30.12.2007, 21:09

Also deine 2 Fehler sind sehr eindeutig und einleuchtend -> findeste bestimmt selbst :)


Ich hab mir mal die Mühe gemacht, nicht nur diese 2 angezeigten Fehler zu entfernen, sondern so lange weiter zu modifizieren, bis das Teil eine nutzbare Version von deinem Quelltext darstellt. Ich muss dich warnen -> mit TicTacToe hat das leider noch recht wenig zu tun ;)

Also, nimm dir nochmal bisschen mehr Zeit, es muss nicht immer alles von heut auf morgen fertig werden.

18

31.12.2007, 10:35

Gestern saß ich bis 2 Uhr Nachts vor dem Code -> nix gefunden...
dann hab ich kurzerhand globale Variablen reingemacht und die Klasse gelöscht, da die eher unnötig war als nützlich.

Ich weiß :!: das man keine Globale Variablen verwenden soll, aber ich hab es einfach nicht anders hinbekommen.

Dann hab ich mich rangemacht, dass wenn man 2 mal die selben koordinaten eingbit, die abrage wiederholt wird...
Ich hab mir gedacht, einfach eine do, while Schleife! Aber es geht einfach nicht... Keine Ahnung warum, es MUSS doch gehen...

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
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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
/*
TicTacToe - The Game
V 0.1
By raXor
*/

#include <iostream>
#include <windows.h>
using namespace std;

// Strukturen

//

struct S_Besetzt
{
    bool Besetzt;
};

// Globale (WÜRG) Variablen

//

const int  Breite = 3;  // Breite des Feldes

const int Hoehe = 3;    // Hoehe des Feldes


S_Besetzt Spieler1[Breite][Hoehe];
S_Besetzt Spieler2[Breite][Hoehe];

// Prototypen


void SpielStarten ();
void DatenEingebenSpieler1 ();
void DatenEingebenSpieler2 ();
void Optionen ();
void Info ();
void Beenden ();
void SpielfeldAnzeigen ();

// Hauptprogramm

//

int main ()
{
    // Variablen

    // 

    int iAuswahl;

    cout << "\n ~ ~ Willkommen bei TicTacToe ~ ~ " << endl;
    do
    {
        // Hauptmenü

        cout << "\n ~ ~ Hauptmenue ~ ~\n" << endl;
        cout << "       1 - Spiel Starten - 1" << endl;
        cout << "       2 -    Optionen   - 2" << endl;
        cout << "       3 - Informationen - 3" << endl;
        cout << "       4 - Spiel beenden - 4" << endl;
        cout << "         Auswahl ";
        cin >> iAuswahl;
        cout << "\n\n";

        switch (iAuswahl)
        {

        case (1):
            {
                SpielStarten ();
            }   break;

        case (2):
            {
                Optionen ();
            }   break;

        case (3):
            {
                Info ();
            }   break;

        case (4):
            {
                Beenden ();
            }   break;

        default:
            {
            cout << "Ungueltige Eingabe" << endl;
            }   break;
        }
    }   while (iAuswahl != 4);

    return 0;
}


 
// SpielStarten Funktion

// Aufgabe: Startet das Spiel und ruft die Spieldaten ab

void SpielStarten ()
{
    bool PruefeSieger;

    
    do 
    {
    SpielfeldAnzeigen ();
    DatenEingebenSpieler1 ();
    SpielfeldAnzeigen ();
    DatenEingebenSpieler2 ();
    }   while (PruefeSieger = true);
    
}   // SpielStarten Funktion Ende


void SpielfeldAnzeigen ()
{
        // Variablen

    int x = 0;
    int y = 0;
    int j = 1;
    
    cout << "       1     2     3\n" << endl;
    // Feld zeichnen

    for (int y=0; y<Hoehe; y++)
    {
        cout << "   " << j++;
        for (int x=0; x<Breite; x++)
        {   
            if (Spieler1[x][y].Besetzt == true )
                cout << "  [X] ";
            else if (Spieler2[x][y].Besetzt == true)
                cout << "  [O] ";
            else 
                cout << "  [ ] ";

        
        }
    

        cout << endl;
    }
    
}


// DatenEingebenSpieler1 Funktion:

// Aufgabe: Eingabe für den Spieler1

void DatenEingebenSpieler1()
{
    // Variablen

    // 

    int x = 0;
    int y = 0;

    // Koordinaten abfragen Spieler 1

    cout << "\n Spieler 1, bitte Koordinaten zur Setzung Deines Kreuzes eingeben \n";
    
    do {
    do
    {
        cout << "   X - Position: ";
        cin >>  x;
    } while (x<1 || x>Breite);
    
        do
    {
        cout << "   Y - Position: ";
        cin >>  y;
    } while (y<1 || y>Breite);
    
    Spieler1[x-1][y-1].Besetzt = true;
    } while (Spieler2[x][y].Besetzt = false);

}   // Ende DatenEingebenSpieler1


// DatenEingeben Funktion:

// Aufgabe: Eingabe für den Spieler2

void DatenEingebenSpieler2()
{
    // Variablen

    // 

    int x = 0;
    int y = 0;

    // Koordinaten abfragen Spieler 2

    cout << "\n Spieler 2, bitte Koordinaten zur Setzung Deiner Null eingeben \n";
    do {
    do
    {
        cout << "   X - Position: ";
        cin >>  x;
    } while (x<1 || x>Breite);
    
        do
    {
        cout << "   Y - Position: ";
        cin >>  y;
    } while (y<1 || y>Breite);

    Spieler2[x-1][y-1].Besetzt = true;
    } while (Spieler1[x][y].Besetzt = false);

}   // Ende DatenEingeben Spieler 2


// Optionen Funktion

// Aufgabe: Zur vornahme von Einstellungen

void Optionen ()
{
    cout << "Optionen werden abgerufen" << endl;
}   // Optionen Funktion Ende


// Info Funktion

// Aufgabe: Ausgabe der Informationen

void Info ()
{
    cout << "Informationen werden abgerufen" << endl;
}   // Info Funktion Ende


// Beenden Funktion

// Aufgabe: Spiel beenden

void Beenden ()
{
    cout << "Spiel wird beendet..." << endl;
    Sleep (1000);
    cout << "Bis zum naechsten Mal!" << endl;
    Sleep (500);
}   // Beenden Funktion Ende


Zitat von »"raXor"«

Aber so spontan würde ich das denke ich hinbekommen.


*ichschiessmichtot*

rootnode

Frischling

Beiträge: 92

Wohnort: Aachen, Pontstraße

Beruf: Student

  • Private Nachricht senden

19

31.12.2007, 10:57

Ein Fehler ist schonmal hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
do
    {
    SpielfeldAnzeigen ();
    DatenEingebenSpieler1 ();
    SpielfeldAnzeigen ();
    DatenEingebenSpieler2 ();
    }    while (PruefeSieger = true);


Versuchs mal mit:

C-/C++-Quelltext

1
while (PruefeSieger == true);


Aber das ganze ist sowieso etwas komisch. PruefeSieger wird kurz vor der Schleife angelegt und NICHT initialisiert oO Da kannst du dir gar nicht sicher sein welcher Wert jetzt drin steht.

Außerdem solle so etwas wie PruefeSieger auf etwas höhrerem Scope stehen, oder irgendwie weitergegeben werden, ansonsten können andere Methoden den Wert doch überhaupt nicht verändern.

Dir fehlt also die Abbruchbedingung.

Hier die Stelle ist auch etwas komisch.

C-/C++-Quelltext

1
2
Spieler1[x-1][y-1].Besetzt = true;
    } while (Spieler2[x][y].Besetzt = false); 


Wenn du das so machst, dann kann ich als Spieler 1 auf alle Felder setzen wo Spieler 2 schon gesetzt hat. Aber neben seine Steine kann ich nicht setzen. Soll das so sein? oO

20

31.12.2007, 11:06

Prüfe Sieger habe ich noch gar nicht wirklich geschrieben. Es ist nur zu Testzwecken drinn, das ich das Feld unendlich lang abrufen kann.

Ich meinte eigentlich

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
// DatenEingebenSpieler1 Funktion: 

// Aufgabe: Eingabe für den Spieler1 

void DatenEingebenSpieler1() 
{ 
    // Variablen 

    // 

    int x = 0; 
    int y = 0; 

    // Koordinaten abfragen Spieler 1 

    cout << "\n    Spieler 1, bitte Koordinaten zur Setzung Deines Kreuzes eingeben \n"; 
    
  do { // <-------- DAS

    do 
    { 
        cout << "    X - Position: "; 
        cin >>  x; 
    } while (x<1 || x>Breite); 
    
        do 
    { 
        cout << "    Y - Position: "; 
        cin >>  y; 
    } while (y<1 || y>Breite); 
    
    Spieler1[x-1][y-1].Besetzt = true; 
} while (Spieler2[x][y].Besetzt = false)  // <-------- DAS


}    // Ende DatenEingebenSpieler1 


// DatenEingeben Funktion: 

// Aufgabe: Eingabe für den Spieler2 

void DatenEingebenSpieler2() 
{ 
    // Variablen 

    // 

    int x = 0; 
    int y = 0; 

    // Koordinaten abfragen Spieler 2 

    cout << "\n    Spieler 2, bitte Koordinaten zur Setzung Deiner Null eingeben \n"; 
    do { // <-------- DAS

    do 
    { 
        cout << "    X - Position: "; 
        cin >>  x; 
    } while (x<1 || x>Breite); 
    
        do 
    { 
        cout << "    Y - Position: "; 
        cin >>  y; 
    } while (y<1 || y>Breite); 

    Spieler2[x-1][y-1].Besetzt = true; 
    } while (Spieler1[x][y].Besetzt = false); // <-------- DAS


}    // Ende DatenEingeben Spieler 2

Werbeanzeige