Göm menyn

Poker/Yatzy

Poker och Yatzy är två spel som kanske inte verkar ha så mycket gemensamt. När man ska implementera dem i Lisp visar det sig dock att man stöter på ungefär samma problem och därför har vi valt att ha dessa två spel i samma projekt.


Beskrivning av Poker-projektet

Uppgiften består av att skriva ett program för pokerspel. En användare ska kunna spela poker mot datorn, byta kort och satsa pengar. Meningen är givetvis att vinna alla motspelarens pengar.

Vad som bör vara med i pokerspelet är:

  • Två byten av kort
    Varje spelare erhåller en hand kort, väljer vilka kort som ska bytas, får nya kort, byter igen, och satsar slutligen pengar. Bäst hand vinner pengarna i potten. Att satsa pengar mellan varje byte är ett annant alternativ.
  • Spel om pengar
    Möjligheten att satsa, syna eller lägga sig ska finnas i spelet.
  • Vettig datorspelare
    För att det ska bli roligt att spela spelet får inte datorspelaren vara för dålig. Tips för hur en vettig datorspelare kan konstrueras ges under första gruppmötet.

Exempel på en giv:

   Du har 100, datorn har 100.
   Datorn ger. Given kostar 5 Kr.
   Din hand: H5, R5, R9, SKn, SKu
   Du har ett par.
   Datorn satsar 3 Kr. Lägger du dig? N
   Vilka kort kastar du? R9, SKn, SKu
   Datorn slängde 2 kort.
   Din hand: H5, R5, S5, K7, K10
   Du har triss.
   Hur mycket satsar du? 5
   Datorn synar. Datorns hand: H2,K2, S2, HD, RKu
   Datorn hade triss. Du vinner.

Exemplet visar själva spelgången, exakt hur interaktionen ska ske bestämmer du själv.

Oändligt med roliga vidareutvecklingar av detta projekt finns för den kreative studenten. Här är några exempel:

  • Fler spelare än två
    Utöka spelet till att hantera fler spelare vilka kan kontrollerade av datorn eller en mänsklig spelare. Viss begränsing av antalet spelare p.g.a. antalet kort i en kortlek blir dock nödvändlig. (Vid väl genomtänkta datatyper så behövs endast en liten generalisering av programmet för att detta ska fungera.)
  • Genetisk programmering
    Låt två eller flera datorspelare spela matcher mot varandra. De bästa får gå vidare, de andra kastas bort. Nya datorspelare genereras fram, och matcherna fortsätter. Den artificiella evolutionen tar med tiden (förhoppningsvis) fram en mycket kompetent datorspelare åt dig.
  • Kognitiva förmågor
    En datorspelares satsningsstrategier kan avslöja vilka kort han har på hand. Genom att låta datorspelaren ha möjlighet att bluffa och förändra sin satsningsstrategi beroende av hur många kort motståndarna bytt, pengar i potten, och liknande, får man en mer mänsklig datorspelare. Detta borde göra det roligare och mer realistiskt att spela mot datorn. (Dock är det inte så säkert att detta leder till en datorspelare som oftare vinner.)
  • Grafiskt gränssnitt
    Låt interaktionen med pokersystemet ske via ett grafiskt gränssnitt istället för via inmatning av text. Detta kan dock vara lite krånligt i Lisp, så det rekommenderas inte.

Beskrivning av Yatzy-projektet

Uppgiften består av att skriva ett program för yatzyspel. En användare ska kunna spela Yatzy mot datorn, genom att slå tärningar, och bestämma var han vill sätta sina poäng. Ta gärna en titt på de kompletta reglerna för Yatzy.

Vad som bör vara med i yatzyspelet är:

  • Två slag med tärningarna
    Varje spelare får kasta de fem tärningarna, välja vilka som ska kastas om, kasta dessa, välja på nytt, kasta för en sista gång. Position att placera resultatet på ska sedan väljas, spelaren får poäng och det är nästa spelares tur att kasta tärningarna.
  • Bonusfält
    Möjligheten att får bonus är viktig i Yatzy. Får man över 63 poäng på den övre delen av spelplanen (ettor, tvåor, ..., sexor) får man 50 poäng i bonus. Detta bör existera även i ert yatzyspel.
  • Vettig datorspelare
    För att det ska bli roligt att spela spelet får inte datorspelaren vara för dålig. Tips för hur en vettig datorspelare kan konstrueras ges under första gruppmötet.

Exempel på en giv:

  Spelare David's tur.
  Du kastar tärningarna. Resultat: 5 6 6 2 6  Kast kvar: 2
  Ange ett kommando: kasta 1 3
  Du kastar om tärningarna. Resultat: 4 6 6 6 6  Kast kvar: 1
  Ange ett kommando: kasta 1
  Du kastar om tärningarna. Resultat: 6 6 6 6 6  Kast kvar: 0
  Ange ett kommando: placeringar
  Sexor:       36
  Par:         12
  Tretal:      18
  Fyrtal:      24
  Chans:       36
  Yatzy!:      50
  Ange ett kommando: placera Yatzy!

Exemplet visar själva spelgången, exakt hur interaktionen ska ske bestämmer du själv.

Oändligt med roliga vidareutvecklingar av detta projekt finns för den kreativa studenten. Här är några exempel:

  • Fler spelare än två
    Utöka spelet till att hantera fler spelare vilka kan kontrollerade av datorn eller en mänsklig spelare. (Vid väl genomtänkta datatyper så behövs endast en liten generalisering av programmet för att detta ska fungera.)
  • Genetisk programmering
    Låt två eller flera datorspelare spela matcher mot varandra. De bästa får gå vidare, de andra kastas bort. Nya datorspelare genereras fram, och matcherna fortsätter. Den artificiella evolutionen tar med tiden (förhoppningsvis) fram en mycket kompetent datorspelare åt dig.
  • Grafiskt gränssnitt
    Låt interaktionen med yatzysystemet ske via ett grafiskt gränssnitt istället för via inmatning av text. Detta kan dock vara krånligt i Lisp, så det rekommenderas inte.

Projektidé vidareutvecklad av David Rosén.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2004-11-08