• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Robię kalkulator damage'a w grze i w wielu miejscach pokazuje się to samo ostrzeżenie.

Object Storage Arubacloud
0 głosów
113 wizyt
pytanie zadane 14 listopada 2021 w Python przez DaXari Początkujący (280 p.)

Tak jak napisałem w temacie, jedno ostrzeżenie pojawia się w wielu miejscach (unexpected type(s)). Wiem co to znaczy, ale nie wiem czemu tam jest, to jest pierwszy problem, drugi jest taki, że po każdym "Ataku" w kalkulatorze, statystyki powinny resetować się do podanych na początku, lecz tak się nie dzieje i często dochodzi do tego że atak jest minusowy, ten błąd zaznaczyłem strzałką i literą "A", tam powinno zmieniać wszystkie zmienione statystyki do tych podanych na początku, tak aby ponownie można było wykonać na nich obliczenia. Tu jest kod: 

 

Gracz1Staty = [0, 0, 0, 0]
Gracz2Staty = [0, 0, 0, 0]
Gracz1Statyw = [0, 0, 0, 0]
Gracz2Statyw = [0, 0, 0, 0]

Gracz1pokemon = str(input("Gracz 1, podaj nazwę pokemona: "))
Gracz1Staty[0] = int(input("Podaj atak: "))
Gracz1Staty[1] = int(input("Podaj życie: "))
Gracz1Staty[2] = int(input("Podaj tarczę: "))
Gracz1Staty[3] = int(input("Podaj speed: "))

Gracz2pokemon = str(input("Gracz 2, podaj nazwę pokemona: "))
Gracz2Staty[0] = int(input("Podaj atak: "))
Gracz2Staty[1] = int(input("Podaj życie: "))
Gracz2Staty[2] = int(input("Podaj tarczę: "))
Gracz2Staty[3] = int(input("Podaj speed: "))

while True:
    Gracz1Statyw = Gracz1Staty
    Gracz2Statyw = Gracz2Staty

    if Gracz1Statyw[3] > Gracz2Statyw[3]:
        print(Gracz1pokemon, " atakuje!")
        Gracz2Statyw[2] = Gracz2Statyw[2] / 2    <-- Tu jest OSTRZEŻENIE
        Gracz2Statyw[2] = Gracz2Statyw[2].__round__()
        Gracz1Statyw[0] = Gracz1Statyw[0] - Gracz2Statyw[2]
        if Gracz1Statyw[0] <= 0:
            Gracz1Statyw = 0
        Gracz2Statyw[1] = Gracz2Statyw[1] - Gracz1Statyw[0]
        print(Gracz1pokemon, " zadał ",  str(Gracz1Statyw[0]), " życia")
        if Gracz2Statyw[1] <= 0:
            print(Gracz2pokemon, " wyeliminowany!")
            Gracz2Staty.clear()
            exit(0)
        else:
            print(Gracz2pokemon, " ma ", str(Gracz2Statyw[1]), " życia")

        Gracz1Statyw = Gracz1Staty  <-- A
        Gracz2Statyw = Gracz2Staty

        print(Gracz2pokemon, " atakuje!")
        Gracz1Statyw[2] = Gracz1Statyw[2] / 2   <-- Tu jest OSTRZEŻENIE
        Gracz1Statyw[2] = Gracz1Statyw[2].__round__()
        Gracz2Statyw[0] = Gracz2Statyw[0] - Gracz1Statyw[2]
        if Gracz1Statyw[0] <= 0:
            Gracz1Statyw = 0
        Gracz1Statyw[1] = Gracz1Statyw[1] - Gracz2Statyw[0]
        print(Gracz2pokemon, " zadał", str(Gracz2Statyw[0]), " życia")
        if Gracz1Statyw[1] <= 0:
            print(Gracz1pokemon, " wyeliminowany!")
            Gracz2Staty.clear()
            exit(0)
        else:
            print(Gracz1pokemon, " ma ", str(Gracz1Statyw[1]), " życia")

 

komentarz 15 listopada 2021 przez Inn Gaduła (4,300 p.)

Kod strasznie zagmatwany, radzę opakować ataki itd. w funkcję.
Zacznij od tego co się dzieje w przypadku gdy:

if Gracz1Statyw[3] > Gracz2Statyw[3]:

nie jest prawdą, program wchodzi w nieskończoną pętle, zacznij od tego.

komentarz 15 listopada 2021 przez DaXari Początkujący (280 p.)
edycja 15 listopada 2021 przez DaXari

Dzięki, jeszcze się uczę i poszedłem w projekt ponad moje możliwości.

Tylko jeszcze jedna kwestia, jeżeli to nie będzie prawdą, to prawdą będzie drugi przypadek gdzie gracz 2 jest szybszy i atakuje pierwszy i w takim przypadku program wciąż będzie w pętli, prawda? Później dodam jeszcze aby co każdy atak program pytał o to jak bardzo efektywny jest atak (x2, x0.5), ale to raczej nic nie zmieni, bo wciąż:


        Gracz1Statyw = Gracz1Staty
        Gracz2Statyw = Gracz2Staty

Nie zmienia statystyk zmiennych w walce "w" do statystyk początkowych

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+2 głosów
2 odpowiedzi 742 wizyt
pytanie zadane 21 kwietnia 2022 w Python przez niezalogowany
0 głosów
1 odpowiedź 1,654 wizyt
pytanie zadane 12 lipca 2020 w Python przez LogicznaLogika Nowicjusz (200 p.)
0 głosów
1 odpowiedź 1,302 wizyt
pytanie zadane 25 maja 2020 w Python przez hellobm Nowicjusz (170 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...