简单步骤:PHP实现斗地主式随机发牌

提示:文章将尽量保持精简,同时烦请诸位在代码编写中保持耐心。

​​​​前言

这篇文章是在我翻找了其他的有关 PHP 实现发牌效果的文章,发现很多都不怎么精炼,并且文章年份较为久远,还有就是没有达到斗地主式发牌的效果,综合之后写下此文。如有进一步的建议和指正,表示欢迎。


一、斗地主式发牌解释(可跳过)

对于斗地主式发牌,大部分玩过牌小伙伴应该明白,但还是有没玩过的小伙伴,所以在这里解释一下。斗地主式发牌:指一副54张牌的扑克,包括大小王在内,分别分发个三个玩家,其中一名玩家为地主,另外两名玩家为农民。发牌时先抽出三张地主牌,额外分发给地主玩家,因此地主玩家拥有20张牌,其余两名玩家拥有17张牌。过程中发牌与地主名称保持随机分发。

二、开发环境

1.该项目支持的开发环境:

  1. Apache 2.2~2.4
  2. PHP 5.3~7.1

三、实现步骤

1.HTML代码实现

为了更好的观看,在此将 css样式 与 html 代码错开编写,其中主要是对数组函数的运用,和对数组遍历和访问

html代码 如下:

<body>
	<script>
	  function cha(){
		var i = document.getElementById("test");  
		  i.style.visibility="visible";
	  }
		
	</script>
	<?php
    // 建立一个牌池用来对数组保存
 	$num = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
 	$icon = ['♥' => 'red', '♦' => 'red', '♠' => 'black', '♣' => 'black'];
 	// 生成扑克牌组
 	$poker = [];
 	foreach ($icon as $k => $v) {
 	    foreach ($num as $vv) {
 	        $poker[] =  "<font style=\"color:$v;\">$vv $k</font>";
 	    }
 	}
    $poker[]="<font style=\"color:red;\">大王</font>";
	$poker[]="<font style=\"color:black;\">小王</font>";
 	// 打乱牌组顺序
	shuffle($poker);

	//建立数组指针,用来随机代替‘大地主’
	$landowner = array(0=>'农民A',1=>'农民B',2=>'农民C');
    $lk = rand(0,2);
	echo '<div id=header>';
    echo '本轮地主: '.$landowner[$lk].'<br><br>';
	$landowner[$lk]='大地主';
	echo '</div>';
	
?>
	//农民A样式
	<?php 
	echo '<div id=box2>';
	echo '<img src="handsome1.jpg" width="55px" height="55px" />';
	echo $landowner[0].':&nbsp&nbsp';
	for ($i = 0; $i < 17; ++$i) { 
		if($i==8){
				 echo '<br><br>';
			 }
 	        echo current($poker);
 	        next($poker);
 	    }
	echo '</div>';
//---------------------------------------------------
    //农民B样式
	echo '<div class="row">';
	echo '<div class="column" align="center">';
	echo '<p align="center">';
	echo '<img src="handsome2.jpg" width="55px" height="55px" />';
 	echo $landowner[1].':&nbsp&nbsp'.'</p>';
 	     for ($i = 0; $i < 17; ++$i) {
			 if($i==8){       //当输出到第8张牌时换行,防止重叠
				 echo '<br><br>';
			 }
 	        echo current($poker);
 	        next($poker);
 	    } 
	echo '</div>';
//---------------------------------------------------
    //建立按钮组件,实现对地主牌的翻看
	echo '<div class="column" align="center">';
	echo '地主牌: '; 
	echo '<div id="test">';	
	for ($i = 0; $i < 3; ++$i) {
 	        echo current($poker);
 	        next($poker);
 	    }
	echo '<br><br>';	
	echo '</div>';
	echo '<button onClick="cha()">翻看地主牌</button>';
	echo '</div>';
//---------------------------------------------------
    //农民C样式
	echo '<div class="column">';
	echo '<p align="center">';
	echo '<img src="handsome3.jpg" width="55px" height="55px" />';
 	echo $landowner[2].':&nbsp&nbsp'.'</p>';
 	     for ($i = 0; $i < 17; ++$i) {
			 if($i==8){
				 echo '<br><br>';
			 }
 	        echo current($poker);
 	        next($poker);
 	    } 
	echo '</div>';
	echo '</div>';
	?>
</body>

2.CSS代码实现

CSS 样式代码如下:

<head>
<meta charset="utf-8">
<title>斗地主</title>
	
	
	<style>
		body{
			background: url("poker.png") no-repeat;
			background-size: 100%;
		}
	      div{margin:15px 0}
	      font{border:1px solid #ccc;padding:6px 3px;margin-right:10px;
		  background-color: white;
		}
		#test{visibility: hidden;
		}
		
		.column {
        float: left;
        width: 33.33%;
        }
 

        .row:after {
        content: "";
        display: table;
        clear: both;
        }
 

        @media screen and (max-width: 600px) {
        .column {
         width: 100%;
        }
      }
		
		#header{
        text-align: center;
        padding: 20px;
		height: 300px;
        }
		
		#box2{
		text-align: center;
        position:fixed;bottom: 0;
        width: 100%;
        height: 20%;
		}
	</style>

</head>

3.完成效果

会随机改变“地主”位置,点击“翻看地主牌”可以实现翻看,能够实现随机发牌。

4.项目使用背景

这里使用的背景图与三个玩家的头像,可自己提供,要注意修改图片名称。


四.文章末尾

感谢观看,欢迎建议!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值