python学习之路

班级管理相关类的实现,射击游戏类的实现
 

class Student:
	def __init__(self,name,age,ID):
		self.name = name
		self.age = age
		self.ID = ID

	def eat(self):
		return "吃饭"
	def sleep(self):
		return "睡觉"
	def study(self):
		return "学习"
	def printInfo(self):
		print("学生姓名:{}, 年龄:{}, 学号:{}".format(self.name, self.age, self.ID))
		print(f"每天需要完成的任务是:{self.eat(), self.sleep(), self.study()}")

class Leader(Student):
	def __init__(self,name,age,ID,duty):
		super().__init__(name,age,ID)
		self.duty = duty
	def manage(self):
		return "管理"
	def printInfo(self):
		print("组长姓名:{}, 年龄:{}, 学号:{}".format(self.name, self.age, self.ID))
		print(f"每天需要完成的任务是:{self.eat(), self.sleep(), self.study(), self.manage()}")

class Teacher(Leader):
	def __init__(self,name,age,duty):
		super(Leader,self).__init__(name,age,duty)
		self.duty = duty

	def teaching(self):
		return "教学"
	def manage(self):
		return "管理"
	def printInfo(self):
		print("教师姓名:{}, 年龄:{}, 职务:{}".format(self.name, self.age, self.duty))
		print(f"每天需要完成的任务是:{self.eat(), self.sleep(), self.teaching(), self.manage()}")


#2. 射击游戏类的实现


class Role:    #创建Role类,角色初始血量为100
	def __init__(self,name):
		self.name = name
		self.hp = 100
		self.gun = None

	def install_bullets(self,clip,bullets):		#安装子弹
		clip.save_bullets(bullets)				

	def install_clip(self,gun,clip):  	#安装弹夹
		gun.clip_loads_gun(clip)

	def get_gun(self,gun):       #持枪
		self.gun = gun

	def fire(self,enemy):     #开枪
		self.gun.fire(enemy)

	def lose_blood(self,blood):		#掉血
		self.hp -= blood

	def __str__(self):
		if self.gun:
			return "{}的血量{},拿着{}".format(self.name,self.hp,self.gun)
		else:
			if self.hp>0:
				return "{}的血量{},没有武器!".format(self.name,self.hp)
			else:
				return f"{self.name}已经挂了!兄dei!" 


class Bullets:			#创建子弹类
	def __init__(self,lethality):			#杀伤力:击中一发,血量减5
		self.lethality = lethality

	def hurt(self,enemy):			#杀伤敌人,使敌人掉血
		enemy.lose_blood(self.lethality)

class Clip:				#创建弹夹类
	def __init__(self,capacity):
		self.capacity = capacity				#弹夹容量
		self.surplus_bullets = []

	def save_bullets(self,bullets):				#安装子弹
		if len(self.surplus_bullets) < self.capacity:
			self.surplus_bullets.append(bullets)

	def __str__(self):
		return f"弹夹中的子弹数量为:{len(self.surplus_bullets)}/{self.capacity}"

	def lunch_bullets(self):		#弹出子弹
		if len(self.surplus_bullets) > 0:
			bullts = self.surplus_bullets[-1]
			self.surplus_bullets.pop()
			return bullts
		else:
			return None


class Gun:				#创建枪类
	def __init__(self, name):		
		self.clip = None		#默认没有弹夹
		self.name = name

	def clip_loads_gun(self,clip):		#安装弹夹
		if not self.clip:
			self.clip = clip

	def __str__(self):
		if self.clip:
			return f"武器{self.name},{self.clip}!"
		else:
			return "枪还没有装弹夹!请装填弹夹!"

	def fire(self,enemy):      #射出子弹
		bullets = self.clip.lunch_bullets()
		if bullets:
			bullets.hurt(enemy)
		else:
			print("没有子弹!")

def main():						#创建一个测试函数
	soldier = Role("天蓬元帅")
	gun = Gun("AK47")
	clip = Clip(30)		#初始给30发子弹
	print(clip)
	enemy = Role("白骨精")		 # 创建一个敌人
	print(enemy)
	a = int(input("请输入要装填的子弹数量:"))
	i = 0
	while i < a:
		bullets = Bullets(5)    #击中一发血量掉5点
		soldier.install_bullets(clip,bullets)
		i += 1
	print(clip)		
	print(gun)
	soldier.install_clip(gun, clip)			    # 安装弹夹
	print("弹夹安装完毕!")
	print(gun)
	soldier.get_gun(gun)
	for j in range(a):
		soldier.fire(enemy)			    # 士兵攻击
		print("-----八戒开枪了哦!-----")
		print(soldier)
		print(enemy)


if __name__ =="__main__":
	#1.班级管理相关类的实现
	stu1 = Student("黄晓明","21","30641654")
	stu1.printInfo()
	leader1 = Leader("刘德华","22","9456456","学习委员")
	leader1.printInfo()
	teacher1 = Teacher("张学友","43","办公室主任")
	teacher1.printInfo()


	#2. 射击游戏类的实现
	print("*"*150)
	main()

运行结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值