Socket/freedom/utils/DiceUtil.php
2026-01-28 23:48:20 +08:00

154 lines
4.8 KiB
PHP

<?php
namespace freedom\utils;
class DiceUtil
{
/**
* 根据结果输出某点的次数
* @param $resultArray // 结果数组
* @param $living // 点数
* @return int
*/
public static function getLivingCount($resultArray, $living): int
{
$count = 0;
foreach ($resultArray as $k => $v){
if (intval($v) == $living){
$count++;
}
}
return $count;
}
/**
* 分析结果 控制端传入三个数 方法对其分析 输出结果
* @param $resultArray
* @return array
*/
public static function parseResult($resultArray): array
{
// 返回数组
$returnArray = [];
$returnArray[] = 'living_' . $resultArray[0];
$returnArray[] = 'living_' . $resultArray[1];
$returnArray[] = 'living_' . $resultArray[2];
// int类型结果数组
$intResultArray = [];
foreach ($resultArray as $v) {
$intResultArray[] = intval($v);
}
$total = array_sum($intResultArray);
if ($total > 3 && $total < 18) {
$returnArray[] = 'number_' . $total;
}
// 判断是不是全部值都是一样的
$uniqueArray = array_unique($intResultArray);
// 重新排序
sort($uniqueArray);
if (count($uniqueArray) == 1) {
$returnArray[] = 'two_'.$uniqueArray[0] . $uniqueArray[0];
$returnArray[] = 'three_'.$uniqueArray[0] . $uniqueArray[0] . $uniqueArray[0];
$returnArray[] = 'leopard';
} else {
if ($total >= 4 && $total <= 10) {
$returnArray[] = 'small';
}
if ($total >= 11 && $total <= 17) {
$returnArray[] = 'big';
}
if ($total % 2 == 0) {
$returnArray[] = 'plural';
} else {
$returnArray[] = 'singular';
}
}
if (count($uniqueArray) == 2) {
$returnArray[] = 'two_'.$uniqueArray[0] . $uniqueArray[1];
$pointArr = array_count_values($resultArray);
foreach ($pointArr as $key => $value){
if($value == 2){
$returnArray[] = 'two_'.$key . $key;
}
}
}
if (count($uniqueArray) == 3) {
$returnArray[] = 'two_'.$uniqueArray[0] . $uniqueArray[1];
$returnArray[] = 'two_'.$uniqueArray[0] . $uniqueArray[2];
$returnArray[] = 'two_'.$uniqueArray[1] . $uniqueArray[2];
}
return $returnArray;
}
/**
* 分析统计 分析结果 控制端传入三个数 方法对其分析 输出结果
* @param $resultArray
* @return array
*/
public static function parseCount($resultArray): array
{
$returnArray = [];
// int类型结果数组
$intResultArray = [];
foreach ($resultArray as $v) {
$intResultArray[] = intval($v);
}
$total = array_sum($intResultArray);
// 判断是不是全部值都是一样的
$uniqueArray = array_unique($intResultArray);
if (count($uniqueArray) == 1) {
$returnArray[] = 'leopard';
} else {
if ($total >= 4 && $total <= 10) {
$returnArray[] = 'small';
}
if ($total >= 11 && $total <= 17) {
$returnArray[] = 'big';
}
if ($total % 2 == 0) {
$returnArray[] = 'plural';
} else {
$returnArray[] = 'singular';
}
}
return $returnArray;
}
/**
* 统计自增方法
* @param $beforeCountArray
* @param $afterCountArray
* @return int[]
*/
public static function countInc($beforeCountArray, $afterCountArray): array
{
if (empty($beforeCountArray)){
$beforeCountArray = ['leopard' => 0, 'small' => 0, 'big' => 0, 'singular' => 0, 'plural' => 0];
}
foreach ($beforeCountArray as $k => $v){
if (in_array($k, $afterCountArray)){
$beforeCountArray[$k] = $v + 1;
}
}
return $beforeCountArray;
}
/**
* 下注额自增方法
* @param $beforeAmountArray
* @param $afterAmountArray
* @return array
*/
public static function amountInc($beforeAmountArray, $afterAmountArray): array
{
$returnArray = [];
foreach ($afterAmountArray as $k => $v){
if (array_key_exists($k, $beforeAmountArray)){
$returnArray[$k] = $beforeAmountArray[$k] + $v;
unset($beforeAmountArray[$k]);
} else {
$returnArray[$k] = $v;
}
}
return $returnArray + $beforeAmountArray;
}
}