美文网首页
空战游戏计分

空战游戏计分

作者: Python_Camp | 来源:发表于2022-10-10 11:42 被阅读0次

    描述
    游戏算法逻辑原理基础知识

    创建一个函数,在两个战斗机之间的PK,返回胜利者的名字。

    每个战士轮流攻击对方,谁先杀死对方,谁就胜利了。
    死亡被定义为健康状况<=0。

    每个战士将是一个战斗机对象/实例。请看下面你选择的语言中的战斗机类。

    健康状况和每次攻击伤害(damage_per_attackfor python)都将是大于0的整数,你可以改变战斗机对象。

    你的函数还接收第三个参数,一个字符串,包含首先攻击的战斗机的名字。

    例子。

    declare_winner(Fighter("Lew", 10, 2), 
                   Fighter("Harry", 5, 4), 
                   "Lew" ) => "Lew"
    

    Lew攻击Harry;Harry现在有3点健康。
    哈利攻击卢;卢现在有6点生命值。
    Lew攻击Harry;Harry现在有1点健康。
    哈利攻击卢;卢现在有2点健康。
    Lew攻击Harry:Harry
    现在有-1生命值,Harry已经失败,Lew赢了。

    主函数调用的类Fighter(object)定义如下

    class Fighter(object):
        def __init__(self, name, health, damage_per_attack):
            self.name = name
            self.health = health
            self.damage_per_attack = damage_per_attack
            
        def __str__(self): return "Fighter({}, {}, {})".format(self.name, self.health, self.damage_per_attack)
        __repr__=__str__
    

    大喵点评:

    • 熟悉掌握类 class的调用基础技巧
    • while循环基本用法
    def declare_winner(fighter1, fighter2, first_attacker):
        
        while fighter1.health > 0 and fighter2.health > 0:
            
            if fighter1.name == first_attacker:
                fighter2.health -= fighter1.damage_per_attack
                first_attacker = fighter2.name
                
            elif fighter2.name == first_attacker:
                fighter1.health -= fighter2.damage_per_attack
                first_attacker = fighter1.name
    
        return fighter1.name if fighter1.health > 0 else fighter2.name
    

    更加简洁的写法

    def declare_winner(fighter1, fighter2, first_attacker):
        cur, opp = (fighter1, fighter2) if first_attacker == fighter1.name else (fighter2, fighter1)
        while cur.health > 0:
            opp.health -= cur.damage_per_attack
            cur, opp = opp, cur
        return opp.name
    

    课后作业

    拓展学习class的升级任务:
    增加一个维度描述双方战机的战斗力,如油耗:

    添加一个参数:oil描述战机的开始空战前油有多少

    添加一个参数:consume_per_attack描述每次攻击消耗双方的油料

    注意,每次攻击双方都要消耗油料,节能表现更优的战机有获胜的机会增大。

    本文由mdnice多平台发布

    相关文章

      网友评论

          本文标题:空战游戏计分

          本文链接:https://www.haomeiwen.com/subject/xkloartx.html