Program zaliczeniowy

Należy napisać program, który umożliwia grę w Scrabble lub w pewien wariant tej gry. Opis gry można znaleźć na stronie http://pl.wikipedia.org/wiki/Scrabble.

Wersja podstawowa

Gra toczy się na planszy o rozmiarach 15x15. W grze uczestniczy jeden gracz, który ma do dyspozycji pewną ilość liter, z których układa słowa na planszy. W danym ruchu można albo wymienić wszystkie posiadane litery na nowy zestaw, albo ułożyć pewne słowo na planszy - poziomo lub pionowo. Jeśli plansza jest pusta, słowo musi zawierać środkowe pole, jeśli nie, musi się łączyć z pewnym słowem już znajdującym się na planszy. Wszystkie słowa powstające w wyniku dołożenia liter muszą być sensowne (nie ma wymogu, aby program to sprawdzał). Po wykonaniu ruchu program powinien: Gra kończy się gdy gracz uzna to za stosowne (zazwyczaj gdy nie można już ułożyć żadnego słowa). W fazie uzupełniania lub wymiany litery są losowane; należy zadbać o to, aby częściej występujące litery miały większe szanse wylosowania (można użyć oficjalnej tabeli - np. A ma 9%, B: 2%, C: 3%, itd.). Działająca wersja podstawowa będzie oceniana na oceną dostateczną (dopuszczalne są niewielkie usterki).

Wersja rozbudowana

Powyżej opisaną wersję można rozbudować na wiele sposobów - najlepiej w sposób, któy zbliża ją do standardowej gry w Scrabble. Poniżej przykładowe propozycje rozszerzeń (dopuszczalne są też inne):

Działanie programu

Program przed każdym ruchem powinien wyświetlić planszę, litery pozostające do dyspozycji gracza i aktualną punktację. Następnie należy zapytać gracza o to jaki ruch chce wykonać (wymiana liter/ułożenie słowa poziomo/pionowo). Oczywiście w przypadku układania słowa należy zapytać o to, jakie to słowo i sprawdzić, czy litery pozostające do dyspozycji gracza umożliwiają jego ułożenie. Następnie plansza jest aktualizowana, następuje następny ruch, itd.

Dodatkowe wymaganie

Program powinien używać klas - co najmniej klasy reprezentującej planszę.

Na co należy zwrócić uwagę:

  1. W przypadku użycia częsci kodu, który nie został napisany samodzielnie należy to jawnie zadeklarować.
  2. Kod programu powinien być czytelny i starannie skomentowany.

Podpowiedź

Nie ma żadnych wymagań odnośnie języka, w którym prowadzona jest gra. Żeby uzyskać poprawne działanie polskich znaków, należy na początku funkcji main umieścić następujący kod:
setlocale(LC_ALL, "");

Rozwiązanie

Rozwiązanie powinno zawierać: Rozwiązania należy nadsyłać na adres ziemians@mimuw.edu.pl w terminie do 10 lutego 2014.
Powodzenia
Krzysztof Ziemiański