Avatar billede hotmoller Nybegynder
02. december 2005 - 00:16 Der er 13 kommentarer

Mindre netværksprojekt - chat + spil

Kære eksperter

Jeg er startet på et projekt, der handler om at implementere en chat og yderligere spillet memory. Jeg har 2½ uge til at programmere, hvorefter tiden skal bruges på at skrive rapport.

Systemet skal implementeres vha. sockets i java.

Der rejser sig en masse spørgsmål, som jeg ikke selv kan svare på pt., men jeg arbejder på at blive klogere. Jeg håber på - som så mange gange før - at kunne søge gode råd her i takt med projektet udvikler sig, og min viden bliver større.

Programmet skal bygges op med en server, hvortil der bindes flere klienter. Klienterne skal være flade, dvs. logikken skal primært placeres på serveren. Klienterne skal som udgangspunkt være applikationer, altså ikke applets.


Lige nu har jeg følgende spørgsmål:

- Min idé er at alle klienter har et enkelt chat vindue, hvori alle kan chatte med alle.
  Hvis en delmængde ønsker at starte enten privat chat eller et spil, skal dette vælges i fælleschat vinduet, hvorefter et nyt vindue åbnes for hvert spile eller privat chat.

  |
  - > hvad skal jeg undersøge, for at opnå en løsning, hvor en person kan chatte i en privatchat (dvs. i et vindue), medens fælleschat vinduet stadig opdateres i baggrunden. Jeg gætter på at det har med threads at gøre, men er det overhovedet muligt at løse inden for min tidsramme, eller vil I anbefale en løsning, hvor fælleschat, privatchat og spil foregår i et enkelt stort vindue??

- Til memory spillet skal jeg have vist nogle brikker/kort ude hos klienten. Til at starte med skal spillet håndtere 20 kort. Ideen er at brugeren med sin mus trykker på to kort - et ad gangen - og at der for hvert kort vises et billede ved trykket.
|
-> Hvordan vil I mene det er mest hensigstmæssigt at implementere dette. Bør man tegne det, og så holde øje med hvor på skærmen brugeren trykker. Vil I i stedet anbefale, at man opretter 20 JButtons, og tilknytter billeder til dem. Helt tredie løsning?!
|
-> Min umiddelbare tanke er at sende en url til et billede der ligger på serveren. Er denne løsning anbefalelsesværdig, eller bør man sende billederne til klienterne?!

Jeg håber ikke det virker som om, jeg vil have jer til at lave min opgave.....det jeg søger er gode råd til at bevæge mig i den rigtige retning.

Min tanke er at lade denne tråd køre og så stille spørgsmål efterhånden som projektet udvikler sig. Er det en god idé, kan man tillade sig det.

På forhånd tak!!
02. december 2005 - 01:13 #1
hej hotmoller...

Jeg går udfra at du vil benytte JSP...i så fald er jeg ikke så stærk i dette..men kan måske alligevel lede dig lidt på vej.

-Lad hver med at tænke i thread...det klarer JSP for dig

-Husk at du har et sessionobjekt, der er tilknyttet din bruger. I det kan du sætte en parameter på at du er i i en "privat chat". Og såfremt du vælger at benytte en front controller, kan du lade den undersøge din sessionobjekt. hvorefter den ved hvilken side du skal have vist.
DVS at din bruger hele tiden vil få opdateret det "private" chatvindue. mens andre bruger, der er i "normal" chat vil få opdaret denne.

- Jeg synes det vil være fint at tegne dine kort. Når en bruger ønsker at spille et spil så send dem afsted fra serveren med et DTO. Placer dem i en tabel, så hver celle i tabellen indeholder et billede:
ex.
<table align="center" border="1" cellpadding="2" cellspacing="1">
    <tr>
      <td background="sol.GIF" width="27" height="33" onclick="setValue(1)"></td>
      <td background="sol.GIF" width="27" height="33" onclick="setValue(2)"></td>
      <td background="hest.GIF" width="27" height="33" onclick="setValue(3)"></td>
    ....
    </tr>
    <tr>
      <td background="paraply.GIF" width="27" height="33" onclick="setValue(1)"></td>
      <td background="hest.GIF" width="27" height="33" onclick="setValue(2)"></td>
    ....
</table>

onclick="setValue(2)" delen i sætningerne kalder en Javascript funktion hvori du evt kan lægge logikken hvor at få vendt billedet...om de to vendte billeder er ens...osv

Håber det kan sætte tankerne lidt i gang...

