PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI



Relevanta dokument
Nätverksprogrammering, EDA095

Projektrapport. MegaLoad. Nätverksprogrammering EDA

HexaFlip. Kravspecifikation

EDA095 Nätverksprogrammering

Projektrapport EDA095

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?

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

Kortspel. Ett spel - tusen upplevelser

Piff och Puffs Chatsystem

Åtkomst och användarhandledning

PROJEKT- PRESENTATION

Projektdokumentation för Othello

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Hjälps åt att skriva några rader om senaste scoutmötet i avdelningens loggbok.

Allmänt om Pidro. Spelets uppbyggnad

Hidden Camera App. Realtidsprogrammering EDA040. Joakim Svensson (dt05js8) Torbjörn Lundberg (dt05tl3) Henrik Andersson (dt05ha1)

LABORATION 1 Pingpong och Installation av Server 2008 R2

Handbok Officersskat. Martin Heni Eugene Trounev Granskare: Mike McBride Översättare: Stefan Asserhäll

Thomas Padron-Mccarthy Mobila applikationer med Android, 7.5 hp (Distans) (DT107G ) Antal svarande = 13. Svarsfrekvens i procent = 27.

Ekvationen.

STÄNG AV FÖNSTER. Kaos - regler. Spelets innehålls Spelets mål Förberedelser. Bilder Spelets gång Spelets slut. Spelets innehålls.

getsmart Gul Regler för:

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

UPPGIFT 1 V75 FIGUR 1.

Inlämningsuppgifter, EDAF30, 2015

Felsökningsguide för Windows XP

Styrning från telefon. Styrning mellan två Robofonsändare. Styrning via SMS. Styrning via dator

Fyra i rad Javaprojekt inom TDDC32

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Bridge. på 10 minuter

FIRSTCLASS. Innehåll:

Ett spel skapat av Albin Wahlstrand

Ungefär lika stora tal

Uppgift 1 ( Betyg 3 uppgift )

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

Handbok Kdots. Minh Ngo Översättare: Stefan Asserhäll

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

TDP Regler

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

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

Webservice & ERP-Integration Rapport

Hur tycker du kursen har varit? Tycker du att kursens upplägg har underlättat för dig att uppnå lärandemålen?

Lab5 för prgmedcl04 Grafik

Bråkspelkort. Spela dig till färdigheter och förståelse. Bråk procent decimaltal diagram

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

Spelregler för restaurangkasinospel

TDIU Regler

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

Tentamen, EDAA10 Programmering i Java

Att komma igång med FirstClass (FC)!

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Tepz klon. - Projektrapport. Linnéuniversitetet, Individuellt mjukvaruutvecklingsprojekt Janina Bergström, WP12 Distans

Steg 1 Starta Windows Live Mail och påbörja konfigurationen

Krav: * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Inlämningsverktyget i Fronter för lärare

Klientmanual. Inställningar och spelstart Windows & Linux

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

54 kort: 10 plockarkort 10 trädgårdsmästarkort 10 extra arbetarkort 24 fruktträdskort

Slutrapport för SquareShooter

Gränssnitt för FakeGranska. Lars Mattsson

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Flexiservice PS/2. Bruksanvisning

Laboration med Internet och HTML

Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS

Manual för ansökan till Stiftelsen Kjellbergska Flickskolans Donationer

Skicka SMS/e-post påminnelser från Microsoft Excel

Realtid. eda040project2010 MANUAL. - Christoffer Olsson. - Daniel Lehtonen

Regler för: getsmart Grön

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

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).

050504/AE. Regler för Pick n Click

Programmering B med Visual C

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Laboration 2 Datorverktyg vid LiU

Praktikum i programmering

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

3.2 LÄRARHANDLEDNING GRUNDKURS SPELTEKNIK

Abstrakta datatyper Laboration 2 GruDat, DD1344

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

Lathund till First Class

Lathund. Beställa tandvårdsintyg i Tandvårdsfönster

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

TrackBlock Tracking System Bruksanvisning

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Voic i FirstClass

Programmering av. PADDY mini

1 Kravspecifikation Snake App

Inspektion Användarmanuel

Ishavsspelet är ett kort- och tärningsspel för 2-4 spelare som bygger på tur och lite strategi

kom igång med Maestro 100

BRIDGE MASTER 2000 SCANDINAVIA av Fred Gitelman

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

För att ENDAST använda Appen måste Centralkortet ha minst Version 1.30 och larmsändaren med lägst version 4.11.

Transkript:

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI NG STRESS LUNDS TEKNISKA HÖGSKOLA - 2013-05-22 Projektmedlemmar: Emil Apelgren adi10eap@student.lu.se Fredrik Helander gda10fhe@student.lu.se Jonathan Klingberg adi10jkl@student.lu.se Charlotte Leifland adi10cle@student.lu.se Handledare: Björn A Johnsson

Table of Contents Bakgrund...3 Stress...3 Kravspecifikation...3 Modell...4 Klient Klasser:...5 ClientListener extends Thread:...5 ClientMain:...5 Server Klasser:...6 GameServer:...6 GameHandler:...6 GameServerThread extends Thread:...6 Användarhandledning...6 Utvärdering...7 Programlistor...7 To do:...8 Appendix A...8

Bakgrund Det här projektet har varit till för att vi ska applicera den nya kunskapen som vi har fått inom kursen nätverksprogrammering. Projektet ska vara relevant för kursen och den stora delen ska behandla kommunikationen mellan en server och flera klienter. Vi har tillämpat och utnyttjat det vi har lärt oss på laborationerna för att skapa bra kommunikationskanaler för vårt kortspel Stress. En viktig del i projektet har varit att klienterna ska fritt få skriva till servern. Stress Vi har utvecklat kortspelet stress där vi har utvidgat spelet till 2-4 spelare. Spelet börjar med att två kortlekar blandas och två kort dras och läggs ut på en vänster-hög respektive en höger-hög. Resterande kort delas ut mellan spelarna. Spelet går ut på att bli av med sina kort så snabbt som möjligt. Varje spelare lägger ner fyra kort på bordet från sin hand. Man väljer sedan ett kort att lägga på en av högarna. Kortet man lägger måste ha värdet +-1 jämfört med det på högen för att godkännas. Vid samma valör på stacken kan man trycka på knappen Stress och då kommer korten som ligger på bordet delas ut till övriga spelare samtidigt som två nya kort dras till vardera hög. Viktigt är att påpeka att detta kortspel inte är full rättvist utan att spelomgångarna skiljer sig åt. Kravspecifikation Från början av projektet ville vi göra spelet till en Andriod applikation där en mobiltelefon agerade värd och deltog i spelomgången och de övriga spelarna hanteras som enkla klienter. Spelplanen skulle visa alla spelares kort under spelets gång. Stress är ett hetsigt spel där varje spelare ständigt skickar information om deras drag över trådar till servern och förväntar sig snabbt svar för att kunna lägga nästa kort. Krav: 1. 2-4 Spelare ska kunna ansluta sig till servern för att spela mot varandra. En av spelarna agerar server och är värd för en spelomgång.

2. Servern skall blanda korten och delar ut samtliga kort till klienterna i turordning. 3. Servern tar 2 start kort som läggs ut på spelplanen och spelet startas. 4. Spelarna placerar 4 kort framför sig på spelplanen. 5. En spelare ska enkelt kunna välja vilken hög på spelplanen som är aktiv dvs. vilken hög den vill lägga sitt kort på. 6. Servern ska kontrollera giltiga drag. 7. Vid giltigt drag ska kort automatiskt tas från spelarens hand och läggas på bordet. Detta endast om spelaren har kort kvar på handen. 8. Vid ogiltigt drag skall kortet som spelaren försökt lägga läggas tillbaka på bordet. 9. Spelare skall kunna trycka på knappen Stress. Servern ska kontrollera att stressen är godkänd. a. Vid godkänd stress skall korten i högarna blandas och två start kort läggs ut resten av korten delas ut till de spelarna som inte tryckte stress. b. Meddelande om misslyckad stress skickas ut till samtliga spelare. 10. När en spelare är av med alla sina kort ska servern meddela de övriga spelarna att spelet är slut och vem som vann. Kravkommentarer 4. Spelaren skulle från början själv trycka på en knapp för att få ner ett nytt kort på spelbordet från sin korthand. Detta sker automatiskt så länge en spelare har kort kvar. 9b. Har inte blivit implementerad 10. Vi meddelar inte spelarna när spelet är avslutat. Modell Klient Klasser: ClientListener extends Thread: När en ClientListner skapas får den tillgång till en anslutning mot servern. Denna anslutning används för att lyssna efter kommandon från servern samt att skicka kommandon till servern. Den får även åtkomst till Player objektet. Det är här alla kodmeddelanden från servern tyds och behandlas på respektive vis hos klienten. Varje kodmeddelande består utav tre tecken där vi har valt att representera de olika händelserna med siffror. Kod Kommando

0xx Stress 1xx/2xx Stack1/Stack2 uppdaterad 3xx Klient vill stänga ner anslutningen 4yy Starta spelet, varje spelare lägger upp 4 kort på spelplanen 5xx Klienten får ett kort till sin hand från servern där yy representerar vilket kort 1-52 (vid ny runda samt vid Stress) 8xx Stress inte tillåten 9xx Spelarens drag är inte tillåten Tabell 1 visar alla koder samt deras betydelse ClientMain: ClientMain skapar ett Player objekt som håller reda på spelarens egna kort samt de nödvändiga korten på spelplanen som spelaren måste kunna interagera med. Den ansluter sig mot serverns socket med bestämd IP adress och Port nummer. Den skapar en tråd som lyssnar på strömmen från servern samt en tråd som kan skriva till servern och startar dessa två. Server Klasser: GameServer: Här erhålls en ServerSocket som accepterar anslutningar på port 30 000. När en klient ansluter till servern skapas den som en tråd (GameServerThread) i en lista tillsammans med de andra anslutna klienterna för att servern enkelt ska hantera flera klienter samtidigt. Vidare skapas en GameHandler som håller reda på de två stackarna på mitten spelplanen som samtliga spelare ska kunna se. Här skapas även en tråd (SendToAllThread) som observerar förändringar på spelplanens stackar och meddelar samtliga anslutna spelare om uppdateringen. Här ligger även metoden för att blanda korten och starta spelet. GameHandler: Här hanteras spelplanen och de två högarna på bordet skapas och hanteras. Det är här alla metoder för att kontrollera om spel dragen är godkända finns. Kod Kommando 0xx Kontrollerar om det är Stress 1yy Kontrollerar om kortet yy är tillåtet på stack 1 2yy Kontrollerar om kortet yy är tillåtet på stack 2 3xx Stänger ner anslutningen mot klienten Tabell 2 visar koder och kommandon som servern hanterar.

GameServerThread extends Thread: Här etableras unika anslutningar för att läsa och skriva mellan servern och varje klient. Här tas kommandon emot och svar skickas till klienten. TimeServerThread: Är en tråd som kollar tiden sedan ett giltigt kort las på någon av stackarna. Vid ett givet värde (ca 10 sek) så läggs två nya kort på stacken. Som också skickas ut till samtliga spelare. Användarhandledning När en spelare ansluter sig till spelet och spelet startar tilldelas alla spelare lika många kort. Man väljer en stack genom att klicka på den och den kan bytas hela tiden under spelets gång. För att bli av med korten väljer man ett av sina fyra kort som ligger på bordet som är ett lägre eller ett högre i värde än det kortet som ligger på den valda stacken. Om korten överst på stacken har samma värde kan man trycka på stress. Vinner gör man när alla ens kort är slut. Se Appendix A för användarmanual. Utvärdering Om vi hade gjort om detta projekt skulle vi gör om gör rätt med vilket vi menar att vi skulle strukturerat upp projektet betydligt bättre och bestämt alla klasser och metoder vi behövde innan vi började koda. Helt enkelt använda oss mer utav den kunskap av projektprocesser vi använt i tidigare kurser. Vi skulle vilja representera spelplanen på ett mer användarvänligt sätt med riktiga grafiska kort samt i färg. Dessutom möjligheten att se alla spelares kort och hur spelplanen ständigt uppdateras. Nätverksprogrammeringen har varit givande, men svår för oss studenter som kommer från Kinainriktningen och inte programmerat mycket på en längre tid. Detta är vad vi förstått inte ett problem för nästkommande årskurser för C programmet som har en annorlunda och ny kursplan. Det är en roligt och givande projekt och skapar intresse för programmering och spelutveckling samt nätverkskommunikation. Mer engagemang från handledare där ett enkelt mail i varannan vecka med information om inlämning och fråga hur det går skulle varit givande och vi skulle haft mer kunskap om hur vi låg till och när allting och hur allting ska redovisas.

Programlistor Attached as a zip file. Hemsida: http://users.student.lth.se/adi10jkl/ To do: Fixa lite buggar. Göra bättre grafik. Appendix A Användarmanual Stress Nätverksprogrammering projekt EDA095 LTH 1. Anslut till spelet genom att skriva in serverns IP Adress och portnummret är: 30000 2. Personen som agerar Server trycker på knappen Create Game när alla spelare som ska spela är anslutna klicka på starta spel. 3. Börja Spela a. För att välja en aktiv hög som man vill lägga kort på klickar man på önskad stack b. Korten man har på bordet representeras 4 knappar. c. För att välja Stress klickar man på stress knappen d. För att avsluta spelet stänger man programmet. 4. Regler a. Välj en av högarna på bordet b. Välj ett av dina fyra kort du har på bordet som har differensen 1 med kortet på högen. Exempel: Vald hög visar en 4:a, godkända kort är en 3:a och en 5:a. c. Specialfallet är Ess som både är det högsta och lägsta kortet. Det går alltså att lägga både en 2:a samt en kung: 13 d. När båda högarna visar samma värde tryck på Enter för Stress. Exempel: två 7:or e. Vinner gör man genom att bli av med alla sina kort först.