Heim >Backend-Entwicklung >PHP-Tutorial >一个php处理回合制PK过程的问题

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

WBOY
WBOYOriginal
2016-06-06 20:35:241360Durchsuche

<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;

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn