myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Gemeinschaft » Projekte » Reversi / Othello mit AI
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Reversi / Othello mit AI

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Floste
myCSharp.de-Mitglied

avatar-2376.jpg


Dabei seit: 13.06.2007
Beiträge: 1.130
Entwicklungsumgebung: VS 2008
Herkunft: Norddeutschland


Floste ist offline

Reversi / Othello mit AI

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.


Dateianhang:
unknown Reverci.zip (221 KB, 338 mal heruntergeladen)

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Floste am 12.05.2008 17:12.

Neuer Beitrag 24.10.2007 18:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Floste
myCSharp.de-Mitglied

avatar-2376.jpg


Dabei seit: 13.06.2007
Beiträge: 1.130
Entwicklungsumgebung: VS 2008
Herkunft: Norddeutschland

Themenstarter Thema begonnen von Floste

Floste ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Screenshot:

Floste hat dieses Bild (verkleinerte Version) angehängt:
Screenshot.png
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Floste am 12.05.2008 17:15.

Neuer Beitrag 24.10.2007 18:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Thomas B Thomas B ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.08.2006
Beiträge: 223


Thomas B ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

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

Gruß Thomas
Neuer Beitrag 24.10.2007 19:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Floste
myCSharp.de-Mitglied

avatar-2376.jpg


Dabei seit: 13.06.2007
Beiträge: 1.130
Entwicklungsumgebung: VS 2008
Herkunft: Norddeutschland

Themenstarter Thema begonnen von Floste

Floste ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
Neuer Beitrag 25.10.2007 20:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 6 Monate.
Floste
myCSharp.de-Mitglied

avatar-2376.jpg


Dabei seit: 13.06.2007
Beiträge: 1.130
Entwicklungsumgebung: VS 2008
Herkunft: Norddeutschland

Themenstarter Thema begonnen von Floste

Floste ist offline

überarbeitet

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 funktioniert 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. Augenzwinkern

Die Ladefunktion könnte sich noch als Bananenfunktion herrausstellen.
Neuer Beitrag 12.05.2008 20:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
egrath egrath ist männlich
myCSharp.de-Mitglied

avatar-2119.jpg


Dabei seit: 24.07.2005
Beiträge: 871
Entwicklungsumgebung: MonoDevelop, NetBeans, Vi
Herkunft: Österreich / Steyr


egrath ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
Neuer Beitrag 15.05.2008 15:01 Beiträge des Benutzers | zu Buddylist hinzufügen
Floste
myCSharp.de-Mitglied

avatar-2376.jpg


Dabei seit: 13.06.2007
Beiträge: 1.130
Entwicklungsumgebung: VS 2008
Herkunft: Norddeutschland

Themenstarter Thema begonnen von Floste

Floste ist offline

Anleitung zum Selberbasteln

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So kann man seine eigene AI einbinden:

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

C#-Code:
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:

C#-Code:
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 )cool

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

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Floste am 15.05.2008 18:23.

Neuer Beitrag 15.05.2008 18:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 12 Jahre.
Der letzte Beitrag ist älter als 12 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.08.2020 19:16