您正在使用 IPV4 [44.222.131.239] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会      

【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折      
[公益] 地球是我家,绿化靠大家      
2024年 中秋节 000
2025年 高 考 263
2025年 元 旦 106
2025年 春 节 134
 
您现在的位置:首页 >> PHP >> 内容
本类新增
本类热门
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
内容摘要: ?phpclassroll{private$_defRank='lk';publicfunctionlottery(){$dice=$this-rollDice();$format=$this-formatDice($dice);$rank=$this-getRank($format);$rankName=$this-getName($rank);retur......
<?php

classroll

{

private$_defRank='lk';

publicfunctionlottery()

{

$dice=$this->rollDice();

$format=$this->formatDice($dice);

$rank=$this->getRank($format);

$rankName=$this->getName($rank);

return[

'dice'=>$dice,

//'format'=>$format,

'rank'=>$rank,

'rankName'=>$rankName,

];

}

/**

*获取筛子排名结果

*@param$dice

*@returnarray

*/

publicfunctiongetRes($dice)

{

$format=$this->formatDice($dice);

$rank=$this->getRank($format);

$rankName=$this->getName($rank);

return[

'dice'=>$dice,

'format'=>$format,

'rank'=>$rank,

'rankName'=>$rankName,

];

}

/**

*掷骰子

*@returnarray

*/

publicfunctionrollDice()

{

$res=[];

for($i=0;$i<6;$i++){

$res[]=mt_rand(1,6);

}

return$res;

}

/**

*格式化掷骰子结果

*@paramarray$list

*@returnarray

*/

publicfunctionformatDice($list=[])

{

$data=[];

if(count($list)!=6){

return$data;

}

$data=[

1=>0,

2=>0,

3=>0,

4=>0,

5=>0,

6=>0,

];

foreach($listas$val){

if(isset($data[$val])){

$data[$val]+=1;

}

}

foreach($dataas$key=>$val){

if($val==0){

unset($data[$key]);

}

}

return$data;

}

/**

*判断筛子结果的大小

*@param$list

*@returnint|string

*/

publicfunctiongetRank($list)

{

$ruleList=$this->_getRule();

$res=$this->_defRank;

if(!empty($ruleList)){

foreach($ruleListas$rank=>$rankRules){

foreach($rankRulesas$rule){

foreach($ruleas$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;

}

/**

*根据排序获取掷骰子结果名称

*@paramint$rank

*@returnarray

*/

publicfunctiongetName($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;

}

/**

*返回规则

*@returnarray

*/

privatefunction_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=newroll();

$res=$roll->lottery();

echo'<h2>骰子点数:</h2>';

echo'<p>';

foreach($res['dice']as$val){

echo'<imgsrc="img.php?num='.$val.'">';

}

echo'</p>';

echo'<h2>结果:</h2>';

echo'<h2style="color:red;">'.$res['rankName'].'</h2>';

其中img.php是使用php生成图片的文件,参数num是点数,然后输出相应点数的图片,代码如下:

<?php

classimgDock

{

publicfunctiongetImg($num=0)

{

if(!empty($num)){

header('Content-Type:image/png');

$img=imagecreatetruecolor(200,200);

$white=imagecolorallocate($img,255,255,255);

$grey=imagecolorallocate($img,100,100,100);

$blue=imagecolorallocate($img,0,102,255);

$red=imagecolorallocate($img,255,0,0);

imagefill($img,0,0,$white);

imageline($img,10,20,10,180,$grey);

imageline($img,10,180,20,190,$grey);

imageline($img,20,190,180,190,$grey);

imageline($img,180,190,190,180,$grey);

imageline($img,190,180,190,20,$grey);

imageline($img,190,20,180,10,$grey);

imageline($img,180,10,20,10,$grey);

imageline($img,20,10,10,20,$grey);

//1/2/3/4/5/6

switch($num){

case1:

imagefilledarc($img,100,100,50,50,0,0,$blue,IMG_ARC_PIE);

break;

case2:

imagefilledarc($img,60,100,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,140,100,40,40,0,0,$red,IMG_ARC_PIE);

break;

case3:

imagefilledarc($img,50,50,40,40,0,0,$blue,IMG_ARC_PIE);

imagefilledarc($img,100,100,40,40,0,0,$blue,IMG_ARC_PIE);

imagefilledarc($img,150,150,40,40,0,0,$blue,IMG_ARC_PIE);

break;

case4:

imagefilledarc($img,50,50,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,50,150,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,150,150,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,150,50,40,40,0,0,$red,IMG_ARC_PIE);

break;

case5:

imagefilledarc($img,50,50,40,40,0,0,$blue,IMG_ARC_PIE);

imagefilledarc($img,50,150,40,40,0,0,$blue,IMG_ARC_PIE);

imagefilledarc($img,100,100,40,40,0,0,$blue,IMG_ARC_PIE);

imagefilledarc($img,150,150,40,40,0,0,$blue,IMG_ARC_PIE);

imagefilledarc($img,150,50,40,40,0,0,$blue,IMG_ARC_PIE);

break;

case6:

imagefilledarc($img,50,50,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,50,150,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,100,50,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,100,150,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,150,150,40,40,0,0,$red,IMG_ARC_PIE);

imagefilledarc($img,150,50,40,40,0,0,$red,IMG_ARC_PIE);

break;

default:

break;

}

imagepng($img);

imagedestroy($img);

}

}

}

$num=0;

if(isset($_GET['num'])){

$num=intval($_GET['num']);

}

$imgDock=newimgDock();

$imgDock->getImg($num);

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:php实现连接access数据库并转txt写入的方法

 

下一篇:Asp.net之TextBox只允许输入数字的方法总结

发布日期:2024/2/4
手机扫二维码直达本页
发布时间:14:50:29
点  击:10
录  入:伊伊
相关文章
Baidu
YiJiaCMS 7.5.3 build240901(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....