fork(4) download
  1. class Rakieta:
  2. """Klasa Rakieta zawiera funkcje zwracajace:
  3. opis rakiety, polozenie rakiety, zmiane pozycji rakiety w pionie/poziomie,
  4. dystans od drugiej rakiety.
  5. Wszystkie funkcje tej klasy dziedzicza po funkcji __init__
  6. obiekty z przedrostkiem self jako argumenty."""
  7.  
  8. def __init__(self, start=(0, 0)):
  9. """Funkcja init jest to konstruktor klasy Rakieta.
  10. Ma ona dwa argumenty self, start.
  11. Podczas wywolywania funkcji mozemy podac argument start,
  12. jednak nie jest on konieczny i ma on ustawiona wartosc domyslna.
  13. WEJSCIE: start - krotka z podanymi wspolrzednymi poczatkowymi rakiety(x, y)"""
  14. assert type(start) == tuple, "Podaj dwie wartosci (x,y) w postaci krotki/tupli (w nawiasie)"
  15. self.start = list(start)
  16.  
  17. def __str__(self):
  18. """Funkcja opisujaca rakiete, jej polozenie.
  19. WYJSCIE: txt - tekst z polozeniem rakiety w ukladzie xy"""
  20. if self.start[0] != 0 and self.start[1] != 0:
  21. txt = "Polozenie rakiety: (%i, %i)" % (self.start[0], self.start[1])
  22. else:
  23. txt = "Polozenie rakiety: (0, 0)"
  24. return txt
  25.  
  26. def get_position(self):
  27. """Funkcja zwracajaca pozycje rakiety w ukladzie wspolrzednych"""
  28. return tuple(self.start)
  29.  
  30. def move_up(self, y):
  31. """Funkcja zmienia pozycje rakiety w pionie o podana liczbe pozycji
  32. WEJSCIE: y - liczba pozycji o jaka ma zmienic polozenie rakieta
  33. WYJSCIE: pozycja koncowa po zmianie polozenia o wartosc 'y'"""
  34. assert y >= 0
  35. self.start[1] += y
  36. return tuple(self.start)
  37.  
  38. def move_side(self, x):
  39. """Funkcja zmienia pozycje rakiety w poziomie o podana liczbe pozycji
  40. WEJSCIE: x - liczba pozycji o jaka ma zmienic polozenie rakieta
  41. WYJSCIE: pozycja koncowa po zmianie polozenia o wartosc 'x'"""
  42. assert x >= 0
  43. self.start[0] += x
  44. return tuple(self.start)
  45.  
  46. def move(self, x, y):
  47. """Funkcja zmienia pozycje rakiety w pionie i poziomie o podana liczbe pozycji
  48. WEJSCIE: x - liczba pozycji o jaka ma zmienic polozenie rakieta w poziomie
  49. y - liczba pozycji o jaka ma zmienic polozenie rakieta w pionie
  50. WYJSCIE: pozycja koncowa po zmianie polozenia o wartosci 'x' i 'y'"""
  51. assert x >= 0 and y >= 0
  52. self.start[0] += x
  53. self.start[1] += y
  54. return tuple(self.start)
  55.  
  56. def distance(self, other):
  57. """Funkcja zwraca w jakiej odleglosci od siebie znajduja sie dwie rozne rakiety.
  58. WEJSCIE: other - druga rakieta
  59. WYJSCIE: odl - odleglosc w jakiej znajduja sie od siebie rakiety"""
  60. if self.start[0] == other.start[0] and self.start[1] == other.start[1]:
  61. return "Rakiety znajduja sie w tym samym miejscu"
  62. else:
  63. odl = ((other.start[0] - self.start[0]) ** 2 + (other.start[1] - self.start[1]) ** 2) ** 0.5
  64. return odl
  65.  
  66. def land_rocket(self):
  67. """"""
  68. self.start[0] = 0
  69. self.start[1] = 0
  70. return tuple(self.start)
Success #stdin #stdout 0.02s 9016KB
stdin
Standard input is empty
stdout
Standard output is empty