Szczepan86

Gra przygodowa - lekcja 2

Dec 29th, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.87 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 = None
  7.     opis = None
  8.     # współrzędne danej lokalizacji na płaszczyźnie x y
  9.     x = None
  10.     y = None
  11.    
  12.     # konstruktor klasy lokacja - pozwala na określenie wartości parametrów w momencie tworzenia obiektu
  13.     def __init__(self, x, y, nazwa, opis):
  14.         self.x = x
  15.         self.y = y
  16.         self.nazwa = nazwa
  17.         self.opis = opis
  18.    
  19.     # metoda wyświetlająca nazwę oraz opis lokacji
  20.     def wyswietl(self):
  21.         print("Lokacja: " + self.nazwa)
  22.         print(self.opis)
  23.  
  24.  
  25. # Klasa Swiat
  26. # Zawiera w sobie informacje na temat całego zbioru (mapy) lokalizacji
  27. # Posiada jedną właściwość (listę lokacji) oraz metody ułatwiające interakcję między poszczególnymi lokacjami
  28. class Swiat():
  29.     # właściwość typu lista przechowująca wszystkie obiekty lokacji
  30.     # w wygodny sposób przechowuje wszystkie referencje do poszczególnych lokacji
  31.     listaLokacji = []
  32.    
  33.     # metoda służąca do dodawania lokacji do świata
  34.     # dodanie lokacji jest równoznaczne z appendowaniem obiektu lokacja do listy lokacji
  35.     def dodajLokacje(self, lokacja):
  36.         self.listaLokacji.append(lokacja)
  37.    
  38.     # metoda zwracająca lokację (obiekt) na podstawie podanych współrzędnych
  39.     # aby znaleźć obiekt iterujemy po elementach z listy i sprawdzamy ich współrzędne
  40.     # w przypadku nie znalezienia obiektu zwracamy None (czyli nic)
  41.     def pobierzLokacje(self, x, y):
  42.         for lokacja in self.listaLokacji:
  43.             if lokacja.x == x and lokacja.y == y:
  44.                 return lokacja
  45.         return None
  46.    
  47.     # metoda wyświetlająca wszystkie dostępne wyjścia
  48.     def wyswietlWyjscia(self, x, y):
  49.         wyjscia = "Wyjścia: "
  50.         if self.sprawdzPolnoc(x, y):
  51.             wyjscia = wyjscia + "północ[n] "
  52.         if self.sprawdzPoludnie(x, y):
  53.             wyjscia = wyjscia + "południe[s] "
  54.         if self.sprawdzWschod(x, y):
  55.             wyjscia = wyjscia + "wschód[e] "
  56.         if self.sprawdzZachod(x, y):
  57.             wyjscia = wyjscia + "zachód[w] "
  58.         print(wyjscia)
  59.        
  60.     # aby sprawdzić czy istnieje wyjście, sprawdzamy czy bezpośrednio w danym kierunku znajduje się lokacja
  61.     # 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)
  62.     # aby sprawdzić czy istnieje dana lokacja, używamy metody 'pobierzLokacje'
  63.     def sprawdzPolnoc(self, x, y):
  64.         if self.pobierzLokacje(x, y + 1):
  65.             return True
  66.         return False
  67.    
  68.     def sprawdzPoludnie(self, x, y):
  69.         if self.pobierzLokacje(x, y - 1):
  70.             return True
  71.         return False
  72.    
  73.     def sprawdzWschod(self, x, y):
  74.         if self.pobierzLokacje(x + 1, y):
  75.             return True
  76.         return False
  77.    
  78.     def sprawdzZachod(self, x, y):
  79.         if self.pobierzLokacje(x - 1, y):
  80.             return True
  81.         return False
  82.        
  83.        
  84. # Klasa Bohater
  85. # Zawiera wszystkie cechy (koordynaty, parametry bohatera) oraz metody bezpośrednio wpływające na bohatera
  86. class Bohater:
  87.     x = None
  88.     y = None
  89.     imie = ""
  90.    
  91.     # konstruktor klasy lokacja - pozwala na określenie wartości parametrów w momencie tworzenia obiektu
  92.     def __init__(self, x, y, imie):
  93.         self.x = x
  94.         self.y = y
  95.         self.imie = imie
  96.    
  97.     # poruszanie się bohatera
  98.     def idzNaPolnoc(self, swiat):
  99.         if swiat.sprawdzPolnoc(self.x, self.y):
  100.             print("Idziesz na północ...")
  101.             self.y = self.y + 1
  102.         else:
  103.             print("Nie możesz tam pójść!")
  104.        
  105.     def idzNaPoludnie(self, swiat):
  106.         if swiat.sprawdzPoludnie(self.x, self.y):
  107.             print("Idziesz na południe...")
  108.             self.y = self.y - 1
  109.         else:
  110.             print("Nie możesz tam pójść!")
  111.        
  112.     def idzNaWschod(self, swiat):
  113.         if swiat.sprawdzWschod(self.x, self.y):
  114.             print("Idziesz na wschód...")
  115.             self.x = self.x + 1
  116.         else:
  117.             print("Nie możesz tam pójść!")
  118.        
  119.     def idzNaZachod(self, swiat):
  120.         if swiat.sprawdzZachod(self.x, self.y):
  121.             print("Idziesz na zachód...")
  122.             self.x = self.x - 1
  123.         else:
  124.             print("Nie możesz tam pójść!")
  125.    
  126.  
  127. # Funkcja wykonajAkcje
  128. # Służy do interpretowania komendy i wywoływania powiązanej metody / akcji
  129. def wykonajAkcje(komenda):
  130.     komenda = komenda.strip()
  131.     if komenda == "n" or komenda == "polnoc":
  132.         bohater.idzNaPolnoc(swiat)
  133.         return
  134.     elif komenda == "s" or komenda == "poludnie":
  135.         bohater.idzNaPoludnie(swiat)
  136.         return
  137.     elif komenda == "e" or komenda == "wschod":
  138.         bohater.idzNaWschod(swiat)
  139.         return
  140.     elif komenda == "w" or komenda == "zachod":
  141.         bohater.idzNaZachod(swiat)
  142.         return
  143.     elif komenda == "koniec":
  144.         print("Bywaj!")
  145.     else:
  146.         print("Nie rozumiem co masz na myśli...")
  147.    
  148.    
  149.    
  150. #################################################
  151. ########## TU ZACZYNA SIE WLASCIWA GRA ##########
  152. #################################################
  153.        
  154. # najpierw tworzymy obiekt swiat klasy Swiat() - wystarczy jeden obiekt na całą grę
  155. swiat = Swiat()
  156.  
  157.  
  158. ####################
  159. ### TWORZENIE ŚWIATA
  160.  
  161. swiat.dodajLokacje(Lokacja(0, 0, "Komnata", "Nasza pierwsza komnata, z której rozpoczynamy przygodę. Ma podłogę, sufit i nawet jakieś meble."))
  162. swiat.dodajLokacje(Lokacja(0, 1, "Korytarz przechodni", "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."))
  163. swiat.dodajLokacje(Lokacja(-1, 1, "Komnata wschodnia",  "Cała komnata zawalona jest zabugowanym kodem. Poza tym nic tu nie ma."))
  164. swiat.dodajLokacje(Lokacja(1, 1, "Komnata zachodnia", "To jest komnata zapomnianych pomysłów. Znajduje się tu masa niedokończonych projektów. Chyba ludzie często tu bywają."))
  165. swiat.dodajLokacje(Lokacja(0, 2, "Wąski korytarz", "Korytarz łączący korytarz przechodni z pokojem na samej północy. Uważaj, by nie potknąć się o kable."))
  166. swiat.dodajLokacje(Lokacja(0, 3, "Północny pokój", "Korytaokój zwierzeń. Możesz się zwierzyć. Albo i nie."))
  167.  
  168.  
  169. #######################
  170. ### TWORZENIE POSTACI
  171.  
  172. imie = input("Jak ma na imię Twoja postać? ")
  173. bohater = Bohater(0, 0, imie)
  174. print("Witaj, " + imie + "!")
  175.  
  176.  
  177. #######################
  178. ### GŁÓWNA PĘTLA
  179.  
  180. komenda = ""
  181. while (komenda != "koniec"):
  182.     print()
  183.     lokacja = swiat.pobierzLokacje(bohater.x, bohater.y)
  184.     lokacja.wyswietl()
  185.     swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
  186.     komenda = input("Co robisz? ")
  187.     wykonajAkcje(komenda)
Advertisement
Add Comment
Please, Sign In to add comment