- von Krise und Martyrium
(das ist der Untertitel, weil Untertitel cool sind)
Bei dieser King-of-the-Hill- Herausforderung in Python (yup; Sie müssen nicht weiter gehen, um zu wissen, dass Sie sich nicht in Java einreichen dürfen) müssen Sie einen Bot erstellen, der ein Spiel spielt, das dem Willkommen im Dungeon sehr ähnlich ist
Spielregeln
(Beachten Sie, dass dies nicht das ursprüngliche Spiel ist)
Es gibt ein Deck, ein Item-Set und einige Belohnungs- und Todeskarten. Die Basis-HP sind 3. Das Deck besteht aus 13 Monsterkarten, die nummeriert sind 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 9
, um ihre Stärken anzuzeigen.
Artikelliste
Dämonischer Pakt: Besiege den Dämon (Monster der Stärke 7) und das Monster darunter auf dem Dungeonstapel. - (besiegt nur den Dämon, wenn der Dämon der letzte im Dungeon war)
Heiltrank: Wenn du auf 0 HP fällst, besiege das Monster und kehre zu 3 HP zurück.
Heiliger Gral: Besiege Monster mit gerader Stärke (im Spiel sind diese Untote). Wenn ein Monster mit gerader Nummer auftritt, nachdem der dämonische Pakt angewendet wurde, handelt dies zuerst und Sie erhalten nach diesem Monster keinen zusätzlichen Pakt-Kill.
Vorpal-Dolch: Wähle ein Monster aus, bevor du den Dungeon betrittst. Diese Art von Monster ist besiegt. Wenn das Zielmonster auftritt, nachdem der dämonische Pakt angewendet wurde, handelt dies zuerst und Sie erhalten nach diesem Monster keinen zusätzlichen Pakt-Kill.
Schild: Addiere 3 zur Gesamt-HP vor dem Höhlenforschen. Dies hat keinen Einfluss auf die Verwendung von Heiltrank, wodurch die Gesundheit immer wieder auf 3 zurückgesetzt wird.
Rüstung: Addiere 5 zu den gesamten HP, bevor du Höhlenforscher bist. Dies hat keinen Einfluss auf die Verwendung von Heiltrank, wodurch die Gesundheit immer wieder auf 3 zurückgesetzt wird.
Belohnungskarten werden verwendet, um zu verfolgen, wer im Dungeon erfolgreich war. Todeskarten verfolgen, wer im Dungeon versagt hat.
Zeichenphase
Bevor die Ziehphase beginnt, werden alle Monsterkarten in das Deck zurückgelegt, beide Spieler werden auf 3 HP wiederhergestellt und alle weggeworfenen Gegenstände werden so wiederhergestellt, dass es jeweils eine gibt.
Der erste Spieler entscheidet, ob er eine Karte aus dem Stapel zieht und sie vor dem anderen Spieler versteckt. In diesem Fall müssen sie entweder auf den Dungeonstapel legen oder zusammen mit einem Gegenstand ihrer Wahl wegwerfen. Abgeworfene Gegenstände und Karten sind für beide Spieler bis zur nächsten Runde nicht verfügbar.
Nachdem Spieler eins an der Reihe ist, macht Spieler zwei dasselbe. Die Spieler entscheiden abwechselnd, ob sie ziehen und was mit der gezogenen Karte geschehen soll, bis sich jemand entscheidet, nicht zu ziehen, oder ein Spieler die letzte Karte vom Stapel nimmt. Wenn ein Spieler beschließt, nicht zu ziehen oder die letzte Karte zu ziehen, endet die Ziehphase und der andere Spieler muss nun den Dungeon betreten und mit dem Höhlenforschen beginnen.
Höhlenforschungsphase
Wenn der Vorpal-Dolch nicht abgelegt wurde, muss der Höhlenforscher nun entscheiden, auf welche Karte er angewendet werden soll. Für den Rest dieser Phase sind keine aktiven Entscheidungen zu treffen.
Der erste Spieler nimmt die oberste Karte; Das heißt, die letzte Karte, die in den Dungeon gelegt wurde, und ihre Stärkezahl sehen. Wenn der dämonische Pakt aus dem vorherigen Zug aktiv ist, wird die gezogene Karte abgelegt. Andernfalls werden die Gegenstände des Spielers in der Reihenfolge "Dämonischer Pakt", "Heiliger Gral", "Vorpal-Dolch" überprüft. Der erste nicht weggeworfene Gegenstand, der die gezogene Karte besiegen kann, wird dann verwendet und die Karte weggeworfen. Wenn ein dämonischer Pakt verwendet wird, ist er jetzt für die nächste Karte aktiv. Der gebrauchte Gegenstand wird nicht weggeworfen.
Wenn kein zutreffender Gegenstand verfügbar ist, wird die Stärke der Karte von der Gesundheit des Spielers abgezogen. Wenn ihre Gesundheit nicht mehr positiv ist, werden sie auf 3 HP wiederhergestellt und der Trank weggeworfen, falls verfügbar. Andernfalls endet der Dungeon-Crawl und sie erhalten eine Todeskarte.
Während der Spieler nicht besiegt ist und noch Karten im Dungeon sind, wird dieser Vorgang des Ziehens der obersten Karte wiederholt. Wenn alle Karten im Dungeon erfolgreich besiegt wurden, endet der Dungeon-Crawl und der Höhlenforscher sammelt eine Belohnungskarte.
Vollständige Spielbeschreibung
Ein Spiel besteht aus einer Reihe von Runden, die jeweils eine Ziehphase und dann eine Höhlenforschungsphase haben. Am Ende jeder Runde hat ein Spieler entweder eine Todeskarte oder eine Belohnungskarte gesammelt. Sobald ein Spieler 5 von beiden Typen gesammelt hat, endet das Spiel. Wenn sie 5 Todeskarten haben, verlieren sie das Spiel. Wenn sie 5 Belohnungskarten haben, gewinnen sie. In jedem Fall erhält der andere Spieler das gegenteilige Ergebnis. Wenn keiner der Spieler 5 Karten eines Typs hat, geht das Spiel in die nächste Runde und der Spieler, der in der vorherigen Runde Zweiter wurde, geht jetzt zuerst und umgekehrt.
KOTH Details
Jeder Bot spielt 400 Spiele gegen jeden anderen Bot gemäß den oben beschriebenen Regeln. Welcher Bot Spieler eins ist (und so geht er in der ersten Runde als Erster), wechselt jedes Spiel und jeder Status wird zwischen den Spielen zurückgesetzt.
Hier sind noch einmal die Artikel:
Dämonischer Pakt: Besiege den Dämon (Monster der Stärke 7) und das Monster darunter auf dem Dungeonstapel. - (besiegt nur den Dämon, wenn der Dämon der letzte im Dungeon war)
Heiltrank: Wenn du auf 0 HP fällst, besiege das Monster und kehre zu 3 HP zurück.
Heiliger Gral: Besiege Monster mit gerader Stärke (im Spiel sind diese Untote). Wenn ein Monster mit gerader Nummer auftritt, nachdem der dämonische Pakt angewendet wurde, handelt dies zuerst und Sie erhalten nach diesem Monster keinen zusätzlichen Pakt-Kill.
Vorpal-Dolch: Wähle ein Monster aus, bevor du den Dungeon betrittst. Diese Art von Monster ist besiegt. Wenn das Zielmonster auftritt, nachdem der dämonische Pakt angewendet wurde, handelt dies zuerst und Sie erhalten nach diesem Monster keinen zusätzlichen Pakt-Kill.
Schild: Addiere 3 zur Gesamt-HP vor dem Höhlenforschen. Dies hat keinen Einfluss auf die Verwendung von Heiltrank, wodurch die Gesundheit immer wieder auf 3 zurückgesetzt wird.
Rüstung: Addiere 5 zu den gesamten HP, bevor du Höhlenforscher bist. Dies hat keinen Einfluss auf die Verwendung von Heiltrank, wodurch die Gesundheit immer wieder auf 3 zurückgesetzt wird.
und das Deck : 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 9
.
Sie müssen eine Bot-Klasse implementieren, die keine Klassenvariablen verwendet und von der folgenden Basisklasse abgeleitet ist:
class BasePlayer:
def start_turn(self, last_turn):
raise NotImplementedError
def play(self, card):
raise NotImplementedError
def vorpal_choice(self, last_turn):
raise NotImplementedError
def result(self, bot, result, dungeon, vorped):
raise NotImplementedError
Diese Basisklasse zeigt die Methoden, die Ihre Klasse implementieren muss, und die Anzahl der Argumente, die von jeder Klasse verwendet werden.
Beschreibungen der Methodenargumente
last_turn
invorpal_choice
undstart_turn
ist eine Ganzzahl oder ein Wert von None. Ein Wert von 0 bis 5 zeigt an, dass der Feind die gezogene Karte zusammen mit dem durch diesen Wert angegebenen Gegenstand abgelegt hat (siehe Liste der Gegenstände oben). Ein Wert von 6 zeigt an, dass der Feind die Karte in den Dungeon gelegt hat. Ein Wert "Keine" zeigt an, dass der Bot in dieser Runde zuerst spielt (nicht möglich fürvorpal_choice
). Invorpal_choice
last_turn ist es wahrscheinlich 7, was darauf hinweist, dass sie diese Runde bestanden haben. Der einzige Umstand, unter dem es nicht 7 ist, ist, als der Feind die letzte Karte gezogen hat.card
ist eine Zahl, die die Stärke einer der oben aufgeführten Karten aus dem Stapel darstellt.
Jetzt sind die Argumente für result
etwas komplexer:
bot
zeigt den Bot an, der den Dungeon betreten hat. 0 zeigt an, dass der Dungeon betreten wurde, und 1 zeigt an, dass der Feind den Dungeon betreten hat.result
zeigt den Erfolg der Reise an. False zeigt an, dass der Höhlenforscher erfolgreich war, während True anzeigt, dass sie fehlgeschlagen sind.dungeon
ist eine Liste von Karten / Ints, die die Karten darstellen, die sich im Dungeon befanden. Der Dungeon wird auf Bestellung bestellt. Die erste Karte im Dungeon steht an erster Stelle in der Liste und die letzte Karte am Ende. Sie erhalten keine Informationen über weggeworfene Karten. Sie sind vor dem anderen Bot geheim.vorped
ist eine Ganzzahl, dievorpal_choice
die vom Höhlenforscher erstellte darstellt. Wennbot==0
, wissen Sie das bereits, aber wennbot==1
, kann dies eine nützliche Information sein.
Ich bin ehrlich, ich erinnere mich nicht ganz, warum ich das Gewinnergebnis falsch gemacht habe, aber ich denke, es war damals eine gute Idee.
Rückgabewerte
start_turn
: Gib 1 zurück, um eine Karte zu ziehen, oder 0, um zu passen.play
: Geben Sie 0 bis 5 zurück, um den entsprechenden Gegenstand und die gezogene Karte abzulegen, oder 6, um die Karte in den Dungeon zu legen (im Einklang mit der Eingabe von last_turn, außer beim Übergeben, das während start_turn erfolgt).vorpal_choice
: Geben Sie die Nummer der Karte zurück, die Sie mit dem Vorpal-Dolch eliminieren möchten (1, um 1s zu eliminieren, 5, um 5s zu eliminieren). Wenn Sie eine nicht vorhandene Karte auswählen, werden Sie getötet (8 ist illegal, 10 ist illegal, 0 ist illegal).result
: Sie können alles zurückgeben, da dies eine Informationsfunktion zum Aktualisieren der Bot-Daten ist.
Sie können den Controller hier überprüfen
Zusätzliche Erläuterungen oder nur das Wiederholen einiger kleiner Details, die Sie möglicherweise übersprungen haben und schnell wissen möchten:
Bots spielen 400 Spiele miteinander.
Keine Klassenvariablen
Kein Targeting auf bestimmte andere Bots
Kein Stützen anderer Bots
Keine Reflexionssachen wie das Ändern des Zufallsmoduls oder anderer Bots.
Maximal 6 Bots (pro Person), es sei denn, es ist offensichtlich, dass alle Bots es wert sind, in den KOTH aufgenommen zu werden (aber wahrscheinlich machen Sie trotzdem keine Bots)
Es gibt keine bestimmte Endzeit für diesen KOTH, außer das Ende der Prämie für das, was das wert ist. Versuchen Sie einfach, jedes Mal zu gewinnen.
Bisherige Ergebnisse (Entschuldigung, dass ich mit diesen Jungs ziemlich faul bin: P)
1 GrailThief 2732 0.98
2 Steve 2399 0.86
3 DevilWorshipper 1854 0.66
4 RunAway 1336 0.48
5 BoringPlayer 1190 0.42
6 SlapAndFlap 783 0.28
7 DareDevilDumDum 750 0.27
8 RandomMandom 156 0.06
Grailthief "stiehlt" das Kopfgeld. nicht wirklich, weil es es verdient hat. Gute Arbeit, Sleafar!
quelle
2. place the item in the dungeon. The item goes in the dungeon (duh)
scheint ein Tippfehler zu sein; Zu diesem Zeitpunkt wird kein Gegenstand erwähnt (Sie haben gerade eine Karte aus dem Monsterdeck gezogen). Die Regeln sollten wahrscheinlich etwas geklärt werden.or any information known only to one player.
bin ich wieder unklar? Der Dungeon wird erst am Ende aufgedeckt, sodass Karten, die von einem Bot gezogen wurden, nur einem Bot bekannt sind. Als Bonus werden abgeworfene Karten niemals aufgedeckt. Wenn Sie denken "na ja, dann gibt es eine probabilistische beste Strategie", ist die Vorhersage des Gegners immer noch sehr wichtig, daher ist dies auch ungültigAntworten:
GrailThief
Ein alter und erfahrener Dungeon-Crawler. Er weiß, dass die meisten anderen hoffen, dass der heilige Gral sie rettet, deshalb sorgt er dafür, dass er verschwindet.
quelle
DevilWorshipper
Mein erster Versuch einer KOTH-Herausforderung:
Im Wesentlichen werden wir den Pakt und den Vorpal-Dolch los, warten, bis der Dämon ins Deck kommt, und gehen vorbei. In jeder Runde, in der der Gegner den Dämon gezogen hat, besteht die prozentuale Wahrscheinlichkeit, dass die letzte Karte, die der Gegner gezogen hat, ein Dämon war, um einfach anzunehmen, dass er den Dämon bereits gespielt hat.
Lassen Sie mich wissen, wenn ich etwas falsch gemacht habe. Ich habe eine Weile nicht mehr mit Python rumgespielt, dies ist mein erster KOTH und es ist 2 Uhr morgens, also wird es bestimmt etwas geben.
EDITS:
Das Herausnehmen der Zufälligkeit hilft ihm sehr. Mit der Zufälligkeit ist es sehr dumm. Wie in den Kommentaren unten erwähnt, wird auch versucht, den Dämon oder Drachen zu beschwören.
Steve
Steve versucht zu erraten, ob der Dungeon tödlich ist oder nicht. Wenn er glaubt, dass es so ist, geht er vorbei. Davon abgesehen habe ich versucht, ihn dazu zu bringen, Gegenstände klug loszuwerden. Er passte seine PASS-Schwelle an, je nachdem, ob er im Dungeon starb oder der Gegner lebte, aber es machte ihn viel dümmer, so dass ich ihn loswurde.
Er schlägt GrailThief auf meiner Maschine immer noch nicht, kommt aber zumindest näher.
quelle
SlapAndFlap
Zum ersten Mal in KOTH, also schlag mich hart für Fehler.
Dieser eine Simpleton versucht immer, alle guten Gegenstände mit Monstern mit geringer Stärke zu entfernen, während er mächtige behält und dann den Gegner zum Spielen zwingt.
Es schlägt RunAway und DumDum mindestens: D
Mein anderer Bot in gelöschter Antwort für einige Zeit, ich muss ihn bis morgen reparieren
quelle
RandomMandom
Der obligatorische Zufallsbot. Passenderweise verliert er schwer gegen die Standard-Bots, was gut ist, weil es bedeutet, dass das Spiel zumindest eine Strategie hat.
quelle
DareDevilDumDum
irgendwie klar. macht niemals einen Rückzieher. Der einzige Weg, wie Sie (konsequent; RunAway verliert manchmal, aber es schlägt dies meistens immer noch) gegen diesen Bot verlieren können, ist, wenn Sie keine Gegenstände entfernen oder ein Super-Feigling sind. Stellen Sie sich diesen Bot als Erinnerung vor, um Gegenstände zu entfernen, sonst kann auch dieser gewinnen.
Und
Renn weg
so ziemlich entfernen sie Rüstungen und rennen dann einige Zeit vor dem Ende weg. als daredevildumdum erinnert es sich an nichts, außer an die Anzahl der Karten im Deck (an die sich tbh im eigentlichen Spiel nicht erinnern würde (Sie würden nur nachsehen)) und ob jemand die Rüstung entfernt hat (meistens die gleiche wie zuvor ).
Auch weil ich ein spezielles Herausforderungsposter bin, zählen diese Bots nicht für meine Botanzahl, da es sich um Beispielbots handelt, die dumm sind
quelle
BoringPlayer
Im Gegensatz zu RandomMandom trifft BoringPlayer immer die gleichen Entscheidungen. Das Problem ist, dass es für einen so einfachen Bot zu erfolgreich zu sein scheint. In meinem lokalen Test werden 3800+ Punkte erzielt.
quelle