Autor Beitrag
Thorsten-Bln
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 13.12.07 00:28 
Hallo,
bin dabei einen Klassiker den ich noch aus 386er Zeiten in Erinnerung habe, nachzuschreiben.

Das spielt nennt sich Eimerkette, es gab aber auch mal eine Variante die nannte sich Octavian.

Es geht dabei darum, dass auf einem Spielfeld von Spieler und Computer abwechselnd jeweils ein Stein/Punkt gesetzt wird.

Zu beachten ist dabei, dass ein Feld/Eimer in der Mitte, welches 4 Nachbarfelder hat, bei 4 voll ist und bei 5 überläuft und seinen Inhalt gleichmäßig auf die Nachbarfelder verteilt. Ein Eckfeld, welches nur 2 Nachbarfelder hat. Ist folglicherweise bei 2 voll und läuft bei 3 über.

Wenn ein Feld überläuft und das Nachbarfeld gehört dem Gegner, dann gewinnt man dieses Feld und den dortigen Inhalt dazu.

Gewonnen hat derjenige, dem irgendwann das ganze Spielfeld gehört.


Leider ist der Computerspieler momentan noch recht "dämlich" und verliert so gut wie immer. Da er bisher seine Züge nur zufällig macht.

Ich habe jedoch momentan keinerlei Ideen, wie ich ihm eine KI beibringe, sodass er auch taktisch zieht.

Ihr könnt es Euch ja mal runterladen und ansehen. Evtl. hat von Euch einer ne Idee ?

Aber auch für sonstige Verbesserungsvorschläge bin ich offen.

Liebe Grüße
Thorsten
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Thorsten-Bln am Do 13.12.07 21:42, insgesamt 1-mal bearbeitet
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Do 13.12.07 17:13 
eien möglichkeit wäre zB die KI jeden möglichen Zug durchspielen zu lassen und den zu nehmen, der am meisten Raumgewinn bringt
golgol
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Do 13.12.07 17:25 
Ich denke user profile iconJann1k hat dir da schon die wahrscheinlich praktikabelste Lösung genannt. Die Wahrscheinlich aufwändigste Lösung hab ich mal machen müssen. Es handelt sich dabei um sogenannte
künstliche neuronale Netze - aber ich denke das ist ein kleiner Overkill, da die Möglichen Züge imho relativ zeitnahe durchgespielt werden können.
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 535
Erhaltene Danke: 238

W7
Delphi 6 pro
BeitragVerfasst: Do 13.12.07 19:09 
Titel: Re: Eimerkette - Bitte helft mir , brauche Tips für KI !
Moin Thorsten,

schau doch mal unter "logisches Minenspiel" im open source bereich.
Ich kenne das Spiel unter dem Namen Sprengmeister.

Gruß
Fiete

_________________
Fietes Gesetz: use your brain (THINK)
Thorsten-Bln Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 13.12.07 21:43 
So...

habe jetzt eine KI implementiert.. Ich habe nun schon ein paar Mal gewonnen, aber auch verloren.

Genau so sollte es ja sein..


Hat noch jemand Verbesserungsvorschläge ?
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Do 13.12.07 21:54 
verbesserungsvorschläge kann man nur machen, wenn du auch sagst wie deine KI funktioniert.

Wenn du meinen Vorschlag umgesetzt hast, kannst du deine KI ja bei den 3-5 besten Zügen schauen lassen, wie viele Felder der Gegner gewinnen kann und dann aus der Differenz quasi den effektiven Raumgewinn berechnen
Thorsten-Bln Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Do 13.12.07 22:03 
Naja, ich hab ja den Quellcode zum Ausprobieren bereitgestellt, daher war das Verbesserungsvorschläge darauf bezogen.

Codeoptimierungen etc.


Wie die KI funktioniert ist eigentlich recht einfach. Er bewertet nun alle Felder, bevor er ein Feld auswählt auf das er setzt.

1. Es wird geschaut, wem das Feld gehört :
a) niemanden --> Bewertung +1
b) ihm selber --> Bewertung +2
c) dem Gegner --> Bewertung -100

2. Es wird geschaut, wie einfach der Eimer gefüllt werden kann :
a) Eckeimer --> Bewertung +3
b) Randeimer --> Bewertung +2
c) Mitte-Eimer --> Bewertung +1

3) Es wird geschaut wie die Nachbarfelder gefüllt sind
a) Je leerem Nachbarfeld --> Bewertung +1
b) Nachbarfeld gehört ihm selber --> Bewertung +2
c) Nachbarfeld gehört dem Gegner :
I. Gegner bekommt Nachbarfeld schneller voll --> Bewertung -3
II. Gegner bekommt Nachbarfeld langsamer voll --> Bewertung +3
laublau
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Sa 25.05.19 14:59 
Hi...

Bist Du an dem Projekt noch dran?
Ich würde mir wünschen, dass die KI auch noch berücksichtigt, wie schnell ein Feld zurück-erobert werden kann.. sprich: Befindet sich in unmittelbarer Nähe ein Feld, das der Gegner zum überlaufen bringen kann, was KI-Felder auch sofort wieder zum überlaufen bringt.. :)

Aber herzlichen Dank - das Spiel habe ich so vermisst.. :D
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1191
Erhaltene Danke: 100

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Sa 25.05.19 22:27 
Zitat:
Verfasst: Do 13.12.07

Ich glaube, eher nicht. Das ist 11 Jahre und 5 Monate her.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.