М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Pyton
Игра имитирует бой между двумя игроками. Один управляется человеком, второй компьютером.
У каждого игрока есть выбор оружия: меч и копье, которое нужно выбрать перед боем. Человек вводит свой выбор
с клавиатуры, компьютер выбирает случайно.
У каждого игрока изначально есть 50 НР.
Копье наносит урон от с вероятностью 70%, урон может быть от 10 до 20.
Меч наносит урон от с вероятностью 50%, урон может быть от 15 до 25.

Игра продолжается до тех пор, пока у одного из игроков не закончится НР.

👇
Ответ:
vikonil
vikonil
23.11.2022

Корявенько конечно, но вроде работает)

import random

import time  

#Костыль

CHANCE70 = [1,1,1,1,1,1,1,0,0,0]

CHANCE50 = [1, 0]

class Weapon(object):

   def __init__(self, hit_chance = [], dmg_range = (0, 0), wtype = None):

       self.hit_chance = hit_chance

       self.dmg = dmg_range

       self.wtype = wtype

   def __str__(self):

       return self.wtype

   def attack(self, trg):

       is_hit = random.choice(self.hit_chance)

       if is_hit:

           dmg = random.choice(range(self.dmg[0], self.dmg[1]))

           trg.hp -= dmg

           return (dmg)

       else:

           trg.msg('Miss!')

           return 0

class Player(object):

   def __init__(self, health = 50, weapon = None, name = 'AI'):

       self.hp = health

       self.wp = weapon  

       self.name = name

   def msg(self, msg):

       print(f'<{self.name}>: ' + msg)

def wname_to_hc(wname):

   if wname == 'sword':  

       return CHANCE50

   return CHANCE70

def wname_to_dmg_rng(wname):

   if wname == 'sword':

       return (15, 25)

   return (10, 20)

def main():

   player_weapon = input('Choose your weapon (spear, sword):\n').lower()

   assert player_weapon in ['spear', 'sword']

   player = Player(weapon=Weapon( hit_chance=wname_to_hc(player_weapon ), dmg_range= wname_to_dmg_rng(player_weapon), wtype=player_weapon), name='You')

   bot_weapon = random.choice(['spear','sword'])

   bot = Player(weapon= Weapon( hit_chance=wname_to_hc(bot_weapon), dmg_range= wname_to_dmg_rng(bot_weapon), wtype=bot_weapon ) )

   print(f'Your enemy choosen {str(bot.wp)}!')

   vs = [player, bot]

   choose = [0, 1]

   time.sleep(2)

   while True:

       hit = vs[choose[0]].wp.attack(vs[choose[1]])

       if hit:  

           print(f'Player <{vs[choose[0]].name}> dealed <{vs[choose[1]].name}> {hit} dmg')

           print(f'Player <{vs[choose[0]].name}> has {vs[choose[0]].hp} left')

           print(f'Player <{vs[choose[1]].name}> has {vs[choose[1]].hp} left')

       

       if vs[choose[0]].hp <= 0:

           print(vs[choose[1]].name + ' wins!')

           break

       elif vs[choose[1]].hp <= 0:

           print(vs[choose[0]].name + ' Wins!')

           break

       time.sleep(1)

       choose.reverse()

if __name__ == '__main__':

   main()

Объяснение:

4,5(73 оценок)
Открыть все ответы
Ответ:
dashasapleva6
dashasapleva6
23.11.2022

Сделал программу. Считающую простые числа. По заданию мне нужно сделать их с цикла while без for. можно использовать if else. Решил сначала сделать if else а потом код вставить уже в while. Выкладываю вам код. Скажите Правильно я код написал. если нет. Укажите на ошибки. 

1 2 3 4 5 6 7 8 9 10 11 12 #include <iostream> using namespace std; void main () { setlocale (0, ""); int n, m; cout << "введите число: "; cin >> n; if (n % 2 == 0 && n / 2 != 0 ) cout << "  не Простое Число \n"; else     cout << "  простое\n" << endl; }

4,5(67 оценок)
Ответ:
5Ник4
5Ник4
23.11.2022
PascalABC.NET
Версия 3.3. сборка 1583 (25.11.2017)

var 
 n:integer;
 a:array[1..100] of integer;
begin
 write('Введите размер массива (n<100): ');readln(n);
 var max:=0;
 var min:=101;
 for var i:=1 to n do
 begin
  a[i]:=random(0,100);
  write(a[i],' ');
  if i mod 2=0 then
   if a[i]>max then max:=a[i]
   else
    if a[i]<min then min:=a[i];
 end;
 writeln;
 writeln('Максимальный - ',max);
 writeln('Минимальный - ',min);
 readln;
end.

Пример:

Введите размер массива (n<100): 10
15 32 90 97 35 62 52 37 5 63 
Максимальный - 97
Минимальный - 37
4,4(55 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