Napisz program służący do gry w kółko i krzyżyk człowieka z komputerem na planszy o zadanym rozmiarze (wygrywa zawodnik, który ustawi 5 sąsiadujących ze sobą znaków w rzędzie/kolumnie/po ukosie). Program powinien korzystać z rozszerzeń - skompilowanych klas ładowanych dowolnym ładowaczem ze wskazanego katalogu. Każda klasa rozszerzeń reprezentuje określoną strategię oraz posiada metody do generowania kolejnych ruchów komputera o różnym poziomie trudności, Nazwa strategii ma być deklarowana za pomocą adnotacji klasy. Poziom trudności powinien być określony w adnotacji metody. Można założyć, że metody generujące kolejne ruchy mają taką samą listę atrybutów oraz zwracają wartości takiego samego typu - np. pobierają "planszę" i zwracają współrzędne "strzału". Obraną strategię (klasę) oraz poziom trudności (metodę) powinno dać się zmienić w trakcie gry.