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

kuky

Frischling

  • »kuky« ist der Autor dieses Themas
  • Private Nachricht senden

1

23.05.2010, 12:34

funktionsproblem.

Hallo

ich bin ein absoluter neuling in der programmiersprache c++ und habe ein kleines problem auf das ich selbst einfach nicht kommen...

ich will folgenden code:

C-/C++-Quelltext

1
2
3
4
if(feld[x-1][y[x]].besetzt == feld[x-1][y[x]+1].besetzt == feld[x-1][y[x]+2].besetzt)
    {
        cout << "vier gleiche in einer reihe vertikal" << endl;
    }

in eine funktion packen. doch leider hab ich keinen blassen schimmer was ich an die funtion weitergeben muss/kann.

über einen kleinen denkanstoß oder eine lösung für mein problem wäre ich sehr dankbar. =)


lg andreas

2

23.05.2010, 12:37

Also du müsstest das Feld der Funktion übergeben. Das würde z.B. mit einem doppel Pointer funktionieren. Interessant wäre für uns ansonsten noch zu wissen, was besetzt für eine Variable ist und wie groß das Feld ist und wo x und y herkommen, usw.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

kuky

Frischling

  • »kuky« ist der Autor dieses Themas
  • Private Nachricht senden

3

23.05.2010, 12:43

x wird per tastatur eingegeben
für jedes x gibts ein y das mitzählt in welcher zeile mann sich befindet.

besetzt ist eine integervariable die dafür da ist um zu bestimmen welcher spieler das feld besetzt hat.
das feld ist 5x5

lg andreas

4

23.05.2010, 12:48

Mh, dann könntest du auch einfach nur die 3 Integer Variablen übergeben um sie zu vergleichen. Also so z.B.:

C-/C++-Quelltext

1
funktion(feld[x-1][y[x]].besetzt, feld[x-1][y[x]+1].besetzt, feld[x-1][y[x]+2].besetzt);
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

kuky

Frischling

  • »kuky« ist der Autor dieses Themas
  • Private Nachricht senden

5

23.05.2010, 12:55

und wie schaut dann der prototyp aus ?(

6

23.05.2010, 12:59

Naja es sind doch 3 Integer Variablen, deshalb:

C-/C++-Quelltext

1
void funktion(int feld1, int feld2, int feld3);
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

kuky

Frischling

  • »kuky« ist der Autor dieses Themas
  • Private Nachricht senden

7

23.05.2010, 13:16

irgendwie funtionierts nicht. :(

hier mal der ganze 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
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
#include <iostream>

using namespace std;



struct s_feld 
{
    int besetzt;
    int nummer;
    bool bes;
};


void gewinnabfrage(int feld1,int feld2,int feld3);  // Funtions prototyp                


int main()
{
    const int hoehe = 5;
    const int breite = 5;
    
s_feld feld[breite][hoehe];
int x=0;

int spieler=1;
bool ende=1;
int y[]={5,5,5,5,5,5,0};





do
{


do                                                  // Koordinatenabfrage >>
{                                                   //
    cout << "Position x: ";                         //
    cin >> x;                                       //
}while (x < 1 || x>breite);                         //
                                                    //  << Koordinatenabfrage





if (spieler == 1)                                   // Spielerbesetzung >>
{                                                   //
    feld[x-1][y[x]-1].besetzt = 1;                  //
    spieler++;

gewinnabfrage(feld[x-1][y[x]].besetzt, feld[x-1][y[x]+1].besetzt, feld[x-1][y[x]+2].besetzt);

    

    y[x]--;                                         //
}   
                                                    //
else                                                //
{                                                   //
    feld[x-1][y[x]-1].besetzt = 2;                  //
    spieler--;  
    y[x]--;//
}                                                   // << Spielerbesetzung





    for (int y=0; y<hoehe; y++)                     // Spielfeld anzeigen >>
    {                                               //
        for (int x=0; x<breite; x++)                //
        {                                           //
            if (feld[x][y].besetzt == 1)            //
            {cout << "1 ";                          //
            }                                       //
            else if (feld[x][y].besetzt == 2)       //
            {cout << "2 ";                          //
            }                                       //
            else                                    //
            {cout << "0 ";                          //
            }                                       //
        }                                           //
    cout << endl;                                   //
    }                                               // << Spielfeld anzeigen


}while(ende==1);



return 0;
}



void gewinnabfrage(int feld1,int feld2,int feld3)                                       // funtion
{
if(feld[x-1][y[x]].besetzt == feld[x-1][y[x]+1].besetzt == feld[x-1][y[x]+2].besetzt)
    {
        cout << "vier gleiche in einer reihe vertikal" << endl;
    }
}

8

23.05.2010, 13:31

C-/C++-Quelltext

1
2
3
4
5
6
7
void gewinnabfrage(int feld1,int feld2,int feld3)                                       // funtion
{
    if(feld1 == feld2 && feld1 == feld3 && feld2 == feld3)
    {
        cout << "vier gleiche in einer reihe vertikal" << endl;
    }
}


Du musst die alle einzeln miteinander vergleichen. Ich glaube kaum, dass deine if Abfrage vorher richtig funktioniert hat. Außerdem musst du ja die Variablen aus der Parameterliste verwenden, ist doch eigentlich klar oder? ;)
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

kuky

Frischling

  • »kuky« ist der Autor dieses Themas
  • Private Nachricht senden

9

23.05.2010, 13:35

danke vielmals. :)
war wohl ein kleiner denkfehler.

aber so gehts auch:

C-/C++-Quelltext

1
2
3
4
5
6
7
void gewinnabfrage(int feld1,int feld2,int feld3)                                       // funtion
{
if(feld1 == feld2 == feld3)
    {
        cout << "vier gleiche in einer reihe vertikal" << endl;
    }
}


dan brauch ich keine "&&" anweisungen und es funtioniert trotzdem :)

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

10

23.05.2010, 13:53

NEIN!

== ist ein Vergleichoperator. Wenn du schreibst feld1 == feld2, dann ist das Ergebnis davon wahr oder falsch (true / false) jenachdem, ob feld1 und feld2 gleich sind oder nicht. Im zweiten Schritt vergleichst du dann den Rückgabewert von feld1 == feld2 (also 1 oder 0) mit feld3. Deine Bedingung ist also nur wahr, wenn feld1 und feld2 gleich und feld3 1 oder wenn feld1 und feld2 ungleich und feld3 0 ist.
Signaturen werden überbewertet

Werbeanzeige