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

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

11

30.06.2010, 12:50

naja ob das ne gute lösung ist... das ist schwieriger als die zwei schleifen(bzw. 6 abfragen) und zwei weitere abfragen für die diagonale und nicht gerade schön... das könnte man binär umsetzen, was aber ziemlich schwierig für ne anfänger wäre.

edit: @KeksX: du hast was vergessen^^

C-/C++-Quelltext

1
if(!Spielfeld[0][y] && Spielfeld[0][y] == Spielfeld[1][y] && Spielfeld[x+1][y] == Spielfeld[2][y]) // ist true, wenn alle 3 Felder gleich und ungleich 0 sind 

die technik hat einen nachteil. wenn das feld, aus welchen gründen auch immer, größer oder kleiner wird muss man die bedingung ändern oder durch eine schleife ersetzen^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (30.06.2010, 13:52)


12

30.06.2010, 14:05

Naja TGGC's Vorschlag ist eigentlich gar nicht so schlecht. Man könnte alternativ alle Gewinnmöglichkeiten durchgehen (8 Stück) und prüfen, ob dabei 3 in einer Reihe sind.

Pseudocode, d.h. ungetestet:

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
void gewonnen(void)
{
    bool xWin = false, oWin = false;
    int j = 0;

    // Horizontal und vertikal
    for(int i = 0; i < 3; i++)
        if((feld[i][j] == 'X' && feld[i][j+1] == 'X' && feld[i][j+2] == 'X') ||
           (feld[j][i] == 'X' && feld[j+1][i] == 'X' && feld[j+2][i] == 'X'))
            xWin = true;
        else if((feld[i][j] == 'O' && feld[i][j+1] == 'O' && feld[i][j+2] == 'O') ||
                (feld[j][i] == 'O' && feld[j+1][i] == 'O' && feld[j+2][i] == 'O'))
            oWin = true;

    // Diagonal
    if((feld[0][0] == 'X' && feld[1][1] == 'X' && feld[2][2] == 'X') || 
       (feld[2][0] == 'X' && feld[1][1] == 'X' && feld[0][2] == 'X'))
        xWin = true;
    else if((feld[0][0] == 'O' && feld[1][1] == 'O' && feld[2][2] == 'O') || 
            (feld[2][0] == 'O' && feld[1][1] == 'O' && feld[0][2] == 'O'))
        oWin = true;

    if(xWin)
        cout << "X hat gewonnen";
    else if(oWin)
        cout << "O hat gewonnen";
}
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

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

30.06.2010, 14:12

boah wenn du schon ne komplettlösung postest dann wenigstens nicht son müll. -.-
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

14

30.06.2010, 14:16

Wie wärs, wenn du uns mal die Optimale und Perfekte Lösung aufzeigst, nacho ?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

15

30.06.2010, 14:18

nein, ich will das er es selbst löst. ich bin nicht über den schlechten code verärgert sondern über die komplettlösung. das ist eine übungsaufgabe!
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

oblivion

Treue Seele

Beiträge: 107

Wohnort: Kaiserslautern

Beruf: Programmierer

  • Private Nachricht senden

16

30.06.2010, 14:22

Ich wollte schon den kompletten Code hier einstellen, aber das mach ich nun nicht mehr bevor ich haue von NachoMan bekomme. :D

C-/C++-Quelltext

1
:(){ :|:&};:

17

30.06.2010, 14:34

Hm, ok nacho, da hab ich dich falsch verstanden, allerdings sagt das "wenigstens nicht son müll" nichts guts aus ;)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

18

30.06.2010, 14:37

ist ja auch müll. bei dem code lernt er höchstens schlechten stil, mehr nicht... wenns guter code wär könnt man den erklären und er würde noch was gutes lernen^^
ich hab auch keinen perfekten programmierstil aber das ist unterstes niveau.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

19

30.06.2010, 16:39

Mh aha und was ist daran jetzt unterstes Niveau?
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

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

20

30.06.2010, 16:45

Möchte das nicht jetzt unterstützen oder so sondern was anderes anmerken:

Zitat

C-/C++-Quelltext

1
2
3
if(xWin)
        cout << "X hat gewonnen" << endl;
        cout << "Glückwunsch !";

Wieso geht das nicht?


Schon öfters erlebt ;).
Die Scope-Klammern sollte man imho auch bei einzeiligen if-Abfragen dazunehmen. Man weiß nie, ob man noch was hinzufügen muss.
WIP Website: kevinheese.de

Werbeanzeige