Skip to content

PatrykCholewa/BricksGameSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Program sędziowski do gry "Cegiełki"

  1. Cel projektowy
  2. Program został stworzony jako projekt w ramach przedmiotu "Algorytmy i struktury danych" na Politechnice Warszawskiej.

    Jednym z zadań w ramach tego przedmiotu było stworzenie programu walczącego, sztucznej inteligencji, która miała konkrurować z innymi, stworzonymi przez kolegów z grupy dziełami w ramach jakiejś wcześniej obranej gry.

    Głównym problemem jednak było przeprowadzenie serii takich pojedynków, weryfikacja poprawności działań i podsumowywanie wyników. W tym celu miał zostać zaprojektowany osobny program, który obsłuży wszystkie pozostałe i pozwoli na obserwowanie przebiegu walk.

    To są właśnie zadania stworzonego przez nas program - Programu Sędzioweskiego.

  3. Zasady gry
    1. Plansza na której toczy się rozgrywka to kwadrat n*n o n będącym liczbą nieparzystą niewiększą od 999.
    2. Plansza to zbiór komórek które mają być później zapełnione przez graczy pdczas kolejnych ruchów.
    3. Nie wszystkie komórki muszą być wstępnie puste. Program Sędziowski może (na życzenie jego Operatora) planszę niektóre komórki wypełnić.
    4. Przykładowy wygląd planszy startowej:
       .01234. 
      0|X X X|
      1|  X  |
      2| X   |
      3|   X |
      4|_____|
      
    5. Gracze (algorytmy walczące) rozstawiają na przemian prostokąty o wymiarach 2x1 pionowo lub poziomo na planszy.
    6. Rozgrywka kończy się gdy nie da się już postawić żadnego nowego prostokąta.

  4. Protokół komunikacji Gracz-Sędzia
  5. Sędzia komunikuje się z Graczami za pomocą ich standardowych wejść i wyjść ( stdin , stdout ).

    1. Sędzia przesyła pierwszemu graczowi informację o rozmiarze planszy, a także o komórkach już zapełnionych przez system. np. Plansza rozmiaru 7x7 o zapełnionych komórkach o indeksach (2,3) i (4,5).
      7_2x3_4x5        
      
    2. Gracz przesyła informację zwrotną o przyjęciu komunikatu. Ma na to 1s.
      OK        
      
    3. Sędzia przesyła drugiemu graczowi tą samą informację.
      7_2x3_4x5
      
    4. Drugi gracz ma również sekundę na odpowiedź.
      OK        
      
    5. Sędzia przesyła pierwszemu graczowi informacje o rozpoczęciu gry.
      START
      
    6. Gracz ma 0.5s na odpowiedź jaki ruch ( wstawienie prostokąta 2x1 ) zamierza wykonać. np. wstawienie na plaszę prostokąta na komórki (1,2) , (2,2).
      1x2_2x2
      
    7. Sędzia wysyła drugiemu graczowi informację o ruchu poprzedniego.
      1x2_2x2
      
    8. Gracz ma 0.5s na wykonanie swojego ruchu.
      3x0_3x1
      
    9. Sędzia przesyła pierwszemu graczowi informację o ruchu poprzedniego.
      3x0_3x1
      
    10. itd. aż któryś z graczy spełni warunki przegranej.

  6. Warunki przegranej
    1. Przekroczenie dozwolonego czasu przez gracza powoduje jego automatyczną przegraną.
    2. Gracz, który wykonał ruch nieprzewidziany w zasadach automatycznie przegrawa.
    3. Jeżeli gra zakończyła się w sposób przewidziany w Regulaminie, przegrywa gracz, który miałby wykonywać następny ruch (czyli ten, który nie może już wykonać ruchu).

    Po zakończonej rozgrywce Sędzia wysyła:
    STOP
    

    do wszystkich graczy (Program Gracz powinien się zakończyć, ale Sędzia profilaktycznie dodatkowo zabija proces.).

  7. Dodatkowe założenia
    1. To sędzia uruchamia graczy.
    2. Sędzia będzie posiadał specjalny folder z podfolderami przeznaczonymi na pliki graczy. Takie pliki będą przede wszystkim dwa. Sam program i plik konfiguracyjny info.txt
      (komenda uruchomieniowa)
      (nick gracza)
      
    3. Sędzia musi się uruchamiać na Windowsie.
    4. Musi być możliwość ręcznego przejrzenia przebiegu rozgrywki (np. wywołaie kolejnego ruchu).
    5. Musi być możliwość ręcznego ustawiania rozmiarów planszy.
    6. Sędzia musi mieć możliwość przeprowadzenia rozgrywki automatycznie.
    7. Musi być możliwość przejrzenia historii przebiegu rozgrywki.
    8. Sędzia musi umieć automatycznie przeprowadzić turniej każdy z każdym (po dwie gry, raz jeden raz drugi) liczy kto ile ma zwycięstw, kto ile porażek)
    9. Program sędziowski ma opcję wybrania ręcznego początkowych zajętych komórek lub je losuje.