Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Klasa Lokacja
- # Zawiera w sobie wszystkie parametry (właściwości) odnośnie konkretnej lokacji
- # Zawiera również metody przydatne przy operacjach na lokacjach
- class Lokacja():
- # Właściwości klasy Lokacja
- nazwa = None
- opis = None
- # współrzędne danej lokalizacji na płaszczyźnie x y
- x = None
- y = None
- # konstruktor klasy lokacja - pozwala na określenie wartości parametrów w momencie tworzenia obiektu
- def __init__(self, x, y, nazwa, opis):
- self.x = x
- self.y = y
- self.nazwa = nazwa
- self.opis = opis
- # metoda wyświetlająca nazwę oraz opis lokacji
- def wyswietl(self):
- print("Lokacja: " + self.nazwa)
- print(self.opis)
- # Klasa Swiat
- # Zawiera w sobie informacje na temat całego zbioru (mapy) lokalizacji
- # Posiada jedną właściwość (listę lokacji) oraz metody ułatwiające interakcję między poszczególnymi lokacjami
- class Swiat():
- # właściwość typu lista przechowująca wszystkie obiekty lokacji
- # w wygodny sposób przechowuje wszystkie referencje do poszczególnych lokacji
- listaLokacji = []
- # metoda służąca do dodawania lokacji do świata
- # dodanie lokacji jest równoznaczne z appendowaniem obiektu lokacja do listy lokacji
- def dodajLokacje(self, lokacja):
- self.listaLokacji.append(lokacja)
- # metoda zwracająca lokację (obiekt) na podstawie podanych współrzędnych
- # aby znaleźć obiekt iterujemy po elementach z listy i sprawdzamy ich współrzędne
- # w przypadku nie znalezienia obiektu zwracamy None (czyli nic)
- def pobierzLokacje(self, x, y):
- for lokacja in self.listaLokacji:
- if lokacja.x == x and lokacja.y == y:
- return lokacja
- return None
- # metoda wyświetlająca wszystkie dostępne wyjścia
- def wyswietlWyjscia(self, x, y):
- wyjscia = "Wyjścia: "
- if self.sprawdzPolnoc(x, y):
- wyjscia = wyjscia + "północ[n] "
- if self.sprawdzPoludnie(x, y):
- wyjscia = wyjscia + "południe[s] "
- if self.sprawdzWschod(x, y):
- wyjscia = wyjscia + "wschód[e] "
- if self.sprawdzZachod(x, y):
- wyjscia = wyjscia + "zachód[w] "
- print(wyjscia)
- # aby sprawdzić czy istnieje wyjście, sprawdzamy czy bezpośrednio w danym kierunku znajduje się lokacja
- # 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)
- # aby sprawdzić czy istnieje dana lokacja, używamy metody 'pobierzLokacje'
- def sprawdzPolnoc(self, x, y):
- if self.pobierzLokacje(x, y + 1):
- return True
- return False
- def sprawdzPoludnie(self, x, y):
- if self.pobierzLokacje(x, y - 1):
- return True
- return False
- def sprawdzWschod(self, x, y):
- if self.pobierzLokacje(x + 1, y):
- return True
- return False
- def sprawdzZachod(self, x, y):
- if self.pobierzLokacje(x - 1, y):
- return True
- return False
- # Klasa Bohater
- # Zawiera wszystkie cechy (koordynaty, parametry bohatera) oraz metody bezpośrednio wpływające na bohatera
- class Bohater:
- x = None
- y = None
- imie = ""
- # konstruktor klasy lokacja - pozwala na określenie wartości parametrów w momencie tworzenia obiektu
- def __init__(self, x, y, imie):
- self.x = x
- self.y = y
- self.imie = imie
- # poruszanie się bohatera
- def idzNaPolnoc(self, swiat):
- if swiat.sprawdzPolnoc(self.x, self.y):
- print("Idziesz na północ...")
- self.y = self.y + 1
- else:
- print("Nie możesz tam pójść!")
- def idzNaPoludnie(self, swiat):
- if swiat.sprawdzPoludnie(self.x, self.y):
- print("Idziesz na południe...")
- self.y = self.y - 1
- else:
- print("Nie możesz tam pójść!")
- def idzNaWschod(self, swiat):
- if swiat.sprawdzWschod(self.x, self.y):
- print("Idziesz na wschód...")
- self.x = self.x + 1
- else:
- print("Nie możesz tam pójść!")
- def idzNaZachod(self, swiat):
- if swiat.sprawdzZachod(self.x, self.y):
- print("Idziesz na zachód...")
- self.x = self.x - 1
- else:
- print("Nie możesz tam pójść!")
- # Funkcja wykonajAkcje
- # Służy do interpretowania komendy i wywoływania powiązanej metody / akcji
- def wykonajAkcje(komenda):
- komenda = komenda.strip()
- if komenda == "n" or komenda == "polnoc":
- bohater.idzNaPolnoc(swiat)
- return
- elif komenda == "s" or komenda == "poludnie":
- bohater.idzNaPoludnie(swiat)
- return
- elif komenda == "e" or komenda == "wschod":
- bohater.idzNaWschod(swiat)
- return
- elif komenda == "w" or komenda == "zachod":
- bohater.idzNaZachod(swiat)
- return
- elif komenda == "koniec":
- print("Bywaj!")
- else:
- print("Nie rozumiem co masz na myśli...")
- #################################################
- ########## TU ZACZYNA SIE WLASCIWA GRA ##########
- #################################################
- # najpierw tworzymy obiekt swiat klasy Swiat() - wystarczy jeden obiekt na całą grę
- swiat = Swiat()
- ####################
- ### TWORZENIE ŚWIATA
- swiat.dodajLokacje(Lokacja(0, 0, "Komnata", "Nasza pierwsza komnata, z której rozpoczynamy przygodę. Ma podłogę, sufit i nawet jakieś meble."))
- 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."))
- swiat.dodajLokacje(Lokacja(-1, 1, "Komnata wschodnia", "Cała komnata zawalona jest zabugowanym kodem. Poza tym nic tu nie ma."))
- 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ą."))
- 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."))
- swiat.dodajLokacje(Lokacja(0, 3, "Północny pokój", "Korytaokój zwierzeń. Możesz się zwierzyć. Albo i nie."))
- #######################
- ### TWORZENIE POSTACI
- imie = input("Jak ma na imię Twoja postać? ")
- bohater = Bohater(0, 0, imie)
- print("Witaj, " + imie + "!")
- #######################
- ### GŁÓWNA PĘTLA
- komenda = ""
- while (komenda != "koniec"):
- print()
- lokacja = swiat.pobierzLokacje(bohater.x, bohater.y)
- lokacja.wyswietl()
- swiat.wyswietlWyjscia(lokacja.x, lokacja.y)
- komenda = input("Co robisz? ")
- wykonajAkcje(komenda)
Advertisement
Add Comment
Please, Sign In to add comment