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:
- Wypisać wszystkie nowo powstałe słowa.
- Dodać graczowi tyle punktów za każde słowo, jaka jest jego długość.
- Uzupełnić litery pozostające do dyspozycji gracza do siedmiu.
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):
- Gra dwuosobowa lub wieloosobowa.
- Punktacja poszczególnych słów zależy od użytych liter.
- Dopuszczalna jest wymiana wybranych (a nie wszystkich) liter.
- Na planszy znajdują się pola, które zmieniają punktację za poszczególne słowa/litery.
- Litery losowane są zasobnika, gra się kończy, gdy się wyczerpią.
- Można wylosować blanki, zastępujące dowolną literę.
- Można wybrać rozmiar/kształt planszy.
- Można zapisać aktualny stan gry w pliku.
- Można wycofać ruch.
- Poprawność słów jest weryfikowana przez program.
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ę:
- W przypadku użycia częsci kodu, który nie został napisany samodzielnie należy to jawnie zadeklarować.
- 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ć:
- pliki źródłowe programu,
- dokumentację, zawierającą opis działania programu oraz opis dodatkowych elementów gry.
Rozwiązania należy nadsyłać na adres ziemians@mimuw.edu.pl w terminie do 10 lutego 2014.
Powodzenia
Krzysztof Ziemiański