多线程控制
博客专区 > nero_zy 的博客 > 博客详情
多线程控制
nero_zy 发表于4年前
多线程控制
  • 发表于 4年前
  • 阅读 17
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

最近找到一个面试题,题目如下:

 题二:英雄PK模拟器

三个英雄角色参与PK

每个英雄具有以下几个属性:生命值(为0时英雄倒下)、攻击力(每次攻击时扣除对方的生命值点数)、攻击间隔(每次攻击过后都要等待间隔时间才能进行下次攻击,首次攻击之前也要先等待间隔时间)

另外,每个英雄都拥有两个技能:攻击技能和防御技能,攻击技能在攻击对方时有一定概率发动,防御技能在被对方攻击时有一定概率发动,具体参数如下

 

BM: 

生命650 攻击力40 攻击间隔1.5s    

攻击技能(跳劈):每次攻击时有30%几率造成双倍伤害

防御技能(反弹):每次被攻击时有30%几率把我方受到的伤害反弹给对方,例如我方被攻击,对方攻击力30,扣除我方30点生命值,如果技能发动,则对方也要扣除30点生命值,伤害只能反弹一次(两个BM相互PK的时候不出现连续反弹)

 

DH:生命600 攻击力30 攻击间隔1s

攻击技能(吸血):每次攻击时有30%几率把造成的伤害转变为自己的生命值(对被攻击者造成伤害,并且将攻击伤害转变成自己的生命值),但不能超过上限,例如我方攻击,扣除对方30的生命值,同时给自己增加30点生命值

防御技能(闪避):每次被攻击时有30%几率闪避不受伤害

 

MK:

生命700 攻击力50 攻击间隔2.5s

攻击技能(重击):每次攻击时有30%几率造成对方眩晕3s的效果(对方受到伤害后附加眩晕),对方英雄眩晕期间不能发起攻击,只能挨打,被攻击时也不能发起防御技能,且眩晕结束后对方英雄要重新等待攻击间隔,眩晕时间不能叠加,如果对方已经处于眩晕,我方又发动攻击技能,那么对方眩晕时间重新开始计算

防御技能(天神):每次被攻击时有60%的几率防御一半伤害,例如我方被攻击,对方攻击力为40,如果技能发动,则只扣除我方20点生命值

 

1.程序启动后,监听控制台输入

2.输入任意两个英雄名称(逗号分隔)发起PK,格式:BM,DH

3.系统输出PK详细过程,直到有一方胜出,格式如下:

BM攻击DH,BM发动攻击技能,DH未发动防御技能,BM:350->350,DH:280->200

....

BM胜出



这道题目,我想的就是两个英雄相当于两个线程,共同修改一个变量,但是在线程结束的时候(一方英雄血量为0时)如何关闭两个线程,想到了两个方法

一、启动一个监控线程,监控静态变量,为0时立刻关闭两个线程

二、设置一个静态的flag,两个英雄线程循环都是以这个flag来作为循环要件,在其他减血地方动态判断修改这个flag值,结束线程


个人使用的是第二种方法,觉得控制更加的灵活。

如果有需要代码请加 694090539

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 17
码字总数 11823
×
nero_zy
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: