Laden...

Reversi / Othello mit AI

Erstellt von Floste vor 16 Jahren Letzter Beitrag vor 15 Jahren 6.464 Views
Floste Themenstarter:in
1.130 Beiträge seit 2007
vor 16 Jahren
Reversi / Othello mit AI

Wie der Name schon sagt: Ein Othellospiel mit AI und Gui
Othello ist auch als Reversi bekannt.
Wikipedia: Othello#Regeln

Fehler: In der alten AI Öfters mal Stack-overflow

Überarbeitet am 12.5.2008.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

Floste Themenstarter:in
1.130 Beiträge seit 2007
vor 16 Jahren

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

T
223 Beiträge seit 2006
vor 16 Jahren

Hi,

Zum Thema Ki habe ich einen Link der dir helfen könnte:
http://www.fierz.ch/strategy.htm

Gruß Thomas

Floste Themenstarter:in
1.130 Beiträge seit 2007
vor 16 Jahren

In der neuen Version ist folgendes neu:
+Statusanzeige hinzugefügt
-Fehler bei Übergabe von Bewertung an übergeordneten Knoten behoben
-Negamax zu
+Alpha-Beta
-Heuristik rausgeschnissen

Stackoveflow ist weiterhin ein großes Problem und ich weiß nicht, wie ich es beheben kann oder warum es am Ende von Spielen vermehrt auftritt.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

Floste Themenstarter:in
1.130 Beiträge seit 2007
vor 15 Jahren
überarbeitet

So ich heb das Programm halb neu geschrieben:
+Man kann jetzt auswählen, welche AI man haben will.
+Eine neue AI in 2 Varianten ist dazugekommen: etwas schneller, mir ist noch kein stackoverflow untergekommen, bessere heuristik
+Berechnungen in einen anderen Thread ausgelagert -> Gui blockiert nicht mehr
+Undo+Redo funzt jetzt
+Man kann Stellungen als Zahlen und Bustabencode ausgeben und laden lassen.
+AIs werden jetzt beim Start in Dateien im gleichen verzeichnis gesucht. (Theoretisch kann man eine eigene schreiben.)

Fehlt noch ein Statusbalken und ein chickeres Spielbrett. 😉

Die Ladefunktion könnte sich noch als Bananenfunktion herrausstellen.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

871 Beiträge seit 2005
vor 15 Jahren

Hallo floste,

was mir grad eingefallen ist und was ich persönlich cool finden würde: Ein generisches Netzwerkinterface über das man andere Reversi Applikationen gegen deine Spielen lassen kann - wäre doch eine schöne Challenge hier fürs Forum 😉

Grüsse,
Egon

Floste Themenstarter:in
1.130 Beiträge seit 2007
vor 15 Jahren
Anleitung zum Selberbasteln

So kann man seine eigene AI einbinden:

Eine Dll erstellen
Die .exe referenzieren
Den Index hinzufügen:


using Reverci;
using MeineNeueAiDll;//wichtig
[assembly: Index()]

namespace  MeineNeueAiDll
{
    public class Index : AIFactoryAttribute
    {
        public Index()
        {
            //wenn die AI-klasse IAI implementiert:
            AIFactory ai1 = AIFactory.FromIAI(typeof(MeineErsteAi));//bitte diese Überladung benutzen und einen parameterlosen Konstruktor anbieten.
            ai1.StandardParms["strength"] = 4;//Hier kann man [B]irgendwelche[/B]  Parameter mit dem Namen festlegen
            ai1.Name = "Meine_AI_Nr1";

            //wenn die Klasse IAIParms Implementiert (oder von StandardAIParms erbt):
            AIFactory ai2=new AIFactory(typeof(MeineZweiteAi));
            ai2.StandardParms["strength"] = 4;//Hier kann man [B]irgendwelche[/B]  Parameter mit dem Namen festlegen
            ai2.Name = "Meine_AI_Nr2";


            this.Factorys = new AIFactory[2] { ai1, ai2 };
        }
    }
}

Wenn amn mit der stärkeeinstellung zufrieden ist, kann man IAI implementieren.
Wenn man weitere Einstellungen auf der GUI anbieten möchte, muss man IAIParms implementieren. Ich rate aber eher dazu, von StandardAIParms zu erben und folgendes zu Überschreiben:


SetProperty(string name, object value)//AUF JEDEN FALL bese aufrufen. Hier die gui updaten
System.Windows.Forms.Control Gui //bitte NICHT base. aufrufen.
int Rechne(FeldStatus[,] Felder,FeldStatus dran,IProcess p)

Der Rückgaberwert ist bei der Rechne-Methode in beiden Fällen die zu setzende Position: x+(y*8 )8)

Die Dll muss man dann bloß noch in den Ordner der exe packen.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!