[abgebrochen] µitLight November/Dezember 2010

  • Der Wettbewerb wurde neu aufgelegt: Neuer µitLight!

    Thema: Schach-Engine


    Diesmal wird es wieder recht komplex. Es geht darum, eine Schach-Engine zu prorgrammieren. Das ist recht kompliziert, deshalb werden die Weihnachtsferien mit einbezogen, und das Ganze endet am Ende vom Dezember.


    Um die Übersicht zu wahren, verteile ich die einzelnen Dinge mal auf Spoiler!


    Mindestanforderungen

    Das ganze Programm soll innerhalb einer Konsole funktionieren. Heißt, dass sich beim Start - ohne zusätzliche UDF - eine Kommandozeile öffnet. Diese darf auch aus einem Edit-Control bestehen, soll aber keine Zusatzfunktionen bieten! Auf optischen Schnickschnack bitte verzichten. In diese Konsole sollen Befehle eingebbar sein. Mindestens folgende müssen vorhanden sein:

    • list - zum Auflisten der aktuellen Positionen aller Funktionen
    • set - gefolgt von zwei parametern zum setzen der figuren (also z.B. "set a2 a4")
    • Rochaden werden als set 0 0 für die kurze oder set 0 0 0 für die lange angegeben - denkt an die Voraussetzungen für die Rochade!
    • aufgabe - Zum Aufgeben
    • für eine Umwandlung muss automatisch gefragt werden
    • en passant wird mit (z.B.) "set a4 b3 ep" angegeben


    Eine Uhr soll nicht implementiert werden!


    Der erste Schritt wäre also die Programmierung eines Schachspieles, der zweite die KI.


    KI

    Die KI soll alle oben genannten Befehle möglichst unterstützen (Sonderzüge Rochade und ep bringen Sonderpunkte, sind aber keine Pflicht). Wichtig ist, dass die KI nach 20 Sekunden den Zug automatisch abbricht und irgend einen Zug vollführt. Die KI muss nicht unbedingt durch den Anwender abbrechbar sein, sich selbst aber unterbrechen!


    Bewertung

    Bewertet werden u.a. folgende Kriterien:

    • Die Geschwindigkeit des Algorithmus
    • Die "Intelligenz" der getätigten Züge
    • Die Kompaktheit des Codes (nein, eine Zeile, die nichts tut, gewinnt nicht ;) )
    • Die Effizienz (Ressourcenverbrauch)
    • Idee für die Engine
    • ...


    Kommentar zur Kompaktheit: Darunter zählt nicht, alles in möglichst wenige Zeilen zu quetschen und auf Kommentare zu verzichten. Es geht mehr darum, wie einfach der Code geschrieben wurde.


    Sollte es Nachfragen oder Unklarheiten zu den Regeln geben, dann bitte ich um einen Post, den wir hier bearbeiten.


    Kommentare zur Dokumentation sind verpflichtend! Diese müssen nicht jede Zeile kommentieren, aber wichtige Stellen beschreiben bzw. den Algorithmus und die Idee, die dahinter steckt, beschreiben.


    Der Abgabetermin ist der 31.12.2010. Sollten wir innerhalb der letzten beiden Wochen bemerken, das aufgrund der Komplexität kein Ergebnis zu Stande kommen sollte, lässt sich dieses Abgabedatum erweitern, sodass die ganzen Winderferien genutzt werden können - dies geschieht aber nur, falls eine Mehrheit nicht fertig werden sollte.


    Sendet Einsendungen bitte an uitlight@l3viathan.de.


    Wir hoffen auf viele Einsendungen zu diesem doch sehr spannenden Projekt!


    Viel Erfolg allerseits! :thumbup:


    Schnitzel, L3viathan und Matthias

    2 Mal editiert, zuletzt von MatthiasG. (23. November 2010 um 08:06)

  • Boah oO
    Wie siehts so mit der Bewertung aus?

    Wird schwer :D

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • Das Thema hört sich so an als ob ich diesmal mitmachen werde, allerdings hätte ich ne Frage trozdem ich langjähriger Sachspieler bin hab ich noch nie etwas von "en passant wird mit (z.B.) "set a4 b3 ep" angegeben" gehört? Meinst du vielleicht KD also Dame in gefahr?

  • Oh ok das war mir bisher unbekannt, das macht die ganze Sache etwas komplizierter :D Noch eine Frage ist die CUI Regel verpflichtend? Ich finde der Umgang mit GUI´s ist in AutoIT einfacher als der mit CUI´s :pinch:

  • Oh ok das war mir bisher unbekannt, das macht die ganze Sache etwas komplizierter :D Noch eine Frage ist die CUI Regel verpflichtend? Ich finde der Umgang mit GUI´s ist in AutoIT einfacher als der mit CUI´s :pinch:


    echte CUIs sind auf jeden Fall schwieriger, da man sich die DLLCalls selbst zusammensuchen muss. Es gibt keine fertigen Funktionen dafür bzw. die dürfen nicht verwendet werden.

  • Hi,
    @progandy, und die anderen "Objekt"-Spezialisten.
    Würde sich die Umsetzung der Aufgabe in AutoIt-Object für einen "quasi-Anfänger" mit Interessse an dieser Technik lohnen oder ist die Latte zu hoch gelegt?
    Anders gefragt, wäre die Problemstellung ein gutes Beispiel für die Verwendung von Objekten, oder würdet ihr eher in diesem Fall die "klassische" Funktionen (obwohl OO ja eigentlich nichts anderes ist) - Methode wählen?

  • Zur Bewertung folgen noch Angaben, die hatte ich vergessen...

    Mit der CUI: Im Prinzip nicht, es geht darum, dass Ganze auf einer Kommandozeile zu lassen. Ich werde oben aber hinschreiben, dass auch ein Edit-Control erlaubt ist.

  • Andy: So lange du die Objekte formal aufstellen kannst, sollte es auch kein Problem sein, diese in AutoIt zu implementieren.
    Ich habe mich jetzt aber nicht mit einem Schachspiel auseinandergesetzt, daher weiß ich nicht genau, wie gut sich das abbilden lässt, aber eigentlich sollte es schon funktionieren.

  • Ich hab mal damit angefangen, aber mit Grafik, die schlichte Grafik ist sogesehen fertig, aber ich hab noch nicht alle Schachregeln, Rochade oder EP hatte ich noch nicht. KI hab ich dann auch noch nicht angefangen. Aber das Thema finde ich super, ich mag KI. Ich hab ja mal das 9-Hölzerspiel mit KI Gegner veröffentlicht, eins meiner ersten Autoit-Programme :D Ursprünglich hab ich das nämlich für BlitzBasic geschrieben.

  • Moin pee!

    Generell ja, eine gute Idee. Aber ich denke, dass das wirklich den Rahmen sprengt, da man sich sonst sehr einlesen muss. Das denke ich zumindest dazu.

    Gruß,
    Matthias

  • vom Prinzip her ne gute Idee, aber das ganze über eine Console zu machen finde ich nicht gut. Ich würde vorschlagen, das man ein "Standard-GUI" macht, die jeder Teilnehmer nutzen muss und nichts am Ausehen ändern darf, nur Variablennamen etc.

  • Tut mir Leid, dazu fehlt mir (zumindest jetzt) die Zeit. Die Konsole ist recht leicht umzusetzen, denke ich.

    Wenn jeder sagt, dass er noch nicht anfängt, oder niemand etwas dagegen hat, dann kann ich mich demnächst dran setzen.

    Gruß,
    Matthias

  • Wenn du willst kann ich den Standard-GUI machen. Ich habe auch schon Bilder von sämtlichen Figuren und Feldern aus dem Internet rauskopiert und würde es für den Wettbewerb zur Verfügung stellen

  • Generell - solange kein Copyright durch die Bilder verletzt wird - besteht großes Interesse. Kannst du mir die zum Überprüfen an oben genannte Email-Adresse schicken.

    Vielen Dank bereits im Voraus!

    Wichtig ist, dass die Funktionen, die aufgerufen werden, bereits vorgegeben sind, aber leer sind.

    Gruß,
    Matthias

  • Ich habe schon n paar Hebel in Bewegung gesetzt und habe eine E-Mail an chessbase geschrieben (die das Copyright hat) und habe gefragt ob ich die Bilder benutzen darf, wenn ich eine Rückmail bekomme, egal ob gut oder schlecht, poste ich es hier. Ansonsten gibt es nicht mehr viele Möglichkeiten an geeignete Bilder zu kommen. :(

    Einmal editiert, zuletzt von xXlowXx (11. November 2010 um 20:44)

  • Hallo nochmal!

    Boah - bereitest dir gleich solche Umstände! Vielen Dank für deine Mithilfe!

    Viele Grüße,
    Matthias

  • langsam wird mir das Mailen zu doof -.-

    Zitat:

    Sehr geehrter Herr ...,

    Sie fragen nach kostenlosen Nutzungsrechten unserer Grafiken und mögen uns nicht Ihre Anschrift nennen? Bitte haben Sie Verständnis dafür, daß wir Vereinbarungen mit Partnern nur treffen können, wenn wir deren vollständige Kontaktdaten besitzen, um im Falle von Problemen und Rückfragen reagieren zu können. Wer der Veranstalter Ihres Wettbewerbes ist, haben Sie auch nicht erläutert. Warum eigentlich nicht?


    Mit freundlichen Grüßen

    Rainer Woisin

    Zitat ende.

    Ich weis erlichgesagt nichtmehr was ich schreiben soll. X_X