Advertisement
Szczepan86

Gra przygodowa - lekcja 1

Dec 15th, 2017
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.60 KB | None | 0 0
  1. # Klasa Lokacja
  2. # Zawiera w sobie wszystkie parametry (właściwości) odnośnie konkretnej lokacji
  3. # Zawiera również metody przydatne przy operacjach na lokacjach
  4. class Lokacja():
  5.     # Właściwości klasy Lokacja
  6.     # nazwa i opis są ustawione z domyślnymi wartościami
  7.     nazwa = "domyślna nazwa lokacji"
  8.     opis = "Domyślny opis lokacji."
  9.     # współrzędne danej lokalizacji na płaszczyźnie x y
  10.     # domyślnie nie są zainicjalizowane żadną wartością
  11.     x = None
  12.     y = None
  13.    
  14.     # metoda umożliwiająca jednoczesne ustawienie x i y
  15.     # 'self' dodajemy do każdej metody jako pierwszy parametr, okresla on że metoda operuje na bieżącym obiekcie
  16.     # 'self' podany przed nazwą zmiennej oznacza, że jest to zmienna przypisana do bieżącego obiektu
  17.     def ustawKoordynaty(self, nowy_x, nowy_y):
  18.         self.x = nowy_x
  19.         self.y = nowy_y
  20.    
  21.     # metoda wyświetlająca nazwę oraz opis lokacji
  22.     def wyswietl(self):
  23.         print("Lokacja: " + self.nazwa)
  24.         print(self.opis)
  25.  
  26.  
  27. # Klasa Swiat
  28. # Zawiera w sobie informacje na temat całego zbioru (mapy) lokalizacji
  29. # Posiada jedną właściwość (listę lokacji) oraz metody ułatwiające interakcję między poszczególnymi lokacjami
  30. class Swiat():
  31.     # właściwość typu lista przechowująca wszystkie obiekty lokacji
  32.     # w wygodny sposób przechowuje wszystkie referencje do poszczególnych lokacji
  33.     listaLokacji = []
  34.    
  35.     # metoda służąca do dodawania lokacji do świata
  36.     # dodanie lokacji jest równoznaczne z appendowaniem obiektu lokacja do listy lokacji
  37.     def dodajLokacje(self, lokacja):
  38.         self.listaLokacji.append(lokacja)
  39.    
  40.     # metoda zwracająca lokację (obiekt) na podstawie podanych współrzędnych
  41.     # aby znaleźć obiekt iterujemy po elementach z listy i sprawdzamy ich współrzędne
  42.     # w przypadku nie znalezienia obiektu zwracamy None (czyli nic)
  43.     def pobiezLokacje(self, x, y):
  44.         for lokacja in self.listaLokacji:
  45.             if lokacja.x == x and lokacja.y == y:
  46.                 return lokacja
  47.         return None
  48.    
  49.     # metoda wyświetlająca wszystkie dostępne wyjścia
  50.     # aby sprawdzić czy istnieje wyjście, sprawdzamy czy bezpośrednio w danym kierunku znajduje się lokacja
  51.     # np. jeśli jesteśmy na koordynatach (x = 0, y = 0) możemy iść na północ tylko jeśli istnieje komnata (x = 0, y = 1)
  52.     # aby sprawdzić czy istnieje dana lokacja, używamy metody 'pobiezLokacje'
  53.     def wyswietlWyjscia(self, x, y):
  54.         wyjscia = "Wyjścia: "
  55.         if self.pobiezLokacje(x, y + 1):
  56.             wyjscia = wyjscia + "północ[n] "
  57.         if self.pobiezLokacje(x, y - 1):
  58.             wyjscia = wyjscia + "południe[s] "
  59.         if self.pobiezLokacje(x + 1, y):
  60.             wyjscia = wyjscia + "wschód[e] "
  61.         if self.pobiezLokacje(x - 1, y):
  62.             wyjscia = wyjscia + "zachód[w] "
  63.         print(wyjscia)
  64.        
  65.        
  66. #################################################
  67. ########## TU ZACZYNA SIE WLASCIWA GRA ##########
  68. #################################################
  69.        
  70. # najpierw tworzymy obiekt swiat klasy Swiat() - wystarczy jeden obiekt na całą grę
  71. swiat = Swiat()
  72.  
  73. ####################
  74. ### TWORZENIE ŚWIATA
  75.  
  76. # utwórz nowy obiekt lokacja
  77. nowaLokacja = Lokacja()
  78. # ustaw nazwę, opis oraz koordynaty (korzystając z metody ustawKoordynaty)
  79. nowaLokacja.nazwa = "Komnata"
  80. nowaLokacja.opis = "Nasza pierwsza komnata, z której rozpoczynamy przygodę. Ma podłogę, sufit i nawet jakieś meble."
  81. nowaLokacja.ustawKoordynaty(0, 0)
  82. # dodaj lokację do swiata gry
  83. swiat.dodajLokacje(nowaLokacja)
  84.  
  85. # tworzenie kolejnych komnat analogicznie do poprzedniego bloku
  86. # zwróć uwagę, że mimo wykorzystania tej samej nazwy obiektu (nowaLokacja), obiekty dodane do świata nie zostają nadpisywane
  87. # dzieje się tak, ponieważ w liście lokacji w obiekcie swiat istnieje już referencja (powiązanie) z właściwą lokacją
  88. nowaLokacja = Lokacja()
  89. nowaLokacja.nazwa = "Korytarz przechodni"
  90. nowaLokacja.opis = "Korytarz, który znajduje się na północ od naszego miejsca startu. Póki co nic tu nie ma, ale kto wie co przyniesie jutro."
  91. nowaLokacja.ustawKoordynaty(0, 1)
  92. swiat.dodajLokacje(nowaLokacja)
  93.  
  94. nowaLokacja = Lokacja()
  95. nowaLokacja.nazwa = "Komnata wschodnia"
  96. nowaLokacja.opis = "Cała komnata zawalona jest zabugowanym kodem. Poza tym nic tu nie ma."
  97. nowaLokacja.ustawKoordynaty(-1, 1)
  98. swiat.dodajLokacje(nowaLokacja)
  99.  
  100. nowaLokacja = Lokacja()
  101. nowaLokacja.nazwa = "Komnata zachodnia"
  102. nowaLokacja.opis = "To jest komnata zapomnianych pomysłów. Znajduje się tu masa niedokończonych projektów. Chyba ludzie często tu bywają."
  103. nowaLokacja.ustawKoordynaty(1, 1)
  104. swiat.dodajLokacje(nowaLokacja)
  105.  
  106. nowaLokacja = Lokacja()
  107. nowaLokacja.nazwa = "Wąski korytarz"
  108. nowaLokacja.opis = "Korytarz łączący korytarz przechodni z pokojem na samej północy. Uważaj, by nie potknąć się o kable."
  109. nowaLokacja.ustawKoordynaty(0, 2)
  110. swiat.dodajLokacje(nowaLokacja)
  111.  
  112. nowaLokacja = Lokacja()
  113. nowaLokacja.nazwa = "Północny pokój"
  114. nowaLokacja.opis = "Pokój zwierzeń. Możesz się zwierzyć. Albo i nie."
  115. nowaLokacja.ustawKoordynaty(0, 3)
  116. swiat.dodajLokacje(nowaLokacja)
  117.  
  118. #######################
  119. ### TEST PORUSZANIA SIĘ
  120.  
  121. # dopóki nie zaimplementujemy poruszania się - koordynaty będziemy zmieniali bezpośrednio w kodzie
  122. # najpierw wybierzmy pozycję startową
  123. x = 0
  124. y = 0
  125.  
  126. # pobiezmy najpierw lokację na podstawie koordynatów (metoda klasy Swiat)
  127. lokacja = swiat.pobiezLokacje(x, y)
  128. # wyświetanie lokacji
  129. lokacja.wyswietl()
  130. # wyświetlanie możliwych wyjść (implementujemy to osobno, ponieważ wyliczanie wyjść jest możliwe dopiero przy klasie Świat)
  131. swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
  132. # ekstra linia dla czytelności
  133. print("")
  134.  
  135. # pójdźmy kawałek na północ
  136. y = y + 1
  137.  
  138. # dokładnie ten sam kod, co wcześniej - może warto w przyszłości to uprościć?
  139. lokacja = swiat.pobiezLokacje(x, y)
  140. lokacja.wyswietl()
  141. swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
  142. print("")
  143.  
  144. # na wschód
  145. x = x - 1
  146.  
  147. lokacja = swiat.pobiezLokacje(x, y)
  148. lokacja.wyswietl()
  149. swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
  150. print("")
  151.  
  152. # dwa razy na zachód
  153. x = x + 1
  154. x = x + 1
  155.  
  156. lokacja = swiat.pobiezLokacje(x, y)
  157. lokacja.wyswietl()
  158. swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
  159. print("")
  160.  
  161. # wschód, północ
  162. x = x - 1
  163. y = y + 1
  164.  
  165. lokacja = swiat.pobiezLokacje(x, y)
  166. lokacja.wyswietl()
  167. swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
  168. print("")
  169.  
  170. # jeszcze raz północ
  171. y = y + 1
  172.  
  173. lokacja = swiat.pobiezLokacje(x, y)
  174. lokacja.wyswietl()
  175. swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
  176. print("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement