面向对象编程作业01

  1 """
  2 # day18天作业及默写
  3 # 1,完成下列功能:
  4 #   1.1创建一个人类Person,再类中创建3个静态变量(静态字段)
  5 #     animal = '高级动物'
  6 #     soul = '有灵魂'
  7 #     language = '语言'
  8 #   1.2在类中定义三个方法,吃饭,睡觉,工作.
  9 #   1.3在此类中的__init__方法中,给对象封装5个属性:国家,姓名,性别,年龄,  身高.
 10 #   1.4实例化四个人类对象:
 11 #     第一个人类对象p1属性为:中国,alex,未知,42,175.
 12 #     第二个人类对象p2属性为:美国,武大,男,35,160.
 13 #     第三个人类对象p3属性为:你自己定义.
 14 #     第四个人类对象p4属性为:p1的国籍,p2的名字,p3的性别,p2的年龄,p3  的身高.
 15 #   1.5 通过p1对象执行吃饭方法,方法里面打印:alex在吃饭.
 16 #   1.6 通过p2对象执行吃饭方法,方法里面打印:武大在吃饭.
 17 #   1.7 通过p3对象执行吃饭方法,方法里面打印:(p3对象自己的名字)在吃饭.
 18 #   1.8 通过p1对象找到Person的静态变量 animal
 19 #   1.9 通过p2对象找到Person的静态变量 soul
 20 #   2.0 通过p3对象找到Person的静态变量 language
 21 
 22 class Person:
 23     animal = '高级动物'
 24     soul = '有灵魂'
 25     language = '语言'
 26 
 27     def __init__(self, country, name, sex, age, high):
 28         self.country = country
 29         self.name = name
 30         self.sex = sex
 31         self.age = age
 32         self.high = high
 33 
 34     def eat(self):
 35         print(f"{self.name}在吃饭")
 36 
 37     def sleep(self):
 38         pass
 39 
 40     def work(self):
 41         pass
 42 
 43 
 44 p1 = Person('中国', 'alex', '未知', 42, 175)
 45 p2 = Person('美国', '武大', '男', 35, 160)
 46 p3 = Person('中国', '余鑫', '男', 23, 174)
 47 p4 = Person(p1.country, p2.name, p3.sex, p2.age, p3.high)
 48 p1.eat()
 49 p2.eat()
 50 p3.eat()
 51 print(p1.animal)
 52 print(p2.soul)
 53 print(p3.language)
 54 
 55 
 56 # 2,通过自己创建类,实例化对象
 57 #   在终端输出如下信息
 58 #   小明,10岁,男,上山去砍柴
 59 #   小明,10岁,男,开车去东北
 60 #   小明,10岁,男,最爱大保健
 61 #   老李,90岁,男,上山去砍柴
 62 #   老李,90岁,男,开车去东北
 63 #   老李,90岁,男,最爱大保健
 64 #   老张…
 65 class HappyDay:
 66 
 67     def __init__(self, name, age, sex):
 68         self.name = name
 69         self.age = age
 70         self.sex = sex
 71 
 72     def Chop_wood(self):
 73         print('%s %s %s 上山去砍柴' % (self.name, self.age, self.sex))
 74 
 75     def Drive(self):
 76         print(f'{self.name}{self.age}岁{self.name}开车去东北')
 77 
 78     def Great_health_care(self):
 79         print('%s 最爱大宝剑' % self.name)
 80 
 81 
 82 p1 = HappyDay('小明', 10, '男')
 83 p1.Drive()
 84 
 85 
 86 # 3,模拟英雄联盟写一个游戏人物的类(升级题).
 87 #   要求:
 88 #   (1)创建一个 Game_role的类.
 89 #   (2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.
 90 #   (3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:
 91 #       例: 实例化一个对象 盖伦,ad为10, hp为100
 92 #       实例化另个一个对象 剑豪 ad为20, hp为80
 93 #       盖伦通过attack方法攻击剑豪,此方法要完成 '谁攻击谁,谁掉了多少血,  还剩多少血'的提示功能.
 94 #
 95 # '''
 96 
 97 class GameRole:
 98     def __init__(self, name, ad, hp):
 99         self.name = name
100         self.ad = ad
101         self.hp = hp
102 
103     def attack(self, p):
104         p.hp = p.hp - self.ad
105         print(f"{self.name}攻击{p.name},{p.name}掉了{self.ad}血,  还剩{p.hp}血")
106         print()
107 
108 
109 obj1 = GameRole('盖伦', 10, 100)
110 obj2 = GameRole('剑豪', 20, 80)
111 obj1.attack(obj2)
112 """
113 
114 
115 # 1,暴力摩托程序(完成下列需求):
116 # 1.1
117 # 创建三个游戏人物,分别是:
118 # •    苍井井,女,18,攻击力ad为20,血量200
119 # •    东尼木木,男,20,攻击力ad为30,血量150
120 # •    波多多,女,19,攻击力ad为50,血量80
121 # 1.2
122 # 创建三个游戏武器,分别是:
123 # •    平底锅,ad为20
124 # •    斧子,ad为50
125 # •    双节棍,ad为65
126 #
127 # 1.3
128 # 创建三个游戏摩托车,分别是:
129 #
130 # •    小踏板,速度60迈
131 # •    雅马哈,速度80迈
132 # •    宝马,速度120迈。
133 
134 class Person:
135     def __init__(self, name, sex, age, ad, hp):
136         self.name = name
137         self.sex = sex
138         self.age = age
139         self.ad = ad
140         self.hp = hp
141 
142     def down_moto(self, moto):
143         self.moto = moto
144 
145     def fight1(self, p2):
146         p2.hp = p2.hp - self.ad
147         print(f"{self.name}赤手空拳打了{p2.name}{self.ad}滴血,{p2.name}还剩{p2.hp}血")
148 
149     def down_warpon(self, war):
150         self.war = war
151 
152     def fight3(self, p):
153         p.hp = p.hp - self.ad - self.war.ad
154         print(f"{self.name}骑着{self.moto.name}打了骑着{p.moto.name}的{p.name}一{self.war.name},{p.name}哭了,还剩{p.hp}血。")
155 
156 
157 
158 class Warpon:
159     def __init__(self, name, ad):
160         self.name = name
161         self.ad = ad
162 
163     def fight2(self, p1, p2):
164         p2.hp = p2.hp - p1.ad - self.ad
165         print(f"{p1.name}利用{self.name}打了{p2.name}一平底锅,{p2.name}还剩{p2.hp}血。")
166 
167 
168 
169 class Moto:
170     def __init__(self, name, speed):
171         self.name = name
172         self.speed = speed
173 
174     def dirve(self, p):
175         print(f"{p.name}骑着{self.name}开着{self.speed}的车行驶在赛道上")
176 
177 
178 p1 = Person('苍井井', '', 18, 20, 200)
179 p2 = Person('东尼木木', '', 20, 30, 150)
180 p3 = Person('波多多', '', 19, 50, 80)
181 w1 = Warpon('平底锅', 20)
182 w2 = Warpon('斧头', 50)
183 w3 = Warpon('双节棍', 65)
184 m1 = Moto('小踏板', '速度60迈')
185 m2 = Moto('雅马哈', '速度80迈')
186 m3 = Moto('宝马', '速度120迈')
187 
188 # 完成下列需求(利用武器打人掉的血量为武器的ad + 人的ad):
189 
190 # (1)苍井井骑着小踏板开着60迈的车行驶在赛道上。
191 p1.down_moto(m1)  # 给苍井井安装小踏板
192 p1.moto.dirve(p1)  #
193 # (2)东尼木木骑着宝马开着120迈的车行驶在赛道上。
194 p2.down_moto(m3)  # 给 东尼木木安装上宝马
195 p2.moto.dirve(p2)
196 # (3)波多多骑着雅马哈开着80迈的车行驶在赛道上。
197 p3.down_moto(m2)
198 p3.moto.dirve(p3)
199 # (4)苍井井赤手空拳打了波多多20滴血,波多多还剩xx血。
200 p1.fight1(p3)
201 # (5)东尼木木赤手空拳打了波多多30滴血,波多多还剩xx血。
202 p2.fight1(p3)
203 # (6)波多多利用平底锅打了苍井井一平底锅,苍井井还剩xx血。
204 p3.down_warpon(w1)  # 给波多多装载了平底锅
205 p3.war.fight2(p3, p1)
206 # (7)波多多利用斧子打了东尼木木一斧子,东尼木木还剩xx血。
207 p3.down_warpon(w2)  # 给波多多装载了斧子
208 p3.war.fight2(p3, p2)
209 # (8)苍井井骑着宝马打了骑着小踏板的东尼木木一双节棍,东尼木木哭了,还剩xx血。
210 p1.down_moto(m3)  # 给苍井井加载宝马
211 p2.down_moto(m1)  # 给东尼木木加载小踏板
212 p1.down_warpon(w3)  # 给苍井井加载双节棍
213 p1.fight3(p2)
214 # (9)波多多骑着小踏板打了骑着雅马哈的东尼木木一斧子,东尼木木哭了,还剩xx血。
215 p3.down_moto(m1)
216 p2.down_moto(m2)
217 p3.down_warpon(w2)
218 p3.fight3(p2)

 

posted @ 2021-11-05 20:09  余鑫2020  阅读(73)  评论(0)    收藏  举报