Lista 4
[0.5pkt] Napisz klasę Punkt:
- dwa prywatne pola x, y
- konstruktor
- metoda toString, getX, getY
- metody wyzeruj, przesuń
- metoda wyzszy - bierze jako argument punkt i sprawdza, czy bieżący punkt jest położony niżej niż punkt pobrany w argumencie, zwraca true, jeśli tak, a w przeciwnym przypadku false
- analogiczna metoda naPrawo
- odległość - bierze jako argument punkt i oblicza odległość do tego punktu
[0.5pkt] Napisz klasę Trapez z czterema polami p1, p2, p3, p4 (typu Punkt). Punkty te interpretujemy jako wierzchołki trapezu. Dopisz konstruktor (musi sprawdzać czy z danych punktów da się zbudować trapez) i metody
- polePowierzchni
- obwod
- dlugoscPrzekatnej - w parametrze podajemy liczbę 1 lub 2 określającą czy jest to przekątna p1p3 czy p2p4.
[1pkt]Napisz klasę Prostokąt dziedziczącą z Trapezu.
Dopisz konstruktor sprawdzający czy z podanych punktów da się zbudować prostokąt.
Dopisz konstruktor przyjmujący jako parametr pola p1, p3 (typu Punkt). Punkty te interpretujemy jako dwa przeciwległe wierzchołki prostokąta. Konstruktor na podstawie tych punktów powinien wyznaczyć punkty p1 i p3
Sprawdź, czy odziedziczone metody działa prawidłowo.
[1pkt]Napisz klasę Kwadrat dziedziczącą z Prostokąt.
Dopisz konstruktor w klasie Kwadrat, który będzie brał dwa argumenty typu Punkt. Jeśli punkty te nie tworzą kwadratu, wyrzucany jest wyjątek.
Dopisz konstruktor który bierze dwa argumenty - punkt p1 (typu Punkt) i długość boku. Konstruktor powinien wyznaczyć punkty p2, p3, p4
Sprawdź, czy odziedziczone metody działa prawidłowo.
[1pkt]Napisz klasę Plansza reprezentującą planszę do gry w kółko i krzyżyk. Przedtem zdefiniuj klasę Ruch, reprezentującą pojedynczy ruch gracza.
Klasa Ruch:
- dwa pola - znak, Punkt
- konstruktor - nie przyjmuje Punktów w których x,y znalazły się poza przedziałem [0..2]
- metody getZnak, getPunkt
Klasa Plansza:
- pola - tablica dwuwymiarowa 3x3 przechowująca znaki (-, X, O), liczbaWolnychPol - stwierdzająca ile wolnych miejsc zostało w tablicy
- konstruktor - wypełnia tę tablicę znakami '-'
- metoda toString rysująca w konsoli aktualny stan planszy
- metoda boolean wygrana() sprawdzająca, czy któryś z graczy wygrał
- metoda boolean koniec() sprawdzająca, czy jest wygrana lub remis
- metoda boolean mozliwy(Ruch ruch) sprawdzająca, czy w danej komórce jest wolne miejsce i nie nastąpiła wygrana
- metoda wykonaj(Ruch ruch) wstawiająca znak do odpowiedniej komórki
[1.5pkt]Napisz klasę Gra umożliwiającą grę w kółko i krzyżyk
- pola: Plansza, ostatniZnak
- konstruktor - tworzy pustą planszę oraz losuje znak rozpoczynający grę (X, O) i ustawia odpowiednio pole ostatniZnak
- metoda graj - Metoda komunikuje się z użytkownikiem co kolejkę drukując stan planszy, przekazując jaki znak teraz będzie wpisywany oraz prosząc o podanie punktu w jaki znak należy wpisać. Metoda sprawdza także co kolejkę czy któryś z graczy nie wygrał lub że plansza jest pełna i nastąpił remis wtedy metoda drukuje wynik i kończy działanie. Do stworzenia metody można wykorzystać poniższy przykładowy kod:
import java.io.*;
public class przyklad { public static void main(String[] args) { try { char c; BufferedReader br1 = new BufferedReader( new InputStreamReader(System.in));
do { System.out.println("Podaj x."); c = (char) br1.read(); int p1 = Integer.parseInt(String.valueOf(c)); System.out.println("Podaj y, 'q' by wyjsc."); c = (char) br2.read(); int p2 = Integer.parseInt(String.valueOf(c)); System.out.println("Punkt : (" + p1+","+p2+")");
} while(c != 'q'); }catch(Exception e) {} } } |
Do wyjścia z pętli należy wykorzystać metody z klasy Plansza