Przekazywanie zmiennych z jednej metody do drugiej, ocena programu, konstruktory w Pythonie

0

Zwracam się z ogromną prośbą o odpowiedzenie na poniższe pytania:

  1. Czy da się przekazywać zmienne z jednej metody do drugiej?
    Napisałem coś takiego
def popo(twojeZłoto):
    print(twojeZłoto)
def momo():
    twojeZłoto = 5
    return twojeZłoto
    popo(twojeZłoto)
momo()

ale w tym print(twojeZłoto) nie działa, dlaczego?
2. Czy istnieje coś takiego w Pythonie jak konstruktor w Java, czyli, że wiecie, że robię konstruktora, tam ma jakieś parametry wysokość, długość, szerokość, kolor itd to żeby nie pisać za każdym razem nazw zmiennych tylko po prostu piszę w nawiasie np. opel (220, 320, 150, czarny) zamiast opel: wysokość = 220, długość = 320, kolor = czarny). Bo chce sobie zrobić grę tekstową z bazą zawodników i nie chce mi się wpisywać ciągle nazwa zmiennej = wartość, tylko wiecie tak w nawiasie tylko by się przydało i tam wartości.
3. Napisałem taki program i działa, ale nie wiem czy dobrze i czy nie możnaby go skrócić, jak chcecie to wypróbujcie:

import random
import time
def cieniołak():
    print('''W końcu docierasz do najbardziej dziewiczej, najciemniejszej części lasu, gdzie czai
    się ogromny cieniołak. Walczysz z nim zażarcie, wiedząc, że masz potężny łuk od Aleny. W końcu
    zwyciężasz. Z drzewa, którego pilnował zrywasz jabłko dające nadludzkie siły. Dzięki niemu przez
    resztę swojego życia znany jesteś jako niezrównany i niepokonany łowca - pogromca legendarnych bestii.''')
def małyCieniołak():
    print('''Bez łuku Aleny postanawiasz walczyć z mniejszym cieniołakiem, żyjącym trochę na uboczu, walka jest ciężka,
    ale to ty jestes górą. Nieopodal zauważasz jaskinie cieniołaka ze skarbem. Dzięki niemu, mając ogromne oszczędności,
    dożywasz starości''')
def smok():
    print('''Ogromny, przerażający smok pojawia się przed twoimi oczami. Jego siła, szybkość i zwinność jest niebywała.
    Jego ogień pali twoją tarczę, którą odrzucasz. Chwytasz buławę w obie ręce i rzucasz się prosto w jego ogromny łeb.
    Wyprowadzone uderzenie powala smoka, a ty znajdujesz elksir siły, który sprawia, że jesteś przez resztę swojego życia
    niezrównanym wojownikiem, gladiatorem, który zgładził najsłynniejszych rycerzy tego świata,
    którego imię nigdy nie zostanie zapomniane. ''')
def wiwerna():
    print('''Widzisz sporą wiwernę przed sobą. Walczycie zażarcie, ale w końcu odnosisz sukces. Za znalezione skarby, które
    pilnowała żyjesz spokojnie do końca życia w bogactwie i szczęściu''')
def wyświetlIntro():
    print('''Witaj! Ostatniej nocy spędziłeś w karczmie długie godziny. Chyba
    ktoś dosypał ci coś do kufla, bo nic nie pamiętasz. Budzisz się pośrodku
    wielkiego, ciemnego lasu. Wygląda na bardzo stary.''')
    time.sleep(4)
def pierwszeKroki():
    print('''Powoli wstajesz. Jak na środek lata nie jest zbyt ciepło. Rozglądasz
    się dookoła. Widzisz stare drzewa, gdzieniegdzie paprocie. Słyszysz śpiew ptaków
    i zapach kwiatów. Kilkadziesiąt metrów dalej widzisz niewielkie wzniesienie, a
    na nim kilka drzew. Postanawiasz tam iść i wspiąć na jedno z nich, aby móc lepiej
    rozejrzeć się po okolicy. Zajmuje ci to trochę czasu...''')
    time.sleep(6)
