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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
77 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,320 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 211 wizyt
pytanie zadane 21 kwietnia 2022 w Python przez Michal123456 Bywalec (2,400 p.)
0 głosów
1 odpowiedź 958 wizyt
pytanie zadane 12 lipca 2020 w Python przez LogicznaLogika Nowicjusz (200 p.)
0 głosów
1 odpowiedź 850 wizyt
pytanie zadane 25 maja 2020 w Python przez hellobm Nowicjusz (170 p.)

90,295 zapytań

138,894 odpowiedzi

311,078 komentarzy

60,009 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...