
Очень нужна помощь. Нужно дополнить код(На Python). ЗАДАНИЕ: Устройте несколько дуэлей подряд и
выведите результаты (Их можно хранить в словаре). В награду за победу персонажу можно увеличивать очки здоровья. ИЗНАЧАЛЬНЫЙ КОД: import time, random q=random.randint(1,10) w=random.randint(1,10) player1 = {'Имя' : "Боб", 'Здоровье' : 100, 'Атака' : q} player2 = {'Имя' : "Мери", 'Здоровье' : 100, 'Атака' : w} while player1['Здоровье'] > 0 and player2['Здоровье'] > 0: player2['Здоровье'] -= player1['Атака'] print(player1['Имя'], ' атакует ', player2['Имя']) time.sleep(1) player1['Здоровье'] -= player2['Атака'] print(player2['Имя'], ' атакует ', player1['Имя']) time.sleep(1) print('Боб :', player1['Здоровье'], 'Мери :', player2['Здоровье'])

Ответы на вопрос

Ответ:
Логика приложения сохранена. Теперь игрок представлен классом, а не словарём (потому что ооп труъ). Атакующая сторона выбирается случайно.
import random
import time
import typing
from typing import NewType
player = NewType('Player', object)
class Player:
def __init__(self, name, hp, dmg):
self._name = name
self._health = hp
self._damage = dmg
@property
def NAME(self):
return self._name
@property
def HP(self):
return self._health
@HP.setter
def HP(self, NewValue):
self._health = NewValue
@property
def DMG(self):
return self._damage
def Attack(self, trg: player):
trg.HP -= self._damage
def main():
enemies = [Player('Bob', 100, 25), Player('Tom', 100, 23)]
choices = [0, 1]
while (enemies[0].HP > 0 and enemies[1].HP > 0):
CurrSelected = random.choice(choices)
OtherSelected = abs(CurrSelected-1)
Slc = enemies[CurrSelected]
Other = enemies[OtherSelected]
print(f'Player {Slc.NAME} (HP: {Slc.HP}) attack {Other.NAME} (HP: {Other.HP} -> {Other.HP - Slc.DMG})')
enemies[CurrSelected].Attack(enemies[abs(CurrSelected-1)])
time.sleep(1)
if __name__ == '__main__':
main()
Объяснение:



Конечно, я помогу вам дополнить код для проведения нескольких дуэлей подряд и обновления данных персонажей. Вот ваш код с добавленными изменениями:
pythonimport time, random
def duel(player1, player2):
q = random.randint(1, 10)
w = random.randint(1, 10)
while player1['Здоровье'] > 0 and player2['Здоровье'] > 0:
player2['Здоровье'] -= player1['Атака']
print(player1['Имя'], ' атакует ', player2['Имя'])
time.sleep(1)
player1['Здоровье'] -= player2['Атака']
print(player2['Имя'], ' атакует ', player1['Имя'])
time.sleep(1)
if player1['Здоровье'] <= 0:
print(player1['Имя'], ' проиграл дуэль!')
player2['Здоровье'] += 10 # Увеличиваем здоровье победителя
if player2['Здоровье'] <= 0:
print(player2['Имя'], ' проиграл дуэль!')
player1['Здоровье'] += 10 # Увеличиваем здоровье победителя
player1 = {'Имя': "Боб", 'Здоровье': 100, 'Атака': 0}
player2 = {'Имя': "Мери", 'Здоровье': 100, 'Атака': 0}
duel_count = 3 # Количество дуэлей
for _ in range(duel_count):
# Перезаписываем начальные здоровье и атаку перед каждой дуэлью
player1['Здоровье'] = 100
player2['Здоровье'] = 100
duel(player1, player2)
print('Итоговые статистики:')
print(player1['Имя'], ' : Здоровье -', player1['Здоровье'], 'Атака -', player1['Атака'])
print(player2['Имя'], ' : Здоровье -', player2['Здоровье'], 'Атака -', player2['Атака'])
Этот код создает функцию duel
, которая проводит один дуэль между двумя персонажами. После каждой дуэли, победитель получает награду в виде увеличения очков здоровья. Затем код проводит указанное количество дуэлей (в данном случае, 3 раза), обновляя данные персонажей перед каждой дуэлью и выводя итоговые статистики.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili