• python学习日记第三天(实例)


    '''反恐精英cs(文字版)
    对象:
    玩家(战士)
    敌人
    枪:
    弹夹
    子弹
    对象关系:
    (1)战士和敌人都为人,默认血量100
    (2)射击时消耗弹夹子弹
    (3)每次击中敌人敌人掉五滴血
    类:
    1.战士和敌人类
    属性:姓名(name),血量(blood),枪(gud)
    方法:安装子弹,安装弹夹,拿枪,开枪
    2.子弹类
    属性:杀伤力
    方法:伤害敌人(让敌人掉血)
    3.弹夹类
    属性:容量,当前保存子弹
    方法:保存子弹(安装子弹),弹出子弹(开枪)
    4.枪类
    属性:弹夹(默认没有,需安装)
    方法:连接弹夹,射子弹
    '''
    #定义战士类
    class Person:
    def __init__(self,name):
    #姓名
    self.name=name
    self.blood=100
    #定义安装子弹的方法
    def install_bullet(self,clip,bullet):
    #弹夹放置子弹
    clip.save_bullets(bullet)
    #给枪安装弹夹
    def install_clip(self,gun,clip):
    gun.mounting_clip(clip)
    def take_gun(self,gun):
    self.gun=gun
    #开枪
    def fire(self,enemy):
    #射击敌人
    self.gun.shoot(enemy)
    def __str__(self):
    return self.name+"剩余血量为:"+str(self.blood)
    #掉血
    def lose_blood(self,damage):
    self.blood-=damage
    class Gun:
    def __init__(self):
    #默认没有弹夹
    self.clip=None
    def __str__(self):
    if self.clip:
    return "枪里有弹夹"
    else:
    return "枪里没有弹夹"
    #链接弹夹
    def mounting_clip(self,clip):
    if not self.clip:
    self.clip=clip
    #射击
    def shoot(self,enemy):
    #弹夹出子弹
    bullet=self.clip.launch_bullet()
    if bullet:
    bullet.hurt(enemy)
    else:
    print("没有子弹了,放的空枪...")

    class Clip:
    def __init__(self,capacity):
    #最大容量
    self.capacity=capacity
    self.current_list=[]
    #安装子弹
    def save_bullets(self,bullet):
    #当子弹小于最大容量时
    if len(self.current_list)<self.capacity:
    self.current_list.append(bullet)
    def __str__(self):
    return "弹夹当前的子弹数量为:"+str(len(self.current_list))+"/"+str(self.capacity)
    def launch_bullet(self):
    if len(self.current_list)>0:
    bullet=self.current_list[-1]
    self.current_list.pop()
    return bullet
    else:
    return None
    class Bullet:
    def __init__(self,damage):
    #伤害
    self.damage=damage
    #伤害敌人
    def hurt(self,enemy):
    #让敌人掉血
    enemy.lose_blood(self.damage)
    soldier=Person("幻幽")
    #创建一个弹夹
    clip=Clip(20)
    print(clip)
    #添加5颗子弹
    i=0
    while i<5:
    #创建一个子弹
    bullet=Bullet(5)
    #战士安装子弹到弹夹
    soldier.install_bullet(clip,bullet)
    i+=1
    #输出当前弹夹数量
    print(clip)
    #创建一个枪
    gun=Gun()
    print(gun)
    soldier.install_clip(gun,clip)
    print(gun)
    bullet=Bullet(5)
    #创建敌人
    enemy=Person("敌人")
    print(enemy)
    #士兵拿枪
    soldier.take_gun(gun)
    #士兵开枪
    soldier.fire(enemy)
    print(clip)
    print(enemy)
    soldier.fire(enemy)
    print(clip)
    print(enemy)



  • 相关阅读:
    js 变量提升和函数提升原理
    解析PHP中intval()等int转换时的意外异常情况
    不要太相信自己的眼睛
    遇到乱码时的一些想法
    c++ --> 变量、常量与运算符
    [ActionScript3.0] 逻辑或"||=" ,等于"=="和全等于"==="
    [ActionScript3.0] 传递任意数量的参数
    [ActionScript3.0] 深表复制
    [ActionScript3.0] 为内建类添加方法
    Jmeter之内存溢出解决办法
  • 原文地址:https://www.cnblogs.com/hz-garden/p/12807056.html
Copyright © 2020-2023  润新知