Переменные не меняются, когда +1 + (Python 3.3)

В моем предыдущем посте я говорил, что моя переменная не изменится, когда я добавлю что-то к ней. Вот мой текущий код, и моя проблема будет ниже его.

    #creates random monsters with xp points, leveling up player, and adding upgrades

#imports
from clint.textui import colored, puts
import random

sticks = 2
stumps = 2
stone = 0
iron_in = 0
gold_in = 0
diamond = 0
platinum = 0
w_sword = 1
w_shield = 1
items = ('sticks:' + str(sticks) + ' stumps:' + str(stumps) + ' stone:' + str(stone) + ' iron ingot:' + str(iron_in) + ' gold ingot:' + str(gold_in) + ' diamond:' + str(diamond) + ' platinum:' + str(platinum) + ' Wooden sword(s):' + str(w_sword) +
' wooden shield(s):' + str(w_shield))  

def game():    

    #start of the game    
    def start_game():
        print('           Hello player! Welome to a text based game involving killing monsters, leveling up, crafting weapons, and upgrading weapons!!!')
        print(' To get started enter in (i)inventory (c)craft items (d)description of items (m)types of monsters or (f)fight monsters.')
        print('                  ENTER (help) FOR HOW THE GAME WORKS')
        print('                              ENTER(?) FOR TO PRINT THIS AGAIN')
        print(' WHILE YOU ARE IN A CATEGORY SUCH AS (i)inventory PRESS (?) CAN BE USED TO GO BACK AND GO TO ANOTHER CATEGORY')
    start_game()

    main_In = input()

    level = 0
    Pxp = 0
    gold = 5

    monster_lvl = random.randint(1,10)

    if main_In == ('c'):
        ws_sticks = 2
        ws_stumps = 1

        def craft():
            print('Would you like to craft an item??')
            print('( Red = uncraftable )')
            print('( Green = craftable )')
            print('( Type items in lowercase )')

            if sticks < ws_sticks:
                puts(colored.red('Wooden sword'))
            else:
                puts(colored.green('Wooden sword'))
            if stumps < ws_stumps:
                puts(colored.red('Wooden shield'))
            else:
                puts(colored.green('Wooden shield'))

        craft()
        C_item = input()

        def re_craft():
            print('press ENTER to go back to the start screen, or enter c to craft an(other) item.')
            cor_go = input()
            if cor_go == ('c'):
                craft()
                C_item = input()
            else:
                game()

        if C_item == ('no'):
            print('press ENTER to go back to the start screen')
            input()
            game()

        if C_item == ('wooden sword') and sticks >= ws_sticks:
            print('Wooden sword added to your inventory')
            re_craft()

        if C_item == ('wooden sword') and sticks < ws_sticks:
            print('You need ' + str(ws_sticks - sticks) + ' stick(s) to craft a wooden sword')
            re_craft()

        if C_item == ('wooden shield') and stumps >= ws_stumps:
            print('Wooden shield added to your inventory')
            re_craft()

        if C_item == ('wooden shield') and stumps < ws_stumps:
            print('You need' + str(ws_stump - stumps) + ' stumps to craft a wooden shield.')
            re_craft()
        while ('Wooden shield added to your inventory'):
            w_shield += 1
        while ('Wooden sword added to your inventory'):
            w_sword = +1

    if main_In == ('i'):
        puts(colored.yellow('Level: ' + str(level)))
        puts(colored.yellow('xp: '  + str(Pxp)))
        puts(colored.yellow('gold:' + str(gold)))
        puts(colored.yellow('Items: ' + str(items)))
        puts(colored.yellow('press ENTER to return to the start screen'))
        input()
        game()

    if main_In == ('?'):
        game()

game()

Теперь один из ответов на мой последний вопрос сказал, что моя переменная для w_sword а также w_shield должен начинаться с 1 и что мои переменные назначения должны быть вне функции: game()Таким образом, я делал, как сказал, и всякий раз, когда я "изготавливал" деревянный меч или деревянный щит, он показывался как 1 для него. Но я не осознавал, что независимо от того, что я создал (деревянный меч или деревянный щит), оба w_sword а также w_shield показался как 1, когда я вернулся к (я) инвентарь. Например, если бы я должен был напечатать wooden sword на входе известен как c_item и затем вернитесь к (I) инвентарь, оба w_sword а также w_shield будет отображаться как 1, хотя я только изготовил деревянный меч.

0 ответов

Другие вопросы по тегам