栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

php实现的中秋博饼游戏之掷骰子并输出结果功能详解

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

php实现的中秋博饼游戏之掷骰子并输出结果功能详解

本文实例讲述了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程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/40178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号