Leland Gaunt

Spelar: Smugglarens Dilemma - Lab F1Pt

Håkan T. Johansson

Roger Lindsjö

Utvecklingsteam 47

Var försiktig:

Leland Gaunt
kommer att
återvända

Inledning

Vår uppgift är att skapa en datoriserad spelare som spelare `Smugglarens dilemma' mot andra datoriserade spelare. Spelets regler är sådana att man kan antingen välja att samarbeta eller luras. Om båda spelarna väljer samarbeta får båda 2 poäng, om båda luras får ingen några poäng och om en luras och en samarbetar får den som lurades 4 poäng medan den som samarbetade får -1 poäng. När alla spelare mött varandra är den som har flest poäng vinnare. Programmet skall vara skrivet i ADA.

För den som vill läsa, finns rapporten tillgänglig här (postscript) (pdf).

Spelare47.adb 'Leland Gaunt'

Spelaren består av ett tjugotal strategier som har förhandsvalts mot de flesta kända motspelarna. Leland har också möjlighet att mot vissa tillämpa en speciell dragserie. Den information som behövs för att veta vilken taktik som skall aktiveras mot vem finns i slutet på spelaren gott om information, dels taktikval, dels hela dragserier.

Att skapa vår spelare

Vår spelare har 20 olika metoder att spela med, dessa finns i varsin fil, för att sedan sättas ihop till en enda. De olika metoderna:

Vår spelare består dessutom av ett antal globala variabler:

type OppSpecsArray is array(1 .. <antal kända motspelare>) of OppSpecsRec;
type MoveSpecsArray is array(1 .. <antal fördefinierade dragserier>) of MoveSpecsRec;

Och givetvis, spelarrutinen Player47.adb.

Vår spion

Innan spelaren skapas kontrollerar vi med ett specialprogram vilka metoder som skall användas mot vilka motspelare. Först kontrolleras vilka spelare som finns tillgängliga, sedan spelas matcher mellan nya/ändrade spelare, dels mot oss, dels mot varandra. Om vi upptäcker att någan annan spelare X är mycket bättre än vår bästa metod mot en annan spelare Y, kontrollerar vi Xs dragsekvens mot Y och testar vad som händer om vi använder den mot Y; om det går bra, använder vi den. Spionen är skriven i C++ och består av tre filer källkod:

Så här kan det se ut när spionen är igång.

Vår spelargenerator

Spelargeneratorn sätter ihop spelare47.adb från alla delfilerna (Global_variables1.adb, Global_varibales2.adb, Default.adb, Titfortat.adb, ..., Predefpattern.adb, Player47.adb) samt taktik och dragseriefunktion. Generatorn är också skiven i C++ och består av:

Om du har kommentarer, tips, frågor, idéer, vad som helst:

E-Mail: Håkan T. J.

Så här gick det 1996-12-19

Alla fungerande spelare är med och matcherna har varat i 999 drag.

Till vänster ses spelarnas poäng normerade (dvs, delade med antalet drag varje spelare fått göra).

  1 Leland Gaunt     47     262943
  2 Einstein         15     260448
  3 The Staff of Law 72     250646
  4 Jason             4     247797
  5 Mitt namn är Nej 49     239421
  6 Brecht DDF3      75     239124
  7 My little pony   41     238739
  8 El Zorro          3     238700
  9 johndoe           5     238670
 10 Looser            6     238664
 11 File not found   64     238651
 12 Akilles_ny       29     238640
 13 Badger           60     238639
 14 Bert-Knut        40     238626
 15 **Dark Avenger** 63     238575
 16 Nu jävlar!       21     238573
 17 Picard            7     238503
 18 Becky            16     238472
 19 Madde Albright   50     238471
 20 Mohammad         11     238464
 21 mishformash      80     238450
 22 SET_PAGE_LENGTH  13     238256
 23 A                56     238251
 24 Ville Vessla I   42     238228
 25 You Bastard      57     237984
 26 Flossy           28     237943
 27 Nurse Ratched    45     237896
 28 Uffe Ekman        9     237888
 29 Numb             62     236787
 30 Nerd-patrol(lam) 32     236710
 31 Wedge Antilles   20     236653
 32 Groover          59     236609
 33 Mithrandir       24     236395
 34 Jansson          30     235691
 35 TitforTat        81     235460
 36 Kanon en o en    35     234917
 37 Tant Gredelin    25     234738
 38 Skalman          44     234609
 39 K3               18     232894
 40 Hekla_o_Cajo     27     225314
 41 Bramserud         8     224499
 42 Kinkyboy         31     223954
 43 Fallos           53     223690
 44 Si solutions-55  55     223613
 45 JAS              52     222385
 46 Bluff & båg      51     222186
 47 John Silver      46     220564
 48 Mulo             43     219721
 49 Fluortanten      65     219375
 50 ??????           33     219134
 51 Nisse            39     217619
 52 Grymme!!         38     216212
 53 Ey_Paco          17     212965
 54 Buttersmurfen     1     210790
 55 ångvälten        22     210327
 56 Kasparov         58     203849
 57 LOKET            26     203737
 58 The champions     2     202453
 59 Gud              69     198324
 60 !!!!             23     190679
 61 Rotary pub       12     185309
 62 Kjell_Kriminell  76     121333
 63 Ohoj Postbanken! 34      59064
 64 Xerxes           71      57094