本文实例讲述了PHP实现的中秋博饼游戏之掷骰子并输出结果功能。分享给大家供大家参考,具体如下:
前面讲述了,纯php实现,就要用php来生成图案,第一步就先绘制骰子图案。下面就是编码实现业务逻辑,具体代码如下:
rollDice();
$format = $this->formatDice($dice);
$rank = $this->getRank($format);
$rankName = $this->getName($rank);
return [
'dice' => $dice,//'format' => $format,'rank' => $rank,'rankName' => $rankName,];
}
/**
* 获取筛子排名结果
* @param $dice
* @return array
*/
public function getRes($dice)
{
$format = $this->formatDice($dice);
$rank = $this->getRank($format);
$rankName = $this->getName($rank);
return [
'dice' => $dice,'format' => $format,];
}
/**
* 掷骰子
* @return array
*/
public function rollDice()
{
$res = [];
for ($i = 0; $i < 6; $i++) {
$res[] = mt_rand(1,6);
}
return $res;
}
/**
* 格式化掷骰子结果
* @param array $list
* @return array
*/
public function formatDice($list = [])
{
$data = [];
if (count($list) != 6) {
return $data;
}
$data = [
1 => 0,2 => 0,3 => 0,4 => 0,5 => 0,6 => 0,];
foreach ($list as $val) {
if (isset($data[$val])) {
$data[$val] += 1;
}
}
foreach ($data as $key => $val) {
if ($val == 0) {
unset($data[$key]);
}
}
return $data;
}
/**
* 判断筛子结果的大小
* @param $list
* @return int|string
*/
public function getRank($list)
{
$ruleList = $this->_getRule();
$res = $this->_defRank;
if (!empty($ruleList)) {
foreach ($ruleList as $rank => $rankRules) {
foreach ($rankRules as $rule) {
foreach ($rule as $dian => $num) {
if (isset($list[$dian])) {
if ($list[$dian] == $num) {
$res = $rank;
} else {
//规则中只要有一条不满足就跳出当前规则验证
$res = $this->_defRank;
break;
}
} else {
//规则中只要有一条不满足就跳出当前规则验证
$res = $this->_defRank;
break;
}
}
//有一条规则匹配,跳出循环,
if ($res != $this->_defRank) {
break;
}
}
//有一条规则匹配,跳出循环,
if ($res != $this->_defRank) {
break;
}
}
}
return $res;
}
/**
* 根据排序获取掷骰子结果名称
* @param int $rank
* @return array
*/
public function getName($rank = NULL)
{
$list = [
'cjh' => '状元插金花','lbh' => '六杯红','bdj' => '遍地锦','ww' => '五王','wzdyx' => '五子带一秀','wzdk' => '五子登科','zy' => '状元','by' => '榜眼','sh' => '三红','sj' => '四进','eq' => '二举','yx' => '一秀','lk' => '轮空',];
if (!empty($rank)) {
$rankName = '';
if (isset($list[$rank])) {
$rankName = $list[$rank];
}
return $rankName;
}
return $list;
}
/**
* 返回规则
* @return array
*/
private function _getRule()
{
return [
'cjh' => [
[2 => 2,4 => 4]
],'lbh' => [
[4 => 6]
],'bdj' => [
[1 => 6],[2 => 6],[3 => 6],[5 => 6],[6 => 6],],'ww' => [
[4 => 5],'wzdyx' => [
[1 => 5,4 => 1],[2 => 5,[3 => 5,[5 => 5,[6 => 5,'wzdk' => [
[1 => 5],[2 => 5],[3 => 5],[5 => 5],[6 => 5],'zy' => [
[4 => 4]
],'by' => [
[1 => 1,2 => 1,3 => 1,4 => 1,5 => 1,6 => 1]
],'sh' => [
[4 => 3]
],'sj' => [
[1 => 4],[2 => 4],[3 => 4],[5 => 4],[6 => 4],'eq' => [
[4 => 2]
],'yx' => [
[4 => 1]
],];
}
}
$roll = new roll();
$res = $roll->lottery();
echo '
骰子点数:
'; echo ''; foreach($res['dice'] as $val){ echo ''; } echo '
'; echo '结果:
'; echo '';
其中img.php是使用php生成图片的文件,参数num是点数,然后输出相应点数的图片,代码如下:
getImg($num);
下面是我抽中状元的效果图,O(∩_∩)O哈哈~
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。