Heim >Backend-Entwicklung >PHP-Tutorial >一个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过程呢。
<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;