Facebook
From Gamboge Cockroach, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 117
  1. trace = []
  2.  
  3. class Rakieta:
  4.     '''
  5.     Obiekt Car opisuje nam wlasnosci samochodow.
  6.  
  7.     Args:
  8.         masa (num): trzyma mase rakiety
  9.         predkosc_maks (num): trzyma predkosc maksymalna rakiety
  10.         ilosc_lotow (num): opisuje maksymalna ilosc lotow
  11.    
  12.     Attributes:
  13.         pozycja: tu przechowujemy informacje o pozycji rakiety
  14.         masa: tu przechowujemy informacje o masie rakiety
  15.         predkosc_maks: tu przechowujemy informacje o predkosci maksymalnej
  16.         x: tu przechowujemy informacje o pozycji x
  17.         y: tu przechowujemy informacje o pozycji y
  18.         ilosc_lotow: tu przechowujemy informacje o ilosci lotow
  19.         paliwo: tu przechowujemy informacje o ilosci paliwa
  20.         nr_seryjny: tu przechowujemy informacje o nr_seryjnym
  21.     '''
  22.     nr_seryjny = 1
  23.    
  24.     def __init__(self, masa, predkosc_maks, ilosc_lotow):
  25.         self.pozycja = (0,0)
  26.         self.masa = masa
  27.         self.predkosc_maks = predkosc_maks
  28.         self.x = 0
  29.         self.y = 0
  30.         self.ilosc_lotow = ilosc_lotow
  31.         self.paliwo = 100
  32.         self.nr_seryjny = self.__class__.nr_seryjny
  33.         self.zwieksz_nr_seryjny()
  34.        
  35.     def check_pos(pozycja):  # nie ma self!
  36.         assert isinstance(pozycja, (list, tuple)), "pos to lista lub krotka"
  37.         assert len(pozycja) == 2, "pos powinna miec 2 elementy"
  38.         assert all([isinstance(el, (int, float)) for el in pozycja]), "wszystkie elementy powinny byc liczbami"
  39.         assert pozycja[1] >= 0, "wysokosc na jakiej jest Rakieta nie powinna byc ujemna"
  40.        
  41.        
  42.     def zwieksz_nr_seryjny(self):
  43.         if self.nr_seryjny < 99:
  44.             self.__class__.nr_seryjny += 1
  45.         else:
  46.             raise TypeError("Koniec produkcji")
  47.        
  48.     def get_masa(self):
  49.         return self.masa
  50.    
  51.     def get_predkosc_maks(self):
  52.         return self.predkosc_maks
  53.    
  54.     def get_pozycja(self):
  55.         return (self.x , self.y)
  56.    
  57.     def get_ilosc_lotow(self):
  58.         return self.ilosc_lotow
  59.    
  60.     def get_paliwo(self):
  61.         return self.paliwo
  62.    
  63.     def get_nr_seryjny(self):
  64.         return "R"+ str(self.nr_seryjny)
  65.    
  66.     def set_masa(self, x):
  67.         if isinstance(x, (int, float)) and x > 0:
  68.             self.masa = x
  69.         else:
  70.             raise TypeError("Masa powinna byc liczba INT lub FLOAT")
  71.            
  72.     def set_predkosc_maks(self, x):
  73.         if isinstance(x, (int, float)) and x > 0:
  74.             self.predkosc_maks = x
  75.         else:
  76.             raise TypeError("Predkosc maksymalna powinna byc liczba INT lub FLOAT")    
  77.            
  78.     def set_pozycja(self, pozycja):
  79.         Rakieta.check_pos(pozycja)
  80.        
  81.         stare_x = self.x
  82.         stare_y = self.y
  83.         self.pozycja = pozycja
  84.         self.x = pozycja[0]
  85.         self.y = pozycja[1]
  86.         a = Rakieta.odleglosc_punkt(self, stare_x, stare_y)//1
  87.         roznica = self.paliwo - a
  88.         Rakieta.set_paliwo(self, roznica)
  89.         self.ilosc_lotow -= 1
  90.         if self.ilosc_lotow < 1:
  91.             Rakieta.brak_lotu(self)
  92.         return self.pozycja, trace.append((self.x, self.y))
  93.    
  94.     def set_x(self, x):
  95.         test_pos = x, self.pozycja[1]
  96.         return self.set_pozycja(test_pos)
  97.    
  98.     def set_y(self, y):
  99.         test_pos = self.pozycja[0], y
  100.         return self.set_pozycja(test_pos)
  101.    
  102.     def set_ilosc_lotow(self, x):
  103.         if isinstance(x, int) and x > 0:
  104.             self.ilosc_lotow = x
  105.         else:
  106.             raise TypeError("Ilosc powinna byc liczba INT")
  107.            
  108.     def set_paliwo(self, x):
  109.         if isinstance(x, (int, float)) and x > 0:
  110.             self.paliwo = x
  111.         else:
  112.             self.y = 0
  113.             trace.append((self.x,self.y))
  114.             self.paliwo = 0
  115.             print(trace)
  116.             raise TypeError("Koniec paliwa")
  117.            
  118.     def move_left(self, x):
  119.         return self.set_x(self.x - x)
  120.    
  121.     def move_right(self, x):
  122.         return self.set_x(self.x + x)
  123.    
  124.     def move_up(self, x):
  125.         return self.set_y(self.y + x)
  126.    
  127.     def move_down(self, x):
  128.         return self.set_y(self.y - x)
  129.    
  130.     def powrot(self):
  131.         Rakieta.set_pozycja(self,(0,0))
  132.        
  133.     def odleglosc_od_bazy(self):
  134.         return ((self.x)**2 + (self.y)**2)**(1/2)  
  135.    
  136.     def odleglosc_punkt(self, a, b):
  137.         return ((a - self.x)**2 + (b - self.y)**2)**(1/2)
  138.    
  139.     def brak_lotu(self):
  140.         self.y = 0
  141.         self.paliwo = 0
  142.         trace.append((self.x,self.y))
  143.         print(trace)
  144.         raise TypeError("Brak lotow")