mercredi 26 mai 2021

addToInventory won't add at least one item to the list + line repeated sometimes

inventario = {'Funi': 1, 'Pozioni': 2, 'Monete': 10, 'Arco': 1, 'Frecce': 3, 'Spada': 1, 'Smeraldi':0, 'Spada epica':0}

def display_inventory(inventario):
    total_items = 0
    print ("Inventario attuale: ")
    for oggetto in inventario:
        print(str(inventario[oggetto]) + ' ' + oggetto)
        total_items += inventario[oggetto]
    print("Numero totale di oggetti: " + str(total_items))

if __name__ == '__main__':
    display_inventory(inventario)

volte = int(input("Quante volte vuoi combattere? "))
cont = 0
vita = volte * 10
giocoON = True
monete = 10
poz = 2
funi = 1
spada2 = 0
smeraldi = 0

while giocoON == True:
    import random
    rnd = random.randint(1, 5)
    mostro = 10 + rnd
    frecce = 3
    print("•••• I tuoi punti vita sono " + str(vita) + "! ••••")
    print("•••• E' apparso un mostro di livello " + str(rnd) + "! ••••")
    while mostro > 0 and vita > 0 and giocoON == True:
        if cont >= volte:
            print(" ✓ Hai finito! ✓ ")
            giocoON = False
            break
        scelta = input ("""  Cosa vuoi fare?
        1. Attacca con spada (-5 vita)
        2. Attacca con arco e frecce (-7 vita / -1 freccia)
        3. Acquista nel negozio (Monete o smeraldi per oggetti)
        4. Utilizza pozione (-2 danno / + 5 vita)
        5. Utilizza fune (Salta battaglia attuale)
        6. Utilizza spada epica (-10 vita)
        """)
        if scelta == "1":
            print("•••• Hai attaccato il mostro con la spada, infliggendogli 5 di danno! ••••")
            mostro = mostro - 5
            dmg = random.randint(1, 5)
            vita = vita - dmg
            print("•••• Il mostro ti ha attaccato a sua volta togliendoti " + str(dmg) + "! ••••")
            print("•••• I tuoi punti vita sono " + str(vita) + "! ••••")
            print("•••• Il mostro ha " + str(mostro) + " punti vita! ••••")
        if scelta == "2":
            if frecce > 0:
                print("•••• Hai attaccato il mostro con l'arco, infliggendogli 7 di danno! ••••")
                mostro = mostro - 7
                dmg = random.randint(1, 5)
                vita = vita - dmg
                print("•••• Il mostro ti ha attaccato a sua volta togliendoti " + str(dmg) + "! ••••")
                print("•••• I tuoi punti vita sono " + str(vita) + "! ••••")
                print("•••• Il mostro ha " + str(mostro) + " punti vita! ••••")
                frecce = frecce - 1
                print("•••• Ora hai " + str(frecce) + " frecce! ••••")
            else:
                print("✗ Non hai frecce! ✗")
                print("•••• Il mostro non ha pietà e ti attacca comunque! ••••")
                dmg = random.randint(1, 5)
                vita = vita - dmg
                print("•••• I tuoi punti vita sono " + str(vita) + "! ••••")
        if scelta == "3":
            negozio = input ("""  Cosa vuoi fare?
            1. Acquista 5 frecce (-10 monete) [7 di danno ai mostri]
            2. Acquista 3 pozioni (-10 monete) [+ 5 vita e - 2 di danno]
            3. Acquista fune (-20 monete) [Salti una battaglia]
            4. Acquista spada epica (-3 smeraldi) [-10 vita]
            """)
            if negozio == "1":
                if monete >= 10:
                    print(" ✓ Acquisto effettuato! ✓ ")
                    frecce = frecce + 10
                    print("•••• Ora hai " + str(frecce) + " frecce! ••••")
                else:
                    print(" ✗ Non hai abbastanza monete! Puoi guadagnarle uccidendo mostri! ✗")
            if negozio == "2":
                if monete >= 10:
                    print(" ✓ Acquisto effettuato! ✓ ")
                    poz = poz + 3
                    print("•••• Ora hai " + str(poz) + " pozioni! ••••")
                else:
                    print(" ✗ Non hai abbastanza monete! Puoi guadagnarle uccidendo mostri! ✗")
            if negozio == "3":
                if monete >= 20:
                    print(" ✓ Acquisto effettuato! ✓ ")
                    funi = funi + 1
                    print("•••• Ora hai " + str(funi) + " funi! ••••")
                else:
                    print(" ✗ Non hai abbastanza monete! Puoi guadagnarle uccidendo mostri! ✗")
            if negozio == "4":
                if smeraldi >= 3 and spada2 == 0:
                    print(" ✓ Acquisto effettuato! ✓ ")
                    spada2 = spada2 + 1
                    print("•••• Ora hai la spada epica! ••••")
                else:
                    if spada2 != 0:
                        print(" ✗ Hai gia' la spada epica ✗ ")
                    else:
                        print(" ✗ Non hai abbastanza smeraldi! Puoi guadagnarli uccidendo mostri! ✗ ")
            if scelta != "1" and "2" and "3" and "4":
                print(" Numero inesistente nella lista, riprova ↺ ")
        if scelta == "4":
            if poz >= 1:
                print("•••• Hai utilizzato una pozione! ••••")
                vita = vita + 5
                dmg = random.randint(1, 5)
                vita = vita - dmg - 2
                print("•••• Il mostro ti ha attaccato, ma facendoti meno male, togliendoti " + str(dmg) + "! ••••")
                print("•••• I tuoi punti vita sono " + str(vita) + "! ••••")
                poz = poz - 1
                print("•••• Ora hai " + str(poz) + " pozioni! ••••")
            else:
                print(" ✗ Non hai pozioni! ✗")
        if scelta == "5":
            if funi >= 1:
                print("•••• Hai utilizzato una fune! ••••")
                funi = funi - 1
                print("•••• Ora hai " + str(funi) + " funi! ••••")
                cont = cont + 1
            else:
                print("✗ Non hai frecce! ✗")
                print("•••• Il mostro non ha pietà e ti attacca comunque! ••••")
                dmg = random.randint(1, 5)
                vita = vita - dmg
                print("•••• I tuoi punti vita sono " + str(vita) + "! ••••")
        if scelta == "6":
            if spada2 == 1:
                print("•••• Hai attaccato il mostro con la spada epica, infliggendogli 10 di danno! ••••")
                mostro = mostro - 10
                dmg = random.randint(1, 5)
                vita = vita - dmg
                print("•••• Il mostro ti ha attaccato a sua volta togliendoti " + str(dmg) + "! ••••")
                print("•••• I tuoi punti vita sono " + str(vita) + "! ••••")
                print("•••• Il mostro ha " + str(mostro) + " punti vita! ••••")
            else:
                print(" ✗ Non hai la spada epica, acquistala nel negozio! ✗ ")
        if scelta != "1" and "2" and "3" and "4" and "5" and "6":
            print(" Numero inesistente nella lista, riprova ↺ ")
        if vita <= 0:
            print("✗✗✗✗ Hai perso! ✗✗✗✗")
            giocoON = False
            break
        else:
            if mostro <= 0:
                premio = random.randint(1, 20)
                print("★★★★ Hai sconfitto il mostro ★★★★")
                print("$$$$ Congratulazioni! Hai vinto " + str(premio) + " monete! $$$$")
                monete = monete + premio
                print("•••• Ora hai " + str(monete) + " monete! ••••")
                fortuna = random.randint(1, 3)
                if fortuna == 2:
                    fr = random.randint(1, 3)
                    print("☘ Che fortuna! Il mostro ha lasciato cadere " + str(fr) + " frecce e tu le hai raccolte! ☘")
                    frecce = frecce + fr
                    print("•••• Ora hai " + str(frecce) + " frecce! ••••")
                mostro = 10 + rnd
                cont = cont + 1
                bonus = ['Smeraldi ★']
                inventory = {
                    'Funi': funi,
                    'Pozioni': poz,
                    'Monete': monete,
                    'Arco': 1,
                    'Frecce': frecce,
                    'Spada':1,
                    'Smeraldi ★':0,
                    'Spada epica ★': spada2
                    }
                print
                def add_to_inventory(inv, added_items):
                    added_itemsQ = {}
                    total_items = 0
                    for item in added_items:
                        added_itemsQ[item] = smeraldi + 1
                    for i in added_itemsQ:
                        if not i in inv:
                            inv[i] = added_itemsQ[i]
                        else:
                            inv[i] = inv[i] + added_itemsQ[i]
                    for i in inv:
                        print(str(inv[i]) + " " + str(i))
                        total_items += inv[i]
                    print ("Oggetti totali: " + (str(total_items)))
                add_to_inventory(inventory, bonus)
                if cont < volte:
                  print("➔➔➔➔ PROSSIMO AVVERSARIO ➔➔➔➔")
                    

Ok so this is my code, i'll try to sum it up in the best way I can, as you can see it's in Italian, but i will translate it in english, this code is a game, specifically a turn-based game where you fight monsters and then when you win you get an emerald that permits you to buy a new sword, that was the full code, this down there

              ` bonus = ['Smeraldi ★']
                inventory = {
                    'Funi': funi,
                    'Pozioni': poz,
                    'Monete': monete,
                    'Arco': 1,
                    'Frecce': frecce,
                    'Spada':1,
                    'Smeraldi ★':0,
                    'Spada epica ★': spada2
                    }
                print
                def add_to_inventory(inv, added_items):
                    added_itemsQ = {}
                    total_items = 0
                    for item in added_items:
                        added_itemsQ[item] = smeraldi + 1
                    for i in added_itemsQ:
                        if not i in inv:
                            inv[i] = added_itemsQ[i]
                        else:
                            inv[i] = inv[i] + added_itemsQ[i]
                    for i in inv:
                        print(str(inv[i]) + " " + str(i))
                        total_items += inv[i]
                    print ("Oggetti totali: " + (str(total_items)))
                add_to_inventory(inventory, bonus)

` is a part of the code that is supposed to give me an inventory item (Smeraldi), the problem is that it doesn't work as intended, the result is always 'Smeraldi : 1' it does not add the extra one, resulting in the user unable to buy the new sword at all. The other problem is that randomly sometimes this line

            if scelta != "1" and "2" and "3" and "4" and "5" and "6":
            print(" Numero inesistente nella lista, riprova ↺ ")

pops up, it's supposed to show when you put a wrong number in the menu selection, but it pops sometimes even when the number is right, it does not ruin the program as it just pops up, and if you put a wrong number it actually works as intended, but it's not supposed to appear even when numbers are right. or maybe is the shop secondary menu the problem?

if scelta != "1" and "2" and "3" and "4":
                print(" Numero inesistente nella lista, riprova ↺ ")

any help is appreciated, and yes, if you're wondering, this is a school project, i was working on this for the last 6 hours but i don't know how to fix those errors. Thanks!

Aucun commentaire:

Enregistrer un commentaire