1.什么是对象?什么是类?
对象是特征与技能的结合体,类是一系列对象相同的特征和技能的结合体
2.绑定方法的有什么特点
类内部的函数主要是给对象用的
由类来调用类内部的函数,该函数只是一个普通的函数,普通的函数需要接受几个参数就得传几个参数
由对象来调用称之为对象的绑定方法,不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中
对象的绑定方法,是由对象来调用的,特殊之处就是把对象当作第一个参数传入该方法中
3.基于面向对象设计一个对战游戏
# 仿制英雄联盟角色
import time
class Riven:
camp = 'Noxus'
def __init__(self,
heroname,
aggressivity=54,
life_value=414,
money=2000,
armor=12,
grade=1):
self.heroname = heroname
self.aggressivity = aggressivity
self.life_value = life_value
self.money = money
self.armor = armor
self.grade = grade
def attack(self, enemy):
if self.life_value < 0:
return True, f'{self.heroname}死亡,{enemy.heroname}获胜'
if self.life_value:
damage_value = self.aggressivity - enemy.armor
enemy.life_value -= damage_value
print(f'{self.heroname}开始攻击{enemy.heroname}
造成{damage_value}伤害
{enemy.heroname}剩余血量{enemy.life_value}
')
return False, None
class Garen:
camp = 'Demacia'
def __init__(self,
heroname,
aggressivity=56,
life_value=455,
money=300,
armor=19,
grade=1):
self.heroname = heroname
self.aggressivity = aggressivity
self.life_value = life_value
self.money = money
self.armor = armor
self.grade = grade
def attack(self, enemy):
if self.life_value < 0:
return True, f'{self.heroname}死亡,{enemy.heroname}获胜'
if self.life_value:
damage_value = self.aggressivity - enemy.armor
enemy.life_value -= damage_value
print(f'{self.heroname}开始攻击{enemy.heroname}
造成{damage_value}伤害
{enemy.heroname}剩余血量{enemy.life_value}
')
return False, None
class BlackCleaver:
def __init__(self, price=475, aggrev=9, life_value=100):
self.price = price
self.aggrev = aggrev
self.life_value = life_value
def update(self, obj):
obj.money -= self.price
obj.aggressivity += self.aggrev
obj.life_value += self.life_value
print(f'{obj.heroname}装备火焰武器
{obj.heroname}获得攻击力加成{self.aggrev}点
{obj.heroname}获得生命值加成{self.life_value}点')
def fire(self, emeny):
emeny.life_value -= 100
print(f'{emeny.heroname}受到火焰伤害100')
hero1 = Riven('锐雯')
hero2 = Garen('德玛')
wepon = BlackCleaver()
count = 1
while True:
print(f'回合{count}开始:')
flag, msg = hero2.attack(hero1)
if count ==4:
if hero1.money>wepon.price:
hero1.wepon = wepon
wepon.update(hero1)
hero1.wepon.fire(hero2)
if flag == True:
print(msg)
break
flag, msg = hero1.attack(hero2)
if flag == True:
print(msg)
break
count += 1
time.sleep(1)
输出结果:
回合1开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量370
锐雯开始攻击德玛
造成35伤害
德玛剩余血量420
回合2开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量326
锐雯开始攻击德玛
造成35伤害
德玛剩余血量385
回合3开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量282
锐雯开始攻击德玛
造成35伤害
德玛剩余血量350
回合4开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量238
锐雯装备火焰武器
锐雯获得攻击力加成9点
锐雯获得生命值加成100点
德玛受到火焰伤害100
锐雯开始攻击德玛
造成44伤害
德玛剩余血量206
回合5开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量294
锐雯开始攻击德玛
造成44伤害
德玛剩余血量162
回合6开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量250
锐雯开始攻击德玛
造成44伤害
德玛剩余血量118
回合7开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量206
锐雯开始攻击德玛
造成44伤害
德玛剩余血量74
回合8开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量162
锐雯开始攻击德玛
造成44伤害
德玛剩余血量30
回合9开始:
德玛开始攻击锐雯
造成44伤害
锐雯剩余血量118
锐雯开始攻击德玛
造成44伤害
德玛剩余血量-14
回合10开始:
德玛死亡,锐雯获胜