本文实例讲述了php实现的中秋博饼游戏之掷骰子并输出结果功能。分享给大家供大家参考,具体如下:
前面讲述了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,
];
}
public function getRes($dice)
{
$format = $this->formatDice($dice);
$rank = $this->getRank($format);
$rankName = $this->getName($rank);
return [
'dice' => $dice,
'format' => $format,
'rank' => $rank,
'rankName' => $rankName,
];
}
public function rollDice()
{
$res = [];
for ($i = 0; $i < 6; $i++) {
$res[] = mt_rand(1, 6);
}
return $res;
}
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;
}
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;
}
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;
}
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, 4 => 1],
[3 => 5, 4 => 1],
[5 => 5, 4 => 1],
[6 => 5, 4 => 1],
],
'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 ''.$res['rankName'].'';
其中img.php是使用php生成图片的文件,参数num是点数,然后输出相应点数的图片,代码如下:
getImg($num);
下面是我抽中状元的效果图,O(∩_∩)O哈哈~
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。



