Laboratorium nr 6 - 3/4 czerwca 2014

Sklonuj repozytorium:
https://agata_migalska_pwr@bitbucket.org/agata_migalska_pwr/concurrency.git.
Na podstawie

popraw implementację klas

  • pl.edu.pwr.synchronization.Counter oraz
  • pl.edu.pwr.synchronization.Singleton

tak, żeby obecność wielu wątków nie naruszała poprawności ich działania. Pamiętaj, że synchronizacja jest droga i zastosuj ją tylko tam, gdzie jest niezbędna.

Uruchom klasę pl.edu.pwr.deadlock.Deadlock. Wytłumacz dlaczego nastąpiło zakleszczenie.

Zadanie domowe

Uwaga! Zadanie domowe będzie główną składową oceny z laboratorium.

Ligretto


Założenia
  1. W grze uczestniczy czterech graczy, w tym nie więcej niż jeden komputer.
  2. Komputer, jeżeli uczestniczy w grze, może nic nie robić. Dodatkowy plus jeżeli będzie.
  3. Gra kończy się po jednej rozgrywce.

Poniższy algorytm przedstawiony jest z punktu widzenia jednego gracza. Podczas implementacji należy pamiętać, że gracze grają równocześnie.

Algorytm
  1. Rozpoczęcie gry
    1. Użytkownik uruchamia klienta gry.
    2. Serwer gry dodaje użytkownika do listy graczy.
    3. Jeżeli liczba graczy jest odpowiednia, program rozpoczyna grę.
    4. Program tasuje i rozdziela karty pomiędzy graczy.
  2. Rozgrywka
    1. Program prezentuje graczom stół i karty wszystkich graczy.
    2. Gracz wybiera kartę i kupkę na stole.
    3. Program decyduje czy wybrana przez gracza karta może zostać położona na wskazaną kupkę.
  3. Koniec gry
    1. Gra kończy się gdy choć jeden z graczy nie ma już kart na stosie.
    2. Program przelicza karty na stole i wyświetla wynik gracza.