• 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.

VPS Starter Arubacloud
0 głosów
109 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 634 wizyt
pytanie zadane 21 kwietnia 2022 w Python przez niezalogowany
0 głosów
1 odpowiedź 1,547 wizyt
pytanie zadane 12 lipca 2020 w Python przez LogicznaLogika Nowicjusz (200 p.)
0 głosów
1 odpowiedź 1,221 wizyt
pytanie zadane 25 maja 2020 w Python przez hellobm Nowicjusz (170 p.)

92,315 zapytań

141,121 odpowiedzi

318,634 komentarzy

61,762 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...