154 lines
4.8 KiB
PHP
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;
|
|
}
|
|
} |