Есть два игрока. Каждый выбирает "атаку" и "защиту", это может быть:
Голова - 1
Живот - 2
Руки - 3
Ноги - 4
Цифры - ID.
Победитель определяется в случае, когда игрок ударил в "незащищенную" область противника и верно защитил свою.
Т.е. в каждой игре есть действия игрока 1 (например 1,1 - атака головы и защита тоже головы) и действия игрока 2 (например 2,2 - атака живота и защита тоже живота), соотв. в этом случае результат - ничья
Помогите написать алгоритм определения результата игры на php максимально кратко.
С уважением и заранее с благодарностью!
$PLAYER_1 = [1,1];
$PLAYER_2 = [2,2];
$TYPE = 0;
if ($PLAYER_1[1] == $PLAYER_2[0]) {
$TYPE += 1;
}
if ($PLAYER_2[1] == $PLAYER_1[0]) {
$TYPE += 2;
}
switch ($TYPE) {
case '1':
var_dump('Победил игрок 1');
break;
case '2':
var_dump('Победил игрок 2');
break;
case '0':
case '3':
var_dump('Ничья');
break;
default:
break;
}
То же, что и в ответе @Mantikyl, но победой считаем попадание в незащищённую область
class Turn {
const IN_HEAD = 1;
const IN_BODY = 2;
const IN_BELL = 3;
const IN_FOOT = 4;
public static $targets = [self::IN_HEAD, self::IN_BODY, self::IN_BELL, self::IN_FOOT];
public $attack;
public $defence;
public function __construct($attack, $defence) {
$this->attack = $attack;
$this->defence = $defence;
}
}
function fight($turn1, $turn2) {
$res = 0;
if ($turn2->defence !== $turn1->attack) $res = $res | 1; // Игрок 1 попал в незащищённую область
if ($turn1->defence !== $turn2->attack) $res = $res | 2; // Игрок 2 попал в незащищённую область
switch (true) {
case ($res & 1) && ($res & 2):
case $res === 0:
default:
return 'Ничья';
case $res & 1: return 'Победа первого игрока';
case $res & 2: return 'Победа второго игрока';
}
}
$possibleTurns = [];
foreach (Turn::$targets as $a) {
foreach (Turn::$targets as $d) {
$possibleTurns[] = new Turn($a, $d);
}
}
foreach ($possibleTurns as $t1) {
foreach ($possibleTurns as $t2) {
$res = fight($t1, $t2);
echo "P1({$t1->attack}) VS P2({$t2->defence})", PHP_EOL;
echo "P2({$t2->attack}) VS P1({$t1->defence})", PHP_EOL;
echo "Result: {$res}", PHP_EOL, '---', PHP_EOL;
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Решаю задачки по составлению функций для новичков, которые проверяются по ожидаемым вводным данным с ожидаемыми результатамиВ ожидаемом...
Вот пример текста:
Создал новый раздел в каталоге(Фаерволы), подскажите, кто знает, как вытащить товары с другого раздела(Серверы) в новый по ID? Заранее спасибо