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)