def widokOkolicy():
    print('''Wspinasz się na najwyższe drzewo i widzisz okolicę. Widzisz niedaleko drogę,
    możesz nią dotrzeć na północ lub południe lasu. Od ciebie zależy, którą drogę wybierzesz.
    Na północy widzisz, że las robi się jeszcze gęstszy, a drzewa są większe. Na południu
    las się rozrzedza, a na końcu widoć góry. Którą drogę wybierzesz? (1 - północ, 2 -
    południe)''')
def krasnoludKról():
    print('''W końcu docierasz do podnóża góry. U wejścia do jaskini czeka na ciebie krasnolud. Witam cię podróżniku!
    W tej jaskini czekają na ciebie groźne bestie. Widzę, że twój miecz jest już stary i zużyty. Może chciałbyś kupić
    moją buławę? Kosztuje jedyne 10 złota. Co ty na to? 1 - tak 2 - nie''')
    buława = int(input())
    if buława == 1:
        print("No i kupiłes. Teraz czas zmierzyć się ze swoim przeciwnikiem")
        smok()
    elif buława == 2:
        print("Jak nie to nie. Teraz czas zmierzyć się ze swoim przeciwnikiem")
        wiwerna()
    else:
        print("Zła wartość! Giń!!!!")
def władcaElfów():
    print('''Witaj kolego. Przed tobą władczyni elfów Alena! W tamtej części lasu czekają na ciebie ogromne cieniołaki. Widzę, że
    twój stary łuk jest w kiepskim stanie. Może kupisz mój za jedyne 6 sztuk złota? 1 - kup 2 - nie kupuj''')
    łuk = int(input())
    if łuk == 1:
        print("No i kupiłeś. Teraz czas zmierzyć się ze swoim przeciwnikiem")
        cieniołak()
    elif łuk == 2:
        print("Jak nie to nie. Teraz czas zmierzyć się ze swoim przeciwnikiem")
        małyCieniołak()
    else:
        print("Zła wartość! Giń!!!!")
def krainaElfów():
    print('''Idziesz północną drogą. Nagle przy drodzę zauważasz niewielką stertę kamieni
    pod którą wystaje niewielki woreczek. Co robisz? (1 - sprawdzasz co jest w środku, 2 -
    ignorujesz i idziesz dalej)''')
    sakiewka = int(input())
    twojeZdrowie = 10
    twojeZłoto = 5
    if sakiewka == 1:
        print("Znajdujesz złoto! Niestety, przy okazji ugryzł cię pająk! Idziesz dalej.")
        twojeZłoto = twojeZłoto + 1
        twojeZdrowie = twojeZdrowie - 2
        print("Twoje złoto: ")
        print(twojeZłoto)
        print("Zdrowie: " )
        print(twojeZdrowie)
        władcaElfów()
    elif sakiewka == 2:
        print("Wolisz nie ryzykować, idziesz dalej")
        print("Twoje złoto: ")
        print(twojeZłoto)
        print("Zdrowie: " )
        print(twojeZdrowie)
        władcaElfów()
    else:
        print("Zła wartość! Giń!!!!")
def krainaKrasnoludów():
    print('''Przemierzasz szlak, kierując się na południe. Las nie jest już tak gęsty jak przedtem. W zasięgu wzroku widzisz
    góry. Nagle słyszysz głośny krzyk. Przybiegasz i widzisz kupca, który walczy ze złoczyńcą. "Pomóż mi!" - krzyczy kupiec.
    "Nie słuchaj go, to mi pomóż" - mówi złoczyńca. Co wybierzesz? (1 - pomóż kupcowi, 2 - pomóż złoczyńcy, 3 - zabij ich obu)
    ''')
    pomoc = int(input())
    twojeZdrowie = 10
    twojeZłoto = 5
    if pomoc == 1:
        print("Kupiec jest ci bardzo wdzięczny, niestety jest chciwy i daje ci tylko 1 złoto. Idziesz dalej.")
        twojeZłoto = twojeZłoto + 1
        twojeZdrowie = twojeZdrowie
        print("Twoje złoto: ")
        print(twojeZłoto)
        print("Zdrowie: " )
        print(twojeZdrowie)
        krasnoludKról()
    elif pomoc == 2:
        print('''Złoczyńca nie dotrzymuje umowy, ale zabijasz go odnosząc przy tym poważne rany. Za to
        plądrujesz całe złoto jakie ma kupiec. Otrzymujesz 5 złota, ale tracisz 5 punktów zdrowia. Idziesz dalej.''')
        twojeZłoto = twojeZłoto + 5
        twojeZdrowie = twojeZdrowie - 5
        print("Twoje złoto: ")
        print(twojeZłoto)
        print("Zdrowie: " )
        print(twojeZdrowie)
        krasnoludKról()
    elif pomoc == 3:
        print('''Przykro mi nie dałeś rady, następnym razem mierz siły na zamiary.''')
    else:
        print("Zła wartość! Giń!!!!")
zagrajPonownie = 'tak'
while zagrajPonownie == 'tak' or zagrajPonownie == 't':
    wyświetlIntro()
    pierwszeKroki()
    widokOkolicy()
    wybierzDroge = int(input())
    if wybierzDroge == 1:
        krainaElfów()
    elif wybierzDroge == 2:
        krainaKrasnoludów()
    else:
        print("Zła wartość! Giń!!!!")
    print('Chcesz ponownie rozpocząć swoją przygodę? (tak lub nie)')
    zagrajPonownie = input()
```python
1
  1. Nie działa, bo return zawsze kończy funkcję... Zamień dwie ostatnie linijki w funkcji momo.
  2. Jest coś podobnego -- zainteresuj się klasami i metodą __init__.
0

Wielkie dzięki już z tym drugim punktem się uporałem, a tamtym się jutro zajmę, rzeczywiście init była przydatna

class Zawodnik:
    def __init__(self, przynależność, opis, atak, hp, obrona, regeneracja):
        self.przynależność = przynależność
        self.opis = opis
        self.atak = atak
        self.hp = hp
        self.obrona = obrona
        self.regeneracja = regeneracja

    def show_info(self):
        print("Przynależność: ")
        print(self.przynależność)
        print("Biografia:")
        print(self.opis)
        print("Atak: ")
        print(self.atak)
        print("Punkty życia: ")
        print(self.hp)
        print("Obrona: ")
        print(self.obrona)
        print("Regeneracja: ")
        print(self.regeneracja)

liu_Kang = Zawodnik('Mistrz Sztuk Walki', '''Liu Kang jest jednym z najpopularniejszych i najpotężniejszych
wojowników w serii Mortal Kombat. Z biegiem czasu stał się on wielkim bohaterem i wielokrotnie zdobył tytuł
mistrza turniejów. Odwiecznym wrogiem Kanga jest Shang Tsung, którego pokonał wielokrotnie, krzyżując mu niecne
plany. Liu Kang jest członkiem organizacji Biały Lotus, a także trenuje intensywnie w Akademi Wu Shi. To właśnie
w tej akademii został zabity przez zabójcze przymierze Shang Tsunga i Quan Chi.''', 990, 900, 870, 920)

johnny_Cage = Zawodnik('Agent Specjalny', '''Johnny był starszą gwiazdą Hollywood i chciał odzyskać z powrotem swoją sławę.
Pierwotnie Cage przybył na pierwszy turniej aby rozwinąć swoje waleczne umiejętności oraz zaimponować krytykom, którzy
uważali że, Johnny jest nikim więcej niż zwykłym aktorem. Ostatecznie Cage stał się jednym z najwaleczniejszych obrońców
Ziemskiego Wymiaru. Choć czasami popada w swój dawny sposób bycia egoistą i materialistą, zawsze był odważny i lojalny dla
wojowników z Earthrealm.''', 900, 900, 870, 980)

sonya_Blade = Zawodnik('Agent Specjalny', '''Generał Sonya Blade jest żołnierzem Sił Specjalnych w serii gier
Mortal Kombat. Obecnie sprawuje dowództwo nad operacjami i członkami organizacji. Wraz z Johnny Cage'em mają
córkę Cassie. Swój debiut miała w grze Mortal Kombat. ''', 960, 920, 870, 920)

raiden = Zawodnik('Starszy bóg', '''Raiden to osoba spokojna i opanowana. Zrobi wszystko by kogoś ocalić. Jest
jednym z starszych bogów, lecz może (jeśli wymaga tego sytuacja) zrzec się swojego tytułu. Jest bogiem gromu. Za
wszelką cenę broni Ziemskiego wymiaru. Rzadko zdarza się mu zabijać. Raiden jest także w stowarzyszeniu
White Lotos. ''', 900, 1000, 920, 950)

kano = Zawodnik('Czarny smok', '''Jest członkiem organizacji Czarny Smok i wojownikiem w serii gier Mortal Kombat.
Był pierwszym członkiem klanu, który pojawił się. Jest jednym z pierwszych wojowników debiutujących w grze
Mortal Kombat.''', 920, 920, 850, 990)

shang_Tsung = Zawodnik('Pozaświat', '''Jest to zdradziecki czarnoksiężnik przywłaszczający dusze pokonanych wojowników.
Był gospodarzem ostatnich dziewięciu turniejów Mortal Kombat w Królestwie Ziemskim. Jest wielce oddany dla swego pana
Shao Kahna, cesarza Outworld. Shang pochodzi z Ziemi i niegdyś reprezentował Królestwo Ziemskie w Turnieju Mortal Kombat,
lecz jego wielka chęć poznania czarnej magii zaprowadziła go do Zaświatów. To tam sprzymierzył się z Imperatorem Outworld
i przyrzekł walczyć przy jego boku, w zamian za zagłębienie się w czarną magię. Shang jest wielce oddany Shao Kahnowi
wykonując jego polecenia. Jeżeli nie spełni misji jaką jest zdobycie Królestwa Ziemskiego, czeka go wielka kara z rąk
cesarza. ''', 900, 900, 1150, 900)

goro = Zawodnik('Pozaświat', '''Goro jest księciem Shokan występującym w serii gier Mortal Kombat. Pierwszy raz pojawił się
jako sub-boss w grze Mortal Kombat. Goro po raz pierwszy pokazał się w pierwszej odsłonie Mortal Kombat jak pół-boss.
Posiada cztery śmiercionośne ramiona. Jest jednym z czterech mutantów. Jest księciem krainy Outworld. W jednej z cut-scenek
Mortal Kombat Gold wspomina, ze ma syna. ''', 1000, 900, 1000, 900)

shao_Kahn = Zawodnik('Pozaświat', '''Shao Kahn to imperator i władca Zaświatów.Najwyższy władca Outworld, Shao Kahn rządzi
wszystkimi okolicznymi królestwami. Pięćset lat temu wygnał on czarownika Shang Tsung do Królestwa Ziemi aby ten zapłacił
za swoje zbrodnie. Shang Tsung miał naruszyć równowagę i osłabić bramy do Królestwa ziemskiego. Osłabione bramy pozwoliłyby
Kahn'owi i jego sługom wiecznie stąpać po Ziemi i sprowadzić ją i jej mieszkańców do pełnej ciemności i chaosu egzystencji.
Tylko wtedy zbrodnie Shang Tsunga miały zostać mu zapomniane. Imperator i bóg Zaświatów, łamie święte zasady turnieju Mortal
Kombat żeby zdobyć Królestwo Ziemskie.Został dwukrotnie pokonany przez Liu Kanga (MK II i MK III). Zmęczony wojną zostaje
zamordowany przez Quan Chi i Shang Tsunga. Okazuje się że zabili jego klona. Przez cały czas chował się w lasach Zaswiatów.
W bitwie Armageddonu zabił wiele postaci. Zamordował Blaze'a a potem Zabił Mrocznego Raidena. Zwyciężył i zjednoczył wszystkie
światy pod jego panowaniem.''', 1200, 900, 900, 11000)

wybierzZawodnika = input('''Wybierz postać, o której chciałbyś się czegoś dowiedzieć, wpisując jej numer:''')

ale jeszcze musze dokończyć

0

Widzę, że to dopiero początek, ale poszukaj jak możesz zapisywać i odczytywać dane np z formatu json, bo trzymanie tego wszystkiego w kodzie bardzo utrudni Ci pracę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1