首页 >后端开发 >php教程 >一个php处理回合制PK过程的问题

一个php处理回合制PK过程的问题

WBOY
WBOY原创
2016-06-06 20:35:241356浏览

<code>游戏中就是你打我一下,我打你一下,两边都打完进如下一轮,现在是这样的。
左边是进攻方,先打
------------左边
人物A,人物B,人物C
------------右边
敌人A
PK过程是
人物A ---->攻击: 敌人A
敌人A ---->攻击: 人物A   (现在敌人攻击完了,左边没有攻击完)
人物B ---->攻击: 敌人A
人物C ---->攻击: 敌人A
==========到这里,一轮攻击就算完毕,进入下一轮PK===== 人物先手(即左边)
人物A ---->攻击: 敌人A
敌人A ---->攻击: 人物A   (现在敌人攻击完了,左边没有攻击完)
人物B ---->攻击: 敌人A
人物C ---->攻击: 敌人A
.....
比如双方的人物是由数组组成的。
//人物
$humen = array(
    1 => array(
        'name'=>'人物A'
        'is_attack'=>0,//表示本轮是否攻击过,到新一轮的时候就重置他
    ),
    2 => array(
        'name'=>'人物B',
        'is_attack'=>0,
    ),
    3 => array(
        'name'=>'人物C',
        'is_attack'=>0,     
    )
);
//敌人
$enemy= array(
    1 => array(
        'name'=>'敌人A',
        'is_attack'=>0,
    ),
); 
最后实形成这样一个过程 
<?php $process = array(
    0 => array(
        launch => 'left',
        attackor => 1, //人物A发起攻击
        hurt => array(0 => array('beattackors' => 1), //敌人A被攻击  beattackors 对应地方的数组索引
        )
    ),
    1 => array(
        launch => 'right',
        attackor => 1, //敌人A发起攻击
        hurt => array(0 => array('beattackors' => 1), //人物A被攻击  beattackors 对应地方的数组索引
        )
    ),
    2 => array(
        launch => 'left',
        attackor => 2, //人物B发起攻击
        hurt => array(0 => array('beattackors' => 1), //敌人A被攻击  beattackors 对应地方的数组索引
        )
    ), //到这里由于敌人已经攻击完了,但是本方还没有攻击完,继续left
    3 => array(
        launch => 'left',
        attackor => 3, //人物C发起攻击
        hurt => array(0 => array('beattackors' => 1), //攻击敌人A  beattackors 对应地方的数组索引
        )
    )
);
</code>

PHP怎么实现这个PK过程呢。

回复内容:

<code>游戏中就是你打我一下,我打你一下,两边都打完进如下一轮,现在是这样的。
左边是进攻方,先打
------------左边
人物A,人物B,人物C
------------右边
敌人A
PK过程是
人物A ---->攻击: 敌人A
敌人A ---->攻击: 人物A   (现在敌人攻击完了,左边没有攻击完)
人物B ---->攻击: 敌人A
人物C ---->攻击: 敌人A
==========到这里,一轮攻击就算完毕,进入下一轮PK===== 人物先手(即左边)
人物A ---->攻击: 敌人A
敌人A ---->攻击: 人物A   (现在敌人攻击完了,左边没有攻击完)
人物B ---->攻击: 敌人A
人物C ---->攻击: 敌人A
.....
比如双方的人物是由数组组成的。
//人物
$humen = array(
    1 => array(
        'name'=>'人物A'
        'is_attack'=>0,//表示本轮是否攻击过,到新一轮的时候就重置他
    ),
    2 => array(
        'name'=>'人物B',
        'is_attack'=>0,
    ),
    3 => array(
        'name'=>'人物C',
        'is_attack'=>0,     
    )
);
//敌人
$enemy= array(
    1 => array(
        'name'=>'敌人A',
        'is_attack'=>0,
    ),
); 
最后实形成这样一个过程 
<?php $process = array(
    0 => array(
        launch => 'left',
        attackor => 1, //人物A发起攻击
        hurt => array(0 => array('beattackors' => 1), //敌人A被攻击  beattackors 对应地方的数组索引
        )
    ),
    1 => array(
        launch => 'right',
        attackor => 1, //敌人A发起攻击
        hurt => array(0 => array('beattackors' => 1), //人物A被攻击  beattackors 对应地方的数组索引
        )
    ),
    2 => array(
        launch => 'left',
        attackor => 2, //人物B发起攻击
        hurt => array(0 => array('beattackors' => 1), //敌人A被攻击  beattackors 对应地方的数组索引
        )
    ), //到这里由于敌人已经攻击完了,但是本方还没有攻击完,继续left
    3 => array(
        launch => 'left',
        attackor => 3, //人物C发起攻击
        hurt => array(0 => array('beattackors' => 1), //攻击敌人A  beattackors 对应地方的数组索引
        )
    )
);
</code>

PHP怎么实现这个PK过程呢。

按速度属性排列出来一个攻击顺序队列,攻击完成,出队列

$humen中增加计数属性,记录都有谁攻击过,且每个item中的人物增加血条值属性和is_alive属性,血没了is_alive置为false;

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn