Göm menyn

Nätverksspel

Målsättning

Syftet med detta projekt är att implementera ett enkelt textbaserat nätverksspel. Exempel på spel som är lagom avancerade är luffarschack och sänka skepp. (Exempel på spel som är alldeles för enkla för att passa det här projektet är sten-sax-påse och tre i rad.) Grundtanken är att implementera enkla brädspel, men även andra typer av spel kan komma ifråga. Detta projekt kan med fördel kombineras med projekten Poker/Yatzy eller Othello, men kan lika gärna genomföras med ett annat spel.

Spelet ska bestå av två skilda programvaror: en server och en klient. Serverns uppgift är att hålla reda på spelplanen, verifiera att drag från klienterna är korrekta samt att dessa distribueras till motparten. Klienten erbjuder i princip bara ett grundläggande gränssnitt mot en användare som kan mata in drag och få se den aktuella spelställningen. För detta ändamål kommer enbart vanlig text att användas. Servern och klienterna ska kunna köras på olika datorer och ska alltså kommunicera med varandra via ett nätverk.

Handledaren kommer vid första gruppmötet att gå igenom hur grundläggande nätverkskommunikation fungerar och hur detta sker i Lisp. Se kodexempel i filen chat.cl som implementerar en enkel chat.

Möjliga utökningar

Ambitionsnivån för projektet bestäms i samråd med handledaren. Om man känner sig hemma på Lisp eller programmering i allmänhet kan man välja en högre ambitionsnivå genom någon av nedanstående utökningar:

  • Utöver den vanliga "människoklienten" kan man också implementera en "datorklient" där någon form av enklare AI sköter spelet. Detta brukar ofta göras i Othello-projektet.
  • Servern skulle kunna vara värd för många olika spelare. Man skulle kunna utforma servern så att godtyckligt många spelare kan ansluta sig och när de är inloggade chatta med andra personer och på så vis hitta någon att spela med. Servern ska då kunna hålla igång flera olika spel samtidigt. För detta ändamål behöver man studera hur multitrådning fungerar i Lisp, dvs hur man kan hålla igång flera processer samtidigt. Se kodexempel i filen multi.cl.

Projektidé av Peter Dalenius 2003.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2010-11-03