VierGewinnt KI


  • Mod

    zum Spaß doch noch Lückenfüllen berücksichtigt, ist ja einfach genug und der Code wird nicht länger

    // für das Feld:
    enum { xdim = 7, ydim = 6 };
    enum feld_zustand { leeres_feld, spieler_stein, computer_stein };
    
    bool ist_gueltige_position(int x, int y)
    {
        return x >= 0 && x < xdim && y >= 0 && y < ydim;
    }
    
    int spaltenfuellstand(int x) // Anzahl der vorhandenen Steine in Spalte x
    {
        assert( x >= 0 && x < xdim );
        for ( int y = 0; y < ydim; ++y )
            if ( uber.Feld[ x ][ y ] == leeres_feld )
                return y;
    }
    
    bool bildet_reihe(int x, int y, int x_richtung, int y_richtung, int laenge, enum feld_zustand stein_typ)
    {
        assert( -1 <= x_richtung && x_richtung <= 1 );
        assert( -1 <= y_richtung && y_richtung <= 1 );
        assert( x_richtung != 0 || y_richtung != 0 );
        if ( !ist_gueltige_postion( x, y ) )
            return false;
        int gefundene_steine = 0;
        // wir zählen von (x,y) ausgehend, wieviele (max laenge-1) Schritte wir gehen können, bevor wir keinen passenden Stein mehr vorfinden
        for ( int i = -1; i > -laenge; --i )
            if ( ist_gueltige_position( x + x_richtung * i, y + y_richtung * i ) && uber.Feld[ x + x_richtung * i ][ y + y_richtung * i ] == stein_typ )
                ++gefundene_steine;
            else
                break;
        for ( int i = 1; i < laenge; ++i )
            if ( ist_gueltige_position( x + x_richtung * i, y + y_richtung * i ) && uber.Feld[ x + x_richtung * i ][ y + y_richtung * i ] == stein_typ )
                ++gefundene_steine;
            else
                break;
        return gefundene_steine + 1 >= laenge;
    }
    
    int KI()
    {
        // wir untersuchen jede einzelne Spalte und stellen fest, ob das Setzen eines Steines in dieser Spalte
        // eine Reihe des Gegners verhindert
        for ( int x = 0; x < xdim; ++x )
        {
            int y = spaltenfuellstand( x ); // (x,y) ist jetzt die Position eines möglichen neuen Steines
            if ( y >= ydim )
                continue;                  // die Spalte ist schon voll
            if ( bildet_reihe( x, y, -1,  1, 4, spieler_stein )   // links-oben
              || bildet_reihe( x, y, -1,  0, 4, spieler_stein )   // links
              || bildet_reihe( x, y, -1, -1, 4, spieler_stein )   // links-unten
              || bildet_reihe( x, y,  0, -1, 4, spieler_stein ) ) // unten
                return x;
        }
    // ab hier: mach etwas Intelligentes, wenn es nichts zu blockieren gibt
    ...
    }
    


  • resume: du hast eine programm alternative geschrieben mit aussnahme von dem was ich hinter fragt habe.

    Eh.. ja..



  • ysparrow schrieb:

    wär mir lieb wenn man mir meine frage beantwortet und nicht iwas nicht hilfreiches.

    Dann solltest du die Augen aufmachen.

    "Vielleicht solltest du dann && x<=3 auch an den Anfang der if Abfrage stellen und nicht ans Ende, wenn das Programm schon auf die ungültigen Indexe zugegriffen hat." sollte doch eigentlich deutlich genug gewesen sein, um dir zu sagen, dass

    ysparrow schrieb:

    if(uber.Feld[x][y]+uber.Feld[x+1][y]+uber.Feld[x+2][y]==(3*uber.Feld[x][y])&&
            uber.Feld[x][y]+uber.Feld[x+1][y]+uber.Feld[x+2][y]>=237
    
    &&x<=3
    ) {
    

    beachtet?

    falsch ist, wie MFK dir bereits sagte.



  • jaja das hab ich ja korrigiert.

    nix gegen euch hier.. aber irgendwie wenn man hier ne anfrage mit quellcode sendet bekommt man irgendwie nie ne richtige antwort. zu 90% ist es eine "dein quellcode ist sowieso scheisse/zu schlecht" antwort..

    das haupt augenmerk meines post galt ja eigendlich ob man eine alternativ ki hat (und halt ob da logische fehler sind)

    naja die schwierigkeit der jeweiligen anfragen müssten doch eig preis geben dass die Ki ein schwiegenderes thema ist.

    wäre also nett mann man mir dessen etwas helfen könnte..



  • ysparrow schrieb:

    BorisDieKlinge schrieb:

    spricht man hier schon von einer KI? simple logik oder?

    Ich spiele den bot nicht und entscheidet selber welchen stein er legt -> KI.

    Das macht deine if-else-Abfolgen noch lange zu keiner KI. Höchstens zu einer "Nach-Außen-Hin-KI".

    ysparrow schrieb:

    keine ki auf der welt is was anderes als logik.

    Bei weitem sind nicht alle Verknüpfungen von Logiken Künstl.Intelligenzen.



  • ysparrow schrieb:

    jaja das hab ich ja korrigiert.

    Dann zeig das Ergebnis dieser Korrektur, damit man endlich über Logikprobleme reden kann.

    ysparrow schrieb:

    nix gegen euch hier.. aber irgendwie wenn man hier ne anfrage mit quellcode sendet bekommt man irgendwie nie ne richtige antwort.

    Nix gegen dich, aber wenn ich so etwas lese:

    ysparrow schrieb:

    nen iwelche iwie drinne net ina is ne eig

    dann geht meine Bereitschaft, mich bei der Antwort auch nur im Geringsten anzustrengen, gegen Null.

    ysparrow schrieb:

    zu 90% ist es eine "dein quellcode ist sowieso scheisse/zu schlecht" antwort.

    Und wenn du die restlichen 10% einfach ignorierst, hilft dir das auch nicht weiter.

    ysparrow schrieb:

    das haupt augenmerk meines post galt ja eigendlich ob man eine alternativ ki hat (und halt ob da logische fehler sind)

    Das Hauptaugenmerk liegt auf den bunten Fähnchen, und ob sie farblich ansprechend arrangiert sind, nicht auf der Tatsache, dass sie in einem Haufen Kot stecken. Meinst du das in etwa so?

    ysparrow schrieb:

    naja die schwierigkeit der jeweiligen anfragen müssten doch eig preis geben dass die Ki ein schwiegenderes thema ist.

    Bahnhof?

    ysparrow schrieb:

    wäre also nett mann man mir dessen etwas helfen könnte..

    Ich hab's schonmal gesagt: Mach die gravierenden Fehler raus, dann kann man sich über Logik unterhalten. Vorher bringt das nichts.



  • blubb² schrieb:

    ysparrow schrieb:

    BorisDieKlinge schrieb:

    spricht man hier schon von einer KI? simple logik oder?

    Ich spiele den bot nicht und entscheidet selber welchen stein er legt -> KI.

    Das macht deine if-else-Abfolgen noch lange zu keiner KI. Höchstens zu einer "Nach-Außen-Hin-KI".

    ysparrow schrieb:

    keine ki auf der welt is was anderes als logik.

    Bei weitem sind nicht alle Verknüpfungen von Logiken Künstl.Intelligenzen.

    hirn fällt ja schließlich vom himmel 🙄



  • MFK schrieb:

    ysparrow schrieb:

    jaja das hab ich ja korrigiert.

    Dann zeig das Ergebnis dieser Korrektur, damit man endlich über Logikprobleme reden kann.

    ysparrow schrieb:

    nix gegen euch hier.. aber irgendwie wenn man hier ne anfrage mit quellcode sendet bekommt man irgendwie nie ne richtige antwort.

    Nix gegen dich, aber wenn ich so etwas lese:

    ysparrow schrieb:

    nen iwelche iwie drinne net ina is ne eig

    dann geht meine Bereitschaft, mich bei der Antwort auch nur im Geringsten anzustrengen, gegen Null.

    ysparrow schrieb:

    zu 90% ist es eine "dein quellcode ist sowieso scheisse/zu schlecht" antwort.

    Und wenn du die restlichen 10% einfach ignorierst, hilft dir das auch nicht weiter.

    ysparrow schrieb:

    das haupt augenmerk meines post galt ja eigendlich ob man eine alternativ ki hat (und halt ob da logische fehler sind)

    Das Hauptaugenmerk liegt auf den bunten Fähnchen, und ob sie farblich ansprechend arrangiert sind, nicht auf der Tatsache, dass sie in einem Haufen Kot stecken. Meinst du das in etwa so?

    ysparrow schrieb:

    naja die schwierigkeit der jeweiligen anfragen müssten doch eig preis geben dass die Ki ein schwiegenderes thema ist.

    Bahnhof?

    ysparrow schrieb:

    wäre also nett mann man mir dessen etwas helfen könnte..

    Ich hab's schonmal gesagt: Mach die gravierenden Fehler raus, dann kann man sich über Logik unterhalten. Vorher bringt das nichts.

    Resume deiner Antwort: Ich habe recht und ihr lösst mir nicht meine frage o.O



  • ysparrow schrieb:

    Resume deiner Antwort: Ich habe recht und ihr lösst mir nicht meine frage o.O

    Ja, wenn man's nicht schnallen will, kann man zu diesem Ergebnis kommen. Du kannst ja wiederkommen, wenn du ein zweistelliges Alter erreicht hast 🙂



  • sagt der der nicht versteht dass man auf ne frage ne antwort erwartet und kein "ich weiss es eh besser als du" wie im kindergarten.

    rofl das mit dem 2 stelligen alter geb ich an dich zurück



  • So, kommt mal wieder runter.
    Ich denke MFK hat klar gemacht, dass und warum er dir so nicht helfen will, und damit ist jetzt auch gut. 😉



  • naja ich brauch mir sowas kindisches nicht unterstellen lassen, ich belass es auch dabei.



  • Falls jemand an einer anderen Version mit KI interessiert ist:
    http://webentwicklung.virtual-meetings.de/2008/06/23/c-4-gewinnt-mit-ki-auf-konsolenbasis/

    Habe das als Schulprojekt programmiert...


Anmelden zum Antworten