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

Построить логические схемы: f=a \/ b /\ a, f=а/\в\/ ¬(в\/а)

Показать ответ
Ответ:
slavik528
slavik528
27.08.2020 03:24

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

88

89

90

91

92

93

94

95

96

97

class Weapon:

   def __init__(self, name, damage, range):

       self.name = name

       self.damage = damage

       self.range = range

 

   def hit(self, actor, target):

       if not target.is_alive:

           print('Враг уже повержен')

           return

       if actor.pos_x + self.range < target.pos_x or \

               actor.pos_y + self.range < target.pos_y:

           print(f'Враг слишком далеко для оружия '

                 f'{self.name}')

           return

       target.hp -= self.damage

       print(f'Врагу нанесен урон оружием {self.name}'

             f'в размере {self.damage}')

 

   def print_Weapon(self):

       return self.name

 

 

class BaseCharacter:

   def __init__(self, pos_x, pos_y, hp):

       self.pos_x = pos_x

       self.pos_y = pos_y

       self.hp = hp

 

   def move(self, d_x, d_y):

       self.pos_x = self.pos_x + d_x

       self.pos_y = self.pos_y + d_y

 

   def is_alive(self):

       if self.hp <= 0:

           return False

       else:

           return True

 

   def get_damage(self, amount):

       self.hp = self.hp - amount

 

   def get_coords(self):

       return (self.pos_x, self.pos_y)

 

 

class BaseEnemy(BaseCharacter):

   def __init__(self, pos_x, pos_y, weapon, hp):

       super().__init__(pos_x, pos_y, hp)

       self.weapon = Weapon

 

   def hit(self, target):

       if not target == MainHero:

           print('Могу ударить только главного героя')

           return

       else:

           self.weapon.hit(self, target)

 

   def print_Enemy(self):

       return f'Враг на позиции{self.pos_x, self.pos_y} с \

               оружием {self.weapon}'

 

 

class MainHero(BaseCharacter):

   def __init__(self, pos_x, pos_y, name, hp):

       super().__init__(pos_x, pos_y, hp)

       self.name = name

       self.invent = []

       self.weapon = '12'

 

   def add_weapon(self, weapon):

       self.weapon = weapon

       self.invent.append(weapon)

       print(f'Подобрал {weapon}')

       if len(self.invent) == 1:

           MainHero.weapon = weapon

 

   def hit(self, target):

       if MainHero.weapon == 0: # AttributeError: type object 'MainHero' has no attribute 'weapon'

                                # я ведь прописал в инните self.weapon = weapon, что не так? Думаю дело в том что этот weapon в инните никак не связан классом Weapon, тогда как это реализовать?                  

           print('Я безоружен')

           return

       if target != BaseEnemy:

           print('Могу ударить только врага')

           return

 

       target.hp -= MainHero.weapon.hit

 

   def next_weapon(self):

       if len(self.invent) == 0:

           print('Я безоружен')

           return

 

       if len(self.invent) == 1:

           print('У меня только одно оружие')

           return

       # не понимаю как реализовать смену оружия,создал для этого invent, чтобы работать с индексами, но не знаю как.

0,0(0 оценок)
Ответ:
enterfight
enterfight
19.07.2020 17:42
uses
  System.Collections.Generic;
var
  a: List<integer> := new List<integer>(); //Объявляем и создаём динамический массив
  i: integer;
begin
  repeat
    readln(i);
    if (i = 0) then
      break
    else
      a.Add(i);
  until (False); //Прекращаем цикл, когда рак (break) в цикле свиснет (False можно заменить на "2 + 2 = 5"
  
  writeln(#13); //Вставляем 2 пустые строки
  
  foreach i in a do //Выводим исходный массив
    write(i, ' '); 
  
  writeln();
  
  foreach i in a do //Выводим конечные числа, нет задачи массив изменять
    write(abs(i), ' '); 
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота