Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 28.05.2020
Сообщений: 1

Нужна перезапись кода не меняя при этом логику

28.05.2020, 14:15. Показов 435. Ответов 0

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
'''
1. Создавать воинов из json (также как оружие)
2. Добавить показатель брони воина (полученный урон = урон оружия - броня)
3. Добавить шанс попадания оружием
4. Для класса Weapon добавить метод, вычисляющий средний урон за удар
5. Добавить свои виды оружия, сбаллансировать их по урону (ср. урон 20 +- 10)
6. Возможность "битвы" 2х2, 4х4 ... NxN. Нужно продумать логику нанесения ударов.
7. На пов. оценку: визуализировать с помощью pygame либо другого игр. движка
'''
import random,os
from names import createWarriorTeam,createWeapons,Warrior,Weapons
 
warriors = createWarriorTeam(os.path.join(os.getcwd(),'WARRIORS.json'))
weapons = createWeapons(os.path.join(os.getcwd(),'WEAPONS.json'))
 
 
class Battlefield():
    def __init__(self,warriors,weapons):
        self.warriors = warriors
        self.weapons = weapons
 
    def _getweapons(self):
        self.weapons = [Weapons(x,self.weapons[x]) for x in self.weapons]
 
    def _getcomands(self):
        self.teams = {}
        self.teamscount = {}
        for warr in self.warriors:
            warr = warr.upper()
            self.team = [Warrior(x,warr,self.weapons) for x in self.warriors[warr]]
            self.teams[warr] = self.team
            self.teamscount[warr] = len(self.team)
        print('-' * 100)
        for tc in self.teamscount:
            print('{0}:{1}'.format(tc,self.teamscount[tc]),end=' ')
        print()
        print('-'*100)
 
 
    def _fight(self):
        while True:
            liveTeams = 0
            lteams = list(self.teams)
            random.shuffle(lteams)
            for lt in lteams:
                warrior = random.choice(self.teams[lt])
                otherTeams = [x for x in lteams if x!=lt]
                enemyTeam = random.choice(otherTeams)
                enemywarrior = random.choice(self.teams[enemyTeam])
                if enemywarrior.is_alive:
                    warrior.hit(enemywarrior)
            for ltlive in lteams:
                if (([False]*self.teamscount[ltlive])==[x.is_alive for x in self.teams[ltlive]]):
                    liveTeams+=1
            if liveTeams==len(self.teams)-1:
                break
        self._end()
        self._averageDamage()
 
    def _end(self):
        for x in self.teams:
            if  not all([not x.is_alive for x in self.teams[x]]):
                winner = x
                break
        print('Победила команда {0}!'.format(winner))
        print('-'*100)
        for t in self.teams:
            for w in self.teams[t]:
                print('Имя:{0} Команда:{1} Здоровье:{2} Броня:{3} Оружие:{4}({5})'.format(w.name, w.team, w.health,
                           w.armor, w.weapon.name,w.weapon.damage))
 
    def _averageDamage(self):
        print('-' * 100)
        warriors =[]
        for t in self.teams:
            warriors+=self.teams[t]
        for x in warriors:
            print('Оружие:{0} Средний урон:{1}({2})'.format(x.weapon.name,
                                    x.weapon.getAverageDamage(),x.weapon.damage))
 
    def start(self):
        self._getweapons()
        self._getcomands()
        self._fight()
 
a = Battlefield(warriors,weapons)
a.start()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2020, 14:15
Ответы с готовыми решениями:

Разбить число не меняя при этом общую сумму
Добрый день уважаемые! очень нужна ваша помощь в формуле по которой можно разбить число не меняя при этом общую сумму !!! Есть цена за...

Как дописывать новые значения в конец ini файла, меняя при этом имя ключа?
Допустим есть ini файл, где есть строки: 1=asdfg 2=asdfgyuiio как записывать новые значения ключей, добавляя к уже...

Что нужно вписать каб объект д пораболой из левого верхнего угла в правый и обратно.При этом меняя цвет с зелен на голуб
namespace WindowsFormsApp1 { public partial class Form1 : Form { private void OnPaint() { ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2020, 14:15
Помогаю со студенческими работами здесь

Реализуйте классы Magician и Daemon с get/set stoned. При этом get/set attack должен учитывать логику
Здравствуйте! Подскажите, пожалуйста, как можно скорректировать решение Есть задача: Мое решение: Math.js /*...

У меня записывает только одно слово при этом куске кода
прошу помогите с етим куском кода только пишется одно слово в txt for (int i = 0; i < 2; i++) { SortStudent = textBox2.Text;...

Не создается .obj, при этом в .lst ошибки нет, но часть кода выпадает
.model small .stack 100 .data s db ? mes1 db "Tsifra$" mes2 db "Zaglavnaia bukva$" mes3 db "Strochnaia bukva$" ...

Как записать цикл do while и while с данного кода, что бы при этом значения не менялись
namespace ConsoleApp3 { class Program { static void Main() { double a, b, c,...

Не создается .obj, при этом в .lst ошибки нет, но часть кода выпадает
.model small .stack 100 .data s db ? mes1 db "Tsifra$" mes2 db "Zaglavnaia bukva$" mes3 db "Strochnaia bukva$" ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru