-
面向对象编程思想前戏
-
面向过程编程与面向对象编程
-
类与对象的概念
-
代码编写类
-
代码产生对象
-
类与对象的具体操作
面向对象编程思想前戏

# 人狗大战小游戏 # 1.描述人和狗 '''描述人和狗的方式1:使用字典一个个描述''' # dog1 = { # 'name': '小黑', # 'type': '田园犬', # 'attack_val': 30, # 'life_val': 200 # } # dog2 = { # 'name': '小白', # 'type': '恶霸犬', # 'attack_val': 180, # 'life_val': 500 # } # person1 = { # 'name': '小龙', # 'type': '猛男', # 'attack_val': 10, # 'life_val': 1000 # } '''方式2:封装成函数 减少代码冗余''' # 定义专门用来描述人和狗的函数(最好单独编写) # def get_person(name, gender, age, t_type, attack_val, life_val): # data_dict = { # 'name': name, # 'gender': gender, # 'age': age, # 't_type': t_type, # 'attack_val': attack_val, # 'life_val': life_val # } # return data_dict # def get_dog(name, t_type, attack_val, life_val): # data_dict = { # 'name': name, # 't_type': t_type, # 'attack_val': attack_val, # 'life_val': life_val # } # return data_dict # p1 = get_person('jason', 'male', 18, '猛男', 800, 1000) # p2 = get_person('kevin', 'female', 28, '淑女', 5, 100) # dog1 = get_dog('小黑', '松狮犬', 300, 500) # dog2 = get_dog('小白', '泰迪犬', 50, 200) # def dog_attack(dog_obj, person_obj): # """ # :param dog_obj: 接收一条狗 # :param person_obj: 接收一个人 # """ # # 使用最简答的掉血逻辑 血量减去对方攻击力 # print('当前人的血量是:%s' % person_obj.get('life_val')) # person_obj['life_val'] -= dog_obj.get('attack_val') # print("""狗:%s 咬了人:%s 一口 人掉血:%s 剩余血量:%s"""%(dog_obj.get('name'),person_obj.get('name'),dog_obj.get('attack_val'),person_obj['life_val'])) # def person_attack(person_obj, dog_obj): # """ # :param person_obj: 接收一个人 # :param dog_obj: 接收一条狗 # """ # print('当前狗的血量是:%s'%dog_obj.get('life_val')) # dog_obj['life_val'] -= person_obj.get('attack_val') # print("""人:%s 锤了狗:%s 一下 狗掉血:%s 剩余血量:%s"""%(person_obj.get('name'),dog_obj.get('name'),person_obj.get('attack_val'),dog_obj['life_val'])) # 狗咬人 # dog_attack(dog2,p1) # print(p1) # 人锤狗 # person_attack(p2, dog1) # print(dog1) '''人调用了狗的攻击动作''' # dog_attack(p1, dog1) '''狗调用了人的攻击工作''' # person_attack(dog2,p2) """如何做到只有人可以调用人的攻击动作 狗调用狗的攻击动作""" # 其实就是想让人的数据跟人的功能绑定 狗的数据跟狗的功能绑定 def get_person(name, gender, age, t_type, attack_val, life_val): # 将人的攻击动作放在产生人的函数内 def person_attack(person_obj, dog_obj): """ :param person_obj: 接收一个人 :param dog_obj: 接收一条狗 """ print('当前狗的血量是:%s' % dog_obj.get('life_val')) dog_obj['life_val'] -= person_obj.get('attack_val') print("""人:%s 锤了狗:%s 一下 狗掉血:%s 剩余血量:%s""" % ( person_obj.get('name'), dog_obj.get('name'), person_obj.get('attack_val'), dog_obj['life_val'])) data_dict = { 'name': name, 'gender': gender, 'age': age, 't_type': t_type, 'attack_val': attack_val, 'life_val': life_val, 'person_attack':person_attack } return data_dict def get_dog(name, t_type, attack_val, life_val): def dog_attack(dog_obj, person_obj): """ :param dog_obj: 接收一条狗 :param person_obj: 接收一个人 """ # 使用最简答的掉血逻辑 血量减去对方攻击力 print('当前人的血量是:%s' % person_obj.get('life_val')) person_obj['life_val'] -= dog_obj.get('attack_val') print("""狗:%s 咬了人:%s 一口 人掉血:%s 剩余血量:%s""" % ( dog_obj.get('name'), person_obj.get('name'), dog_obj.get('attack_val'), person_obj['life_val'])) data_dict = { 'name': name, 't_type': t_type, 'attack_val': attack_val, 'life_val': life_val, 'dog_attack':dog_attack } return data_dict p1 = get_person('jason','male',18,'猛男',800, 1000) p2 = get_person('kevin','female',28,'淑女',10,100) dog1 = get_dog('小黑', '松狮犬', 300, 500) dog2 = get_dog('小白', '泰迪犬', 50, 200) p1['person_attack'](p1,dog1) dog1['dog_attack'](dog1,p2)