1,0×
00:00/54:38
Урок 8 модуля 3. ООП, классы. Программируем в Python текстовый квест, говоря о классах, методах и функциях. Сложный, но интересный урок
Урок 8 модуля 3. ООП, классы. Программируем в Python текстовый квест, говоря о классах, методах и функциях. Сложный, но интересный урок
Задание 1. «Квест: Рыцарь и Дракон»
1. Текст программы:
class Hero():
#конструктор класса
def __init__(self, name, health, armor, power, weapon):
self.name = name
self.health = health #число
self.armor = armor #строка
self.power = power #число
self.weapon = weapon #строка
#печать инфо о персонаже:
def print_info(self):
print('Поприветствуйте героя ->', self.name)
print('Уровень здоровья:', self.health)
print('Класс брони:', self.armor)
print('Сила удара:', self.power)
print('Оружие:', self.weapon, '\n')
#нанесение удара:
def strike(self, enemy):
print(
'-> УДАР! ' + self.name + ' атакует ' + enemy.name
+ ' с силой ' + str(self.power) + ', используя ' + self.weapon + '\n')
enemy.armor -= self.power
if enemy.armor < 0:
enemy.health += enemy.armor
enemy.armor = 0
print(
enemy.name + ' покачнулся(-ась).\nКласс брони упал до ' +
str(enemy.armor) + ', а уровень здоровья до ' + str(enemy.health) + '\n')
knight = Hero('Ричард', 50, 25, 20, 'меч')
rascal = Hero('Хелен', 20, 5, 5, 'лук')
knight.print_info()
rascal.print_info()
knight.strike(rascal)
Задание 2. «Квест: Рыцарь и Дракон»
1. Модуль Hero:
from random import randint
from time import sleep
class Hero():
#конструктор класса
def __init__(self, name, health, armor, power, weapon):
self.name = name
self.health = health #число
self.armor = armor #число
self.power = power #число
self.weapon = weapon #строка
#печать инфо о персонаже:
def print_info(self):
print('->' + self.name)
print('Уровень здоровья:', self.health)
print('Класс брони:', self.armor)
print('Сила удара:', self.power)
print('Оружие:', self.weapon, '\n')
#нанести удар по другому персонажу
def strike(self, enemy):
attack = randint(self.power-5, self.power+5)
print('-> УДАР! ' + self.name + ' атакует ' + enemy.name + ' с силой ' + str(attack) + ', используя ' + self.weapon + '\n')
enemy.armor -= attack
if enemy.armor < 0:
enemy.health += enemy.armor
enemy.armor = 0
print(enemy.name + ' покачнулся.\nКласс его брони упал до ' + str(enemy.armor) + ', а уровень здоровья до ' + str(enemy.health) + '\n')
#вступить в поединок
def fight(self, enemy):
while self.health and enemy.health > 0:
self.strike(enemy)
if enemy.health <= 0:
print(enemy.name, 'пал в этом нелегком бою!\n')
break
sleep(5)
enemy.strike(self)
if self.health <= 0:
print(self.name, 'пал в этом нелегком бою!\n')
break
sleep(5)
2. Текст программы:
from time import sleep
from hero import Hero
knight = Hero('Ричард', 50, 25, 20, 'меч')
dragon = Hero('Дракон', 100, 25, 10, 'пламя')
print('Средиземье в опасности! На помощь спешит доблестный рыцарь...')
knight.print_info()
sleep(5)
print(knight.name + ' идёт по лесу. Вдруг видит на пути мелкого воришку...')
sleep(5)
rascal = Hero('Питер', 20, 5, 5, 'нож')
rascal.print_info()
sleep(5)
if input('Сразиться? (да/нет) >>') == 'да':
print('\nДА НАЧНЁТСЯ БИТВА!\n')
sleep(5)
knight.fight(rascal)
sleep(5)
if knight.health > 0:
knight.health = 50
knight.power *= 2
knight.armor *= 2
print('\n' + knight.name + ' восстановил силы и стал опытнее. Теперь сила его удара: ' + str(knight.power) + ', а класс брони:' + str(knight.armor) + '\n')
sleep(5)
print('\nНаконец-то ' + knight.name + ' добирается до подземелья!')
dragon.print_info()
print('\nДА НАЧНЁТСЯ БИТВА!\n')
sleep(5)
knight.fight(dragon)
Задание 1. «Квест: Рыцарь и Дракон»
1. Текст программы:
class Hero():
#конструктор класса
def __init__(self, name, health, armor, power, weapon):
self.name = name
self.health = health #число
self.armor = armor #строка
self.power = power #число
self.weapon = weapon #строка
#печать инфо о персонаже:
def print_info(self):
print('Поприветствуйте героя ->', self.name)
print('Уровень здоровья:', self.health)
print('Класс брони:', self.armor)
print('Сила удара:', self.power)
print('Оружие:', self.weapon, '\n')
#нанесение удара:
def strike(self, enemy):
print(
'-> УДАР! ' + self.name + ' атакует ' + enemy.name
+ ' с силой ' + str(self.power) + ', используя ' + self.weapon + '\n')
enemy.armor -= self.power
if enemy.armor < 0:
enemy.health += enemy.armor
enemy.armor = 0
print(
enemy.name + ' покачнулся(-ась).\nКласс брони упал до ' +
str(enemy.armor) + ', а уровень здоровья до ' + str(enemy.health) + '\n')
knight = Hero('Ричард', 50, 25, 20, 'меч')
rascal = Hero('Хелен', 20, 5, 5, 'лук')
knight.print_info()
rascal.print_info()
knight.strike(rascal)
Задание 2. «Квест: Рыцарь и Дракон»
1. Модуль Hero:
from random import randint
from time import sleep
class Hero():
#конструктор класса
def __init__(self, name, health, armor, power, weapon):
self.name = name
self.health = health #число
self.armor = armor #число
self.power = power #число
self.weapon = weapon #строка
#печать инфо о персонаже:
def print_info(self):
print('->' + self.name)
print('Уровень здоровья:', self.health)
print('Класс брони:', self.armor)
print('Сила удара:', self.power)
print('Оружие:', self.weapon, '\n')
#нанести удар по другому персонажу
def strike(self, enemy):
attack = randint(self.power-5, self.power+5)
print('-> УДАР! ' + self.name + ' атакует ' + enemy.name + ' с силой ' + str(attack) + ', используя ' + self.weapon + '\n')
enemy.armor -= attack
if enemy.armor < 0:
enemy.health += enemy.armor
enemy.armor = 0
print(enemy.name + ' покачнулся.\nКласс его брони упал до ' + str(enemy.armor) + ', а уровень здоровья до ' + str(enemy.health) + '\n')
#вступить в поединок
def fight(self, enemy):
while self.health and enemy.health > 0:
self.strike(enemy)
if enemy.health <= 0:
print(enemy.name, 'пал в этом нелегком бою!\n')
break
sleep(5)
enemy.strike(self)
if self.health <= 0:
print(self.name, 'пал в этом нелегком бою!\n')
break
sleep(5)
2. Текст программы:
from time import sleep
from hero import Hero
knight = Hero('Ричард', 50, 25, 20, 'меч')
dragon = Hero('Дракон', 100, 25, 10, 'пламя')
print('Средиземье в опасности! На помощь спешит доблестный рыцарь...')
knight.print_info()
sleep(5)
print(knight.name + ' идёт по лесу. Вдруг видит на пути мелкого воришку...')
sleep(5)
rascal = Hero('Питер', 20, 5, 5, 'нож')
rascal.print_info()
sleep(5)
if input('Сразиться? (да/нет) >>') == 'да':
print('\nДА НАЧНЁТСЯ БИТВА!\n')
sleep(5)
knight.fight(rascal)
sleep(5)
if knight.health > 0:
knight.health = 50
knight.power *= 2
knight.armor *= 2
print('\n' + knight.name + ' восстановил силы и стал опытнее. Теперь сила его удара: ' + str(knight.power) + ', а класс брони:' + str(knight.armor) + '\n')
sleep(5)
print('\nНаконец-то ' + knight.name + ' добирается до подземелья!')
dragon.print_info()
print('\nДА НАЧНЁТСЯ БИТВА!\n')
sleep(5)
knight.fight(dragon)
…
Код Будущего. Разжевывание и помощь
Подборка ·
Информатика в школе и дома: ОГЭ, ЕГЭ и ДэРэ
· 23 из 40Далее: Урок 9 курса "Алгоритмика". Продолжаем говорить о классах и ООП в целом, переходим к концепции Наследования. Говорим об измерении информации
Код Будущего. Разжевывание и помощь · 23 из 40