KI Contest 4-Gewinnt

Übersicht Sonstiges Smalltalk

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

Smily

Betreff: KI Contest 4-Gewinnt

BeitragSo, Apr 29, 2007 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu,
Parallel zum Code-Compo würde ich gerne einen KI-Wettbewerb starten.
Und zwar geht es diesmal um ein 4-Gewinnt Spiel.

Regeln:
Arrow Die KI wird in der function KI(p) festgelegt
Arrow mit p wird der Spieler übergeben.
1 = spieler 1
2 = spieler 2
Arrow mit feld(x,y) können die einzelnen felder abgefragt werden.
0 = leer
1 = spieler 1
2 = spieler 2
Arrow Die funktion muss eine Zahl von 0 bis 6 zurückgeben, welche angibt, in welchen Slot der Stein fallen soll.
Arrow Standart ist die KI funktion so aufgebaut, dass ein teil vom Mensch gesteuert wird.
Arrow Die KI, die abgegeben wird, soll aber für beide seiten einsetzbar sein. (Also lieber Relative statt Absolute Spielerwerte verwenden)
Arrow Zufall kann in der KI vorkommen. Sollte das der Fall sein wird über mehrere Runden gespielt.
Arrow Die verschiedenen KIs werden in einem Punktsystem gegeneinander Antreten. Wobei Jeder einmal gegen Jeden Spielt.
Arrow Die KI sollte nicht länger als 10 Sekunden auf meinem PC pro Runde brauchen. (1,8 GHz, 1024 MB Ram)
Arrow ein Größenlimit gibt es nicht
Arrow Stichtag ist in knapp einem Monat (26. Mai 0:00) (nicht genau, damit es auf einem Tag vom Samstag zum Sonntag fällt)

Ich hoffe mal auf viele Teilnehmer
Sollte es noch fragen geben bzw sollte ich was wichtiges Vergessen haben Postet einfach ^^
Ausserdem würde ich einen Mod gerne Bitten den Threat zu pinnen.

Das grüst:

Edit: Ich hab noch einen kleinen bug korrigiert.
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
Dim feld(6,5)
SeedRnd MilliSecs()
Repeat

   Color 0,0,200
   Rect 10,20,640,560
   Color 0,0,0
   For x = 0 To 6
      For y = 0 To 5
         Select feld(x,y)
            Case 0
               Color 0,0,0
            Case 1
               Color 255,0,0
            Case 2
               Color 255,255,0
         End select
         Oval x*90 + 20,y*90 + 30,80,80
      Next
   Next
   
   Select p
      Case 0
         Color 255,0,0
      Case 1
         Color 255,255,0
   End Select
   Oval 700,5,80,80
   Color 255,255,255
   Text 700,100, z
   Flip   
   Cls   
   If Not win
      put(KI(p),p+1)
      p = Not p
      z = z + 1
      win = check()
   Else
      Select win
      Case 1
         Color 255,0,0
      Case 2
         Color 255,255,0
      End Select
      Text 0,0,"Spieler "+win+" gewinnt"
   End If


Until KeyHit(1)

Function put(x,t)
   For y = 5 To 0 Step -1
      If Not feld(x,y)
         feld(x,y) = t
         Return 1
      End if
   Next
End Function

Function check()
   For x = 0 To 6
      For y = 0 To 5
         Color 0,0,255
         If checkline(x,y,0,1) Return feld(x,y)
         If checkline(x,y,1,1) Return feld(x,y)
         If checkline(x,y,-1,1) Return feld(x,y)
         If checkline(x,y,1,0) Return feld(x,y)
      Next
   next
End Function

Function checkline(x,y,xm,ym)
   p = feld(x,y)
   If Not p Return 0
   For d = 1 To 3
      If x+d*xm > 6 Return 0
      If y+d*ym > 5 Return 0
      If feld(x+d*xm, y+d*ym) <> p Return 0
   Next
   Return 1
End Function

;---------------------
;- Hier kommt die KI -
;---------------------

Function KI(p)
   If Not p
      Return Rand(0,6)
   Else
      FlushKeys()
      Repeat
      for k = 2 To 8
         If KeyDown(k) Return k-2
      Next
      Forever
   End if
End Function
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
  • Zuletzt bearbeitet von Smily am So, Apr 29, 2007 16:53, insgesamt einmal bearbeitet

FreetimeCoder

BeitragSo, Apr 29, 2007 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat der Gewinner was davon? Gibt es Preise etc?
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

TheShadow

Moderator

BeitragSo, Apr 29, 2007 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiß nicht... dazu ist 4 Gewinnt zu einfach um so einen Wettbewerb zu starten

Das wird gelöst, indem man rekursiv alle Möglichkeiten durchspielt und dann die Felder mit den besten Chancen einen besseren Score erhalten... (natürlich erhalten die nächsten Zuge einen höheren Score als die übernächsten usw)

Bei einem gleichen Score entscheidet Zufall...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

D2006

Administrator

BeitragSo, Apr 29, 2007 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Geil wär's ja gewesen, wenn jeder Teilnehmer, vorallem Anfänger, selbst auf eine solche Überlegung kommen mussten. Rolling Eyes
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Goodjee

BeitragSo, Apr 29, 2007 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
irgendwie schon...man kann den contest auch im vorfeld langweilig machen...

StepTiger

BeitragSo, Apr 29, 2007 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Spielverderber...

Aber auch das kann man noch weiter verbessern.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Spikespine

BeitragSo, Apr 29, 2007 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich stimme TheShadow zu...
aber KI-Contest ist, finde ich, ne super Idee! Ich wäre aber dafür, dass die Teilnehmer nicht für ein "Brettspiel" (oder als was man Vier-Gewinnt bezeichnen soll) die KI schreiben müssen, sondern für ein Echtzeit(-"action"-)spiel. (Vielleicht beim nächsten mal Wink )

Beispiel: zwei Figuren bewegen sich auf einem Spielfeld und versuchen, einen Ball ins gegnerische Tor zu schießen. Das Spielprinzip sollte simpel sein. Jemand erstellt dafür einen Code, der alle Berechnungen übernimmt, bis auf die Steuerung der Figuren. Dafür muss eine KI programmiert werden, die eben Einschränkungen hat wie: "Maximale Geschwindigkeit: 4 Pixel / Schleifendurchlauf". Der Veranstalter lässt dann die Teilnehmenden KIs im KO.-System gegeneinander antreten; die beste KI gewinnt!!
Witzig wäre dann eine Replay-Funktion, mit der der Veranstalter die Spiele der Community zu Verfügung stellt.

Leider scheitert so etwas vermutlich an der schlechten Beteiligung innerhalb des Forums. Wenn Interesse bestehen würde - ich könnte sowas gerne in die Hand nehmen.


Ach, ich fantasiere zu viel Wink
Möchte dir natürlich auch nicht deinen Contest madig machen, Smily! So eine KI für 4-Gewinnt ist sicherlich ne Herausforderung, vielleicht schaffe ich es ja, mitzumachen Smile
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

TheShadow

Moderator

BeitragSo, Apr 29, 2007 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Spielverderber...


Sehe ich nicht so... wer will kann es doch trotzdem coden - da ich keine Codes geliefert habe... außerdem findet man solche Infos sicherlich auch im Internet...

Interessanter wäre z.B. Kartenspiel - da man nicht nur seine Farbe hat wie in 4 Gewinnt, sondern verschiedene Karten die man zu untersch. Zeiten nutzen kann - außerdem kann man die Taktik wählen - etwa aggressiv oder ähnlich...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Tankbuster

BeitragSo, Apr 29, 2007 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du meinst so was wie Magic, hab ich recht!
Natürlich ein bisschen vereinfacht 0o
Twitter
Download Jewel Snake!
Windows|Android
 

Dreamora

BeitragSo, Apr 29, 2007 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn man die prinzipielle Idee kennt von KI in deterministischen Spielen (4 Gewinnt, othello, schach etc), so gibt es doch ein elementares Problem:

Die implementation des Systems ist in allen fällen simple.
Das wirklich komplizierte sind die Bewertungsfunktionen (wie gut ist eine bestimmte Position) und vor allem die implementation des Spielbaumes um rekursiv durchzugehen bzw. dessen optimierungen.

Sagen wir die KI hat nur 10ms zeit zum entscheiden
da nutzt es nix wenn man weiss wie es prinzipiell geht. Damit könnte man bestenfalls random setzen wenn man keinen Plan von den nötigen Datenstrukturen und Algos erarbeitet oder geniale Ideen hat wie man obige grundsätzliche Überlegung überhaupt umsetzen könnte.

Aber wenn ihr euch wirklich mit AI ärgern wollte: Robocode Smile
Bzw. den "Blitz Pendant" welcher mal von jemandem im englischen Forum geschrieben wurde. Prinzip: "Programmier deinen Robo und lass ihn in einer Arena AI gegen AI fetzen"
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Spikespine

BeitragSo, Apr 29, 2007 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
au ja au ja, robocode auch hier im forum! Smile
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

NightPhoenix

BeitragSo, Apr 29, 2007 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
würde ich tausend mal besser finden als die 4 gewinnt langeweile Very Happy
Könntest du den Contest nochmal neu starten? *lieb guck*

Smily

BeitragSo, Apr 29, 2007 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider muss ich gestehen, dass ich gerade nicht so recht weis was ihr meint ^^ also müsste dann jemand anderes den Contest Leiten.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

NightPhoenix

BeitragSo, Apr 29, 2007 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Er meint so eine Arena wo zwei Roboter oder was auch immer gegeneinander kämpfen, mit schützenden Würfeln oder sowas wo sie sich dahinter verstecken können... Sowas wie Deathmatch halt. Die Beste Umsetzung der Simulation und der KI gewinnt... bzw. es wird wie gewohnt abgestimmt

Spikespine

BeitragSo, Apr 29, 2007 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso abgestimmt? Die KIs werden gegeneinander antreten. Die bessere KI gewinnt den Kampf!
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Tankbuster

BeitragSo, Apr 29, 2007 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
JA! Dann machen wir ein kleines KI-tunier!
Dann würd sogar ich mir überlegen mitzumachen Very Happy
Aber es wird schwer, 2 KI's in einem Code unterzubrigen! Dann müssten wir uns wahrsscheinlich alle absprechen!
Twitter
Download Jewel Snake!
Windows|Android

NightPhoenix

BeitragMo, Apr 30, 2007 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau... wie soll das funktionieren wenn jemand unterschiedliche variablen oder gar die selben variablen benutzt?
Also ich möchte keinesfalls die Person sein, die das in einem Code unterbringt...
Es ist ja auch nicht so, dass bei jeder KIcompo nur 2 teilnehmen... was wenn es 20 Teilnehmer sind?... das ist verrückt...
Praktisch gesehen total sinnlos Shocked
ich bin fürs abstimmen

Tankbuster

BeitragMo, Apr 30, 2007 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde sagen, jeder macht seine Funktion, die einen Spieler bewegt!
dieser Spieler wird der funktion übergeben, genau wie das Spielfeld (zur not auch global)
Dann müssten wir uns noch bei den Kollisions Typen einiegen. Es sollte auch eine Globale Geschwindigkeit geben, wie schnell die Spieler laufen können, und so weiter...........
Ich schlage vor, das jeder Teilnehmer eine ID bekommt, und sie dann in seinen Variablen verwendet (z.B. If 1_irgendwas=122 Then ....) oder z.B. If 2_irgendwas=122 Then ....)
Twitter
Download Jewel Snake!
Windows|Android

Spikespine

BeitragMo, Apr 30, 2007 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Funktionsprinzip stelle ich mir eigentlich ganz einfach vor!
Der Organisator programmiert ein Spiel. Den Code stellt er allen Teilnehmern zu Verfügung. Der Code ist soweit komplett, bis auf die Steuerung der Spielfiguren, die der Einfachheit halber in einer Funktion untergebracht ist.
Die Wettbewerbsteilnehmer haben nun die Aufgabe, eine KI zu programmieren, die eine der Figuren steuert. Es müssen natürlich klare Regeln feststehen, was erlaubt ist für die KI. Es wird also nicht möglich sein, irgendwelche beliebigen Variablen zu manipulieren, um zum Beispiel die Lebensenergie eines Spielers zu senken, oder ähnliches. Einzig solche Variablen, die für die Steuerung des Spielers notwendig sind, dürfen verändert werden (Positionsvariablen...)

Klar? Smile


Aber eigentlich sollte dieser Thread hier nicht dazu missbraucht werden, über andere Contests zu diskutieren, schließlich läuft dieser hier ja noch. Smile


edit: Ups, ich sehe gerade, dass ja schon ein Thread darüber erstellt wurde...
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

Schnuff

BeitragMo, Apr 30, 2007 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ihr alle nur sagt "man sollte" wird nie was draus... und das var system ist ganz leich...
$username_varname z.B. schnuff_action% = 10
dann muss man nurnoch includen Wink
und dann halt was festes wie schnuff_update() oder schnuff_initializie(X,Y)...

ich halte nicht viel von Ki (habe aber auch noch nie eine geproggt)
Programmers dont die. They gosub without return...

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group