Projektdokumentation för Othello

Relevanta dokument
allt.cl Page 1 of 17 Date: torsdag 7 december 2006

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll

Handbok Fyra i rad. Martin Heni Eugene Trounev Benjamin Meyer Johann Ollivier Lapeyre Anton Brondz Översättare: Stefan Asserhäll

Fyra i rad Javaprojekt inom TDDC32

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll

Kravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer

Programmeringsolympiaden 2012 Kvalificering

Genetisk programmering i Othello

Nätverksprogrammering, EDA095

TDP Regler

SPELREGLER. 2-4 deltagare från 10 år

kl Tentaupplägg

Beskrivning av Gesällprov. Fia Med Knuff. Mikael Rydmark.

[][] Arrayer med två index

Kort Sammanfattning av Schack MAS

Utförliga regler för TRAX

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Lässtrategier för att förstå och tolka texter samt för att anpassa läsningen efter textens form och innehåll. (SV åk 1 3)

kl Tentaupplägg

kl Tentaupplägg

Brädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999.

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

HexaFlip. Kravspecifikation

HI1024 Programmering, grundkurs TEN

DUGGA Tentaupplägg

kl Tentaupplägg

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

UPPGIFT 1 V75 FIGUR 1.

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

Programmeringsprojekt, STS1

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004

kl Tentaupplägg

TDDC74 - Projektspecifikation

kl Tentaupplägg

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Hexaflip. Analysis and Design Document. Version 2.0 α Last modified: Martin Larsson

HI1024 Programmering, grundkurs TEN

kl Tentaupplägg

Sagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Programmering II (ID1019) :00-11:00

Tentamen TEN1 HI

Programmering. Den första datorn hette ENIAC.

Uppgift 1 (vadå sortering?)

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Schackledarens blad Lektion 1

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

public class Main extends MovieClip { var hillpage:hillpage; var ifpage:ifpage;

kl Tentaupplägg

DUGGA Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

kl Tentaupplägg

Installera Anaconda Python

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Anteckningar propp SMT2

Rektangelpussel 1. Använd tre bitar vilka som helst och gör en 3 5-rektangel.

Handicom. Symbol for Windows. Blisseditor. Version 3.4

Programmeringsolympiaden 2018

Programmering. Analogt och med smårobotar. Nina Bergin

kl Tentaupplägg

kl Tentaupplägg

Programmeringsolympiaden Kvalificering mars 2005 FIGUR 1.

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

EDA095 Nätverksprogrammering

Uppgift 1 ( Betyg 3 uppgift )

1 Kravspecifikation Snake App

Tentaupplägg denna gång

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

Handbok Kigo. Sascha Peilicke Översättare: Stefan Asserhäll

Regler för: - Räkna med sedlar og mynt!

Programmering Grundkurs Laboration 1

Trivselregler. SPELREGLER (utdrag)

LÄRARHANDLEDNING. Eleverna kan två och två eller i större grupper på ett lekfullt sätt träna följande: Talinnehåll Addition Subtraktion Multiplikation

Ett häfte om förbundet och Othellots regler, taktik och strategi.

UPPGIFT 2 KVADRATVANDRING

ENKEL Programmering 3

Årtalet: Platsen: Amerikanska västern.

Protokoll MiniBridge

Steg-för-steg. Hur vinner du i Bridge? Budgivningen. Grundförutsättningar. 1. Räkna poäng. 2. Budgivning - del 1. Vilket par har flest poäng?

Handbok Fyrkanter. Matt Williams Granskare: Eugene Trounev Översättare: Stefan Asserhäll

Självlärande Othello-spelare

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

tentamensdags och lab 3

kl Tentaupplägg

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 20

Kravspecifikation TDP005 Projekt: Objektorienterat system

kl Tentaupplägg

EU-resan En upptäcktsfärd. Så här spelar du

CHESS & GAMES INSTRUKTIONSMANUAL

Endast medlemmar i STR har tillgång till Objektbanken i astra WEB.

TDP Regler

Kungar och Skatter. 2. Ta sedan de fyra essen och blanda dem och lägg sedan slumpvis ut ett ess uppvänt i varje hörn (se fig 2).

UngO teket. Banläggning i OCAD. ungoteket.se

Switch Driver 5. Programvara för Radio Switch, JoyBox och JoyCable. Sensory Software

Transkript:

Projektdokumentation för Gustav Fransson Nyvell gusfr229@student.liu.se Tomas Franzén tomfr819@student.liu.se 1. Inledning Vi har gjort ett -spel som går ut på att man turas om att lägga brickor på en spelplan och ta över motståndarens brickor. Den som har flest brickor när spelplanen är full (eller när ingen kan lägga mer) vinner. 2. Kravspecifikation En person ska kunna spela mot datorn. I början får personen välja vilken sorts bricka denne vill ha. Spelplanen ritas som text i terminalen. Programmet numrerar de möjliga dragen, placerar ut siffrorna på spelplanen och presenterar en lista för användaren som sedan får skriva in en siffra och draget görs. 3. Systemdesign 3.1 Översiktlig beskrivning Systemet består av dessa delar: Spelplanen håller ordning på pjäserna. Man kan sätta ut pjäser, kolla vad som finns i en ruta, och så vidare. AI kan räkna fram bästa dragen. En funktion som man låter gå genom spelplanen och ta reda på vilket drag som är bäst. Gränssnittet tar hand om användaren och kommunikation med denna. 3.2 Algoritmer Om någon har vunnit kontrolleras genom att se om spelplanen är full eller om någon inte har några pjäser kvar på plan. AI-spelaren ska spela enligt min-max-metoden. En möjliga-drag-funktion som ger en flyttar där alla möjliga drag på en viss spelplan finns. En värdera-plan-funktion som ger ett planvärde för en viss spelplan. En funktion som byter brickor mellan två punkter på planen till en viss bricktyp. 3.3 Datastrukturer Strukturer där inga funktioner nämns ovan förväntas ha dessa gemensamt: Skapa struktur (constructor) Ta ut viss del (selector) Kolla om ett godtyckligt objekt är av typen (identificator) 2006-12-07 1

Spelplanen ska vara en matris med 8x8 platser, där varje plats kan ha tre olika värden; spelare 1, spelare 2 eller tom. Spelplanen behöver dessa funktioner: Skapa spelplan Lägg ut en bricka på en plats Kolla vad som ligger på en plats Kolla om någon har vunnit Planvärde innehåller ett heltal. Planvärde berättar hur pass attraktiv en viss spelplan är (till exempel för AI:t). Spelare är en tupel som innehåller en flyttfunktion (lisp-funktion), ett spelarnamn (lispsträng) och en bricktyp. Flyttfunktionen är den som kör-loopen kallar när den vill ha ett drag, på så vis kan en spelare abstraheras till att vara till exempel en person vid tangentbordet, en AI-spelare eller en person vid en annan dator på ett nätverk. Funktioner: En gör-flytt-funktion som tar en spelare och inducerar ett drag från denne på en spelplan. Spelarlista innehåller en cirkulär lista med spelare. Listan är cirkulär därför att man kommer gå igenom den om och om igen. Bricka innehåller en symbol som kan vara SVART eller VIT. Flytt innehåller en punkt på spelplanen. Punkt innehåller två heltal, x och y. Flyttar innehåller en lista av flytt-objekt. othello spel-loop skriv-spelplan gör-flytt mänskligt-drag slump-gör-flytt ai-gör-flytt 2006-12-07 2

4. Användarhandledning Spelet är uppdelat i flera filer. Evaluera filen ladda.cl så laddas alla andra nödvändiga filer. Kör sedan funktionen othello för att starta spelet. Om man använder en terminal som inte klarar färg kan man starta det med t som första parameter (othello t) så används ingen färg. När spelet startar frågar det efter båda spelares typer och namn. Det finns tre olika typer av spelare: Människa är en vanlig spelare som styrs av att användaren får välja drag Dator är en AI-spelare som försöker räkna ut de bästa dragen Slump väljer slumpade drag Välj typ av spelare genom att skriva ett av valen ovan eller bara första bokstaven (M, D eller S). Efter användarvalen får man välja hur stor spelplanen ska vara. Det normala är 8x8, men man kan också köra med en mindre eller större plan om man så önskar. Spelplanen som visas under spelets gång har två olika sorts pjäser motsvarande användarna som skapades under spelets start. Före varje drag visas ett antal siffror (eller bokstäver) på planen motsvarande alla möjliga drag. Användaren väljer sedan en av dessa för att lägga en bricka där och fortsätta. Om man trycker Enter utan att specifiera ett drag slumpas ett fram. 2006-12-07 3

Körexempel (utan färg): CL-USER(2): (othello)! Spelare Vit: Spelartyp: m Spelarnamn: Tomas Spelare Svart: Spelartyp: d Spelarnamn: Datorn Brädets bredd: 8 Brädets höjd: 8 3 X O 2 4 O X 1 Svart: 2 - Vit: 2 Det är Tomas tur. Välj ett drag: 1 2 X O X X 3 X 1 Svart: 4 - Vit: 1 Det är Dators tur. 2006-12-07 4

5. Erfarenheter Vi har lärt oss följande saker av projektet: Det är svårt att skriva en bra specifikation innan man har börjat jobba med projektet. Hur man skriver en enkel AI. Hur man använder Subversion i praktiken i en grupp. Mer om hur arrayer och strukturändrande funktioner fungerar och hur man använder dem. 2006-12-07 5