Obligatorisk oppgave -H�sten 2004Oppgaven -distribuert spillDet skal lages et distribuert fem-p�-rad spill (bondesjakk) ved hjelp av Java, CORBA og Orbacus. Felles ressursen er en spilltjener som registrerer spillere som �nsker et nytt spill, og starter et nytt spill for annen hver spiller som registrerer seg. Et par av spillere skal ikke m�tte vente til det forrige paret er ferdig med sitt spill. Spilltjeneren og selve spillet er separate objekter, men de skal kj�re i samme prosess (dog ikke i samme tr�d). Spillerne er klientene, som kj�rer i egne prosesser p� vilk�rlige maskiner. De skal benytte seg av spilltjeneren til � startet et spill, utf�re spillet og avslutte. IDL-koden er laget for dere. Denne skal brukes og ikke editeres under utviklingen. Scenario for bruk:
Noen sm� punkter som dere m� huske p�:
Brukergrensesnittet Spillene skal ha et grafisk brukergrensesnitt (i betydning et vindu som tegner opp spill og brikker) i Java. Det har blitt laget et Java GUI, PlayerWindow, som dere kan bruke. Fordelene med PlayerWindow er at dere slipper � bruke masse tid p� � programmere i Java AWT, det er blitt testet gjennom flere kurs og fungerer bra. Ulempen er at det er litt kjedelig. Koden er samlet i tre filer. PlayerWindow, PlayerWindowEvent, PlayerWindowListener. Kompilert kode er ogs� tilgjengelig i en pakke. Den kan lastes ned og inkluderes i CLASSPATH til Java VM. playerWindow.jar. Merk at implementasjonen av PlayerWindow har tilstanden til spillet, men dette er av grafikkeffektivitetsgrunner, dere skal ikke (og dere skal heller ikke ha tilgang til �) bruke informasjon fra vinduets tilstand. PlayerWindow har 6 metoder for oppdatering av vinduet, som koden deres m� bruke for � kommunisere til brukeren. Brukeren p� sin side kommuniserer ved hjelp av hendelser; PlayerWindow lager hendelser (events) som deres kode m� abonnere p�. Disse hendelsene er spesiallaget for kurset. Dere skal ikke abonnere p� andre hendelser PlayerWindow m�tte lage. Koden skal v�re rimelig godt dokumentert. De java-filene som inneholder kode som skal bruke PlayerWindow, m� importere alle klasser i pakken playerWindow, dette gj�res ved � legge til "import playerWindow.*;" sammen med de andre import-setningene. Den klassen som skal abonnere p� hendelsene PlayerWindow genererer, m� implementere grensesnittet PlayerWindowListener og alle metoder dette grensesnittet deklarerer, slik: class MyClass extends MySuperClass implements PlayerWindowListener { . . . public void onExitGame(PlayerWindowEvent e) {...} public void onNewGame(PlayerWindowEvent e) {...} public void onBoardClicked(PlayerWindowEvent e) { // i denne metoden (og kun denne) gir det mening � snakke // om e.getX() og e.getY(), dette for � f� tak i hvilken // rute i brettet brukeren klikket i } } Til sist, for at det abonnerende objektet skal starte sitt abonnement, m� det melde sin interesse til PlayerWindow-objektet f�r den skal motta hendelsene, og det gj�res ved � kalle PlayerWindow-objektet sin addPlayerWindowListener-metode et passende sted (tidlig i utf�rt kode), slik: PlayerWindowObjektet.addPlayerWindowListener(MyclassObjektet); GruppesamarbeidDere skal l�se oppgaven i grupper p� to til tre personer, iht. til gruppelisten. Blir det et problem i gruppen, s� si ifra! Det forventes at alle bidrar aktivt og like mye. InnleveringImplementasjonen av CORBA grensesnittene i IDLen skal dere selv teste. Kj�r spillet og sjekk at det fungerer med ulike spillere p� ulike maskiner. Pr�v � kj�r andre sine klienter mot deres spilltjener, og omvendt. Til gruppel�rer stena aa simula.no skal dere sende inn:
Sist oppdatert 20 September 2004 |