Held og lykke
Avatar billede arne_v Ekspert
02. december 2005 - 01:15 #2
jeg tror nu at det er client apps (med Swing til GUI) som via sockets snakker
med en server (formentligt multithreaded)
Avatar billede arne_v Ekspert
02. december 2005 - 01:20 #3
du bør nok kunne lave noget fornuftigt på den tid

jeg tvivler på at det skulle være nødvendigt med en tråd per vindue, men
en reader tråd delt af alle vinduer vil nok være nødvendigt

en færdig kontrol som JButton lyder noget nemmere end brug af noget paint

du vil hente billeder via URL men vil du så både have en web server
og en socket server ?
02. december 2005 - 01:27 #4
Ja, ok.... havde ikke lige set "Systemet skal implementeres vha. sockets i java." Men giver dette ikke en ret tyk client...i henhold til "...Klienterne skal være flade..."
Avatar billede hotmoller Nybegynder
02. december 2005 - 01:51 #5
godaften :D

Ja, det jeg ønsker, er en løsning i stil med det arne beskriver kl. 01.15.

jeghaderorganisationer> måske jeg har taget munden lidt for fuld mht. mine udtalelser om ansvarsfordelingen - har nok ikke helt styr på begreberne. Det jeg mener er, at logikken til at styre chat og spil placeres på serveren .. m.m. I tilråder andet.

arne kl 01.20> Mht. URL og billeder, beder du mig om at præcisere eller er det et forslag til en løsning?!

|
-> Jeg er ikke klar over, hvad der er mest hensigtsmæssigt. Min tanke er, at alle billeder ligger samlet et sted på serveren (eller måske på en webserv, hvis det er det der skal til), og så kan alle klienter hente derfra løbende.

Vil det måske være bedre at oprette 20 ImageIcons på serversiden, og så sende dem til klienterne.

Der kommer formentlig til at være en del trafik, taget i betragtning, at spillespladen skal vises påny, hver gang en tur har forekommet.

Jeg har implementeret med JButtons nu, og det virker fornuftigt.
02. december 2005 - 02:11 #6
Den er fin...Held og lykke igen med projektet. Kan næsten forestille mig at du går på Datamatiker 3.sem med sådan en opgave ;)
Avatar billede arne_v Ekspert
02. december 2005 - 03:15 #7
præcisere

nej - jeg er ret sikker på at java objekter fylder mere end GIF eller JPG

når du bruger sockets kan du jo pushe kun ændringer ud
Avatar billede hotmoller Nybegynder
02. december 2005 - 10:47 #8
Hej arne.

Beklager at jeg ikke griber den med det samme: (arne_v sagde) "du vil hente billeder via URL men vil du så både have en web server og en socket server ?"

Anbefaler du at billederne placers på en websrv?! Burde man evt. lade klienten downloade billederne sammen med programmet i stedet?

/moller
Avatar billede arne_v Ekspert
02. december 2005 - 14:09 #9
I Java vil du kunne lade billederne være i den jar fil som applikationen
er pakket i + eller du vil kunne lade applikationen hente fra en
en HTTP URL (web server)

medmindre du har specielel behov for at opdatere centralt tror jeg at jeg
ville pakke i jar
Avatar billede hotmoller Nybegynder
04. december 2005 - 00:25 #10
Hej arne

Tak for input. Jeg har fået det til at fungere med billederne på en websrv nu. Følger dit råd mht. jar-filer, hvis der bliver tid senere.

Mht. til kommunikationen, har jeg tænkt på at sende "Message" objekter, hvori der kan lagres informationer omkring afsender, modtager og typen af indhold. Min tanke er at der altid skal sendes message objekter, hvadenten der sendes chat tekst, eller information om spillets udvikling (f.eks. et træk). For at afkode informationen fra message objekterne, vil jeg lave protokol metode på serveren og klienterne.

Synes du dette lyder fornuftigt?

Du må bare sige til, hvis du synes jeg presser citrone i forhold til mængden af spørgsmål kontra point

på forhånd tak
Avatar billede arne_v Ekspert
04. december 2005 - 00:35 #11
hvis du sender objekter så er ObjectOutputStream / ObjectInputStream nemmest

vil du subclasse Message ?

du har jo sat rigeligt med point af så no problem
Avatar billede hotmoller Nybegynder
04. december 2005 - 01:08 #12
Godaften

Tak for stream info

Ja, jeg har tænkt mig at specialisere Message.

Jeg prøver mig lidt frem, og vender tilbage imorgen, når det hele sikker bliver for rodet :D

ha en god aften !!!
Avatar billede arne_v Ekspert
31. december 2005 - 14:19 #13
er det blevet imorgen ?

:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester