class Rakieta:
"""Klasa Rakieta zawiera funkcje zwracajace:
opis rakiety, polozenie rakiety, zmiane pozycji rakiety w pionie/poziomie,
dystans od drugiej rakiety.
Wszystkie funkcje tej klasy dziedzicza po funkcji __init__
obiekty z przedrostkiem self jako argumenty."""
def __init__(self, start=(0, 0)):
"""Funkcja init jest to konstruktor klasy Rakieta.
Ma ona dwa argumenty self, start.
Podczas wywolywania funkcji mozemy podac argument start,
jednak nie jest on konieczny i ma on ustawiona wartosc domyslna.
WEJSCIE: start - krotka z podanymi wspolrzednymi poczatkowymi rakiety(x, y)"""
assert type(start) == tuple, "Podaj dwie wartosci (x,y) w postaci krotki/tupli (w nawiasie)"
self.start = list(start)
def __str__(self):
"""Funkcja opisujaca rakiete, jej polozenie.
WYJSCIE: txt - tekst z polozeniem rakiety w ukladzie xy"""
if self.start[0] != 0 and self.start[1] != 0:
txt = "Polozenie rakiety: (%i, %i)" % (self.start[0], self.start[1])
else:
txt = "Polozenie rakiety: (0, 0)"
return txt
def get_position(self):
"""Funkcja zwracajaca pozycje rakiety w ukladzie wspolrzednych"""
return tuple(self.start)
def move_up(self, y):
"""Funkcja zmienia pozycje rakiety w pionie o podana liczbe pozycji
WEJSCIE: y - liczba pozycji o jaka ma zmienic polozenie rakieta
WYJSCIE: pozycja koncowa po zmianie polozenia o wartosc 'y'"""
assert y >= 0
self.start[1] += y
return tuple(self.start)
def move_side(self, x):
"""Funkcja zmienia pozycje rakiety w poziomie o podana liczbe pozycji
WEJSCIE: x - liczba pozycji o jaka ma zmienic polozenie rakieta
WYJSCIE: pozycja koncowa po zmianie polozenia o wartosc 'x'"""
assert x >= 0
self.start[0] += x
return tuple(self.start)
def move(self, x, y):
"""Funkcja zmienia pozycje rakiety w pionie i poziomie o podana liczbe pozycji
WEJSCIE: x - liczba pozycji o jaka ma zmienic polozenie rakieta w poziomie
y - liczba pozycji o jaka ma zmienic polozenie rakieta w pionie
WYJSCIE: pozycja koncowa po zmianie polozenia o wartosci 'x' i 'y'"""
assert x >= 0 and y >= 0
self.start[0] += x
self.start[1] += y
return tuple(self.start)
def distance(self, other):
"""Funkcja zwraca w jakiej odleglosci od siebie znajduja sie dwie rozne rakiety.
WEJSCIE: other - druga rakieta
WYJSCIE: odl - odleglosc w jakiej znajduja sie od siebie rakiety"""
if self.start[0] == other.start[0] and self.start[1] == other.start[1]:
return "Rakiety znajduja sie w tym samym miejscu"
else:
odl = ((other.start[0] - self.start[0]) ** 2 + (other.start[1] - self.start[1]) ** 2) ** 0.5
return odl
def land_rocket(self):
""""""
self.start[0] = 0
self.start[1] = 0
return tuple(self.start)