@eg0rius31
Начинающий в python

При вызове не работает функция. Как исправить?

В начале нужно ввести 3 для похода в лес тогда вызывается функция forest(), но после того как я сделал функцию fight(), forest() перестала функционировать

'''Маг'''
from random import randint

#Дни
days = 1
#Деньги
coins = 0
#Цена плащей
price_mantle = [100, 200, 300]
#Цена посохов
price_stick = [200, 400, 900]
#Имя характеристик
spec_name = ['Уровень', 'HP', 'Урон', 'Защита']
#Значение характеристик
spec = [1, 30, 5, 0]
#Враги. Гриб:)
enemy = ['Крыса','Живой камень', 'Гриб']
#Имя характеристик врагов
enemy_spec_name = ['HP', 'Урон', 'Защита']
#Характеристики врагов
enemy_rat = [10, 3, 0]
#Атака
fight_sp = ['Атака(' + str(spec[2]) + ' урона)']


def d_spec():
	for i in range(len(spec_name)):
		print(str(spec_name[i]) + ':', spec[i])

def shop():
	otv = int(input('1.Плащи(Защита)\n2.Посохи(Атака)'))
	print()
	if otv == 1:
		for i in range(3):
			price_change = randint(-5, 5)
			price_mantle[i] += price_change
		print('1.№1(2% Защита) -', str(price_mantle[0]) + '€\n2.№2(5% Защита) -', str(price_mantle[1]) + '€\n3.№3(7% Защита) -', str(price_mantle[2]) + '€')
		otv = int(input())
	
	elif otv == 2:
		for i in range(3):
			price_change = randint(-10, 10)
			price_stick[i] += price_change
		print('1.№1(+15 урон) -', str(price_stick[0]) + '€\n2.№2(+30 урон) -', str(price_stick[1]) + '€\n3.№3(+50 урон) -', str(price_stick[2]) + '€')
		otv = int(input())

def inv():
	print(123456789)

'''
Крыса(лес) - 1
Живой камень(лес) - 2
Гриб(лес) - 3
'''
def forest():
	enemy_ran = randint(1,1)
	#Крыса
	if enemy_ran == 1:
		while enemy_rat[0] == 0:
			print(enemy[0])
			for i in range(len(enemy_spec_name)):
				print(str(enemy_spec_name[i]) + ':', enemy_rat[i])
			fight()

def fight():
	otv = int(input(fight_sp[0]))
	#Если действие "атака"
	if otv == 1:
		#Если бой с крысой
		if enemy_ran == 1:
			#Переменная атака = атака персонажа - защита врага
			attack = spec[2] - enemy_rat[2]
			#Если атака больше 0 то хп врага уменьшаются
			if attack > 0:
				enemy_rat[0] -= attack
			##Если атака меньше 0 то атака не проходит
			else:
				print('Атака не прошла защиту противника')
		

otv = int(input('1.Начать\n2.Выход\n'))
if otv == 2:
	exit()

while True:
	print('-----------------------')
	print('День:', days)
	otv = int(input('1.Инвентарь\n2.Характеристики\n3.Сходить в лес\n4.Магазин'))
	
	print()
	
	if otv == 1:
		inv()
	elif otv == 2:
		d_spec()
	elif otv == 3:
		forest()
	elif otv == 4:
		shop()
	
	days += 1
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Причина - цикл while в функции forest никогда не выполняется. Почему - подумайте. Это просто.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы