JavaScript、Java实现扑克牌发牌

JavaScript、Java实现扑克牌发牌

村头老杨头

Tue Jan 28

村头老杨头

太无聊,写一个通过多种语言实现扑克牌发牌的小Demo。
步骤:

  1. 创建54张牌
  2. 洗牌(打乱54张牌的顺序)
  3. 发牌(把54张牌发给三个玩家 留3张底牌)
  4. 打印(显示三个玩家的手牌,以及三张底牌)

代码如下:

JavaScript实现扑克牌发牌

//存放扑克数组
var pukes = [];
//玩家1
var paly1 = [];
//玩家2
var paly2 = [];
//玩家3
var paly3 = [];
//底牌
var base = [];
//创建扑克
function createPuke(){
	//循环花色 1黑桃  2红桃  3梅花  4方片
	for(var i=1; i<=4; i++){
		//循环13张基础牌
		for(var j=1; j<=13; j++){
			//创建的牌添加进扑克数组中
			pukes.push(createPai(i)+j);
		}
	}
	//添加  15 大王  14 小王
	pukes.push(14);
	pukes.push(15);
}
//创建牌
function createPai(i){
	//花色  1黑桃  2红桃  3梅花  4方片
	switch(i){
	case 1:
		return "♠";
	case 2:
		return "♥";
	case 3:
		return "♣";
	case 4:
		return "♦";
	}
}
//洗牌
function randPuke(){
	for(var i=0; i<4; i++){
		for(var j=0; j<54; j++){
			//调换随机位置
			var rIndex = randIndex();
			//调换随机位置
			var tIndex = randIndex();
			//转换位置
			var tmp = pukes[rIndex];
			pukes[rIndex] = pukes[tIndex];
			pukes[tIndex] = tmp;
		}
	}
}
//扑克随机位置
function randIndex(){
	return  Math.floor(Math.random()*54);
}
//发牌
function deal(){
	for(var i=0; i<51; i++){
		switch(i%3){
		case 0:
			//玩家1的牌
			paly1.push(pukes[i]);
			break;
		case 1:
			//玩家2的牌
			paly2.push(pukes[i]);
			break;
		case 2:
			//玩家3的牌
			paly3.push(pukes[i]);
			break;
		}
	}

	for(var i=51; i<54; i++){
		base.push(pukes[i]);
	}
}
//打印扑克
function print(){
	//玩家1
	console.log("玩家1",paly1);
	//玩家2
	console.log("玩家2",paly2);
	//玩家3
	console.log("玩家3",paly3);
	//底牌
	console.log("底牌",base);
}

function init(){
	//创建扑克
	createPuke();
	//洗牌
	randPuke();
	//发牌
	deal();
	//打印
	print();
}
init();

JavaScript

Java语言实现扑克牌发牌


import java.util.Arrays;

public class Puke{
	//存放扑克数组
	private String pukes[] = new String[54];
	//玩家1
	private String paly1[] = new String[17];
	//玩家2
	private String paly2[] = new String[17];
	//玩家3
	private String paly3[] = new String[17];
	//底牌
	private String base[] = new String[3]; 
	//创建扑克
	private void createPuke(){
		int index = 0;
		for(int i=1; i<=4; i++){
			for(int j=1; j<=13; j++){
				//创建的牌添加进扑克数组中
				pukes[index++] = createPai(i)+j;
			}
		}
		//添加  15 大王  14 小王
		pukes[52] = "14";
		pukes[53] = "15";
	}
	//创建牌
	private String createPai(int i){
		//花色  1黑桃  2红桃  3梅花  4方片
		switch(i){
		case 1:
			return "♠";
		case 2:
			return "♥";
		case 3:
			return "♣";
		case 4:
			return "♦";
		}
		return null;
	}
	//洗牌
	private void randPuke(){
		for(int i=0; i<4; i++){
			for(int j=0; j<54; j++){
				//调换随机位置
				int rIndex = randIndex();
				//调换随机位置
				int tIndex = randIndex();
				//转换位置
				String tmp = pukes[rIndex];
				pukes[rIndex] = pukes[tIndex];
				pukes[tIndex] = tmp;
			}
		}
	}
	//扑克随机位置
	private int randIndex(){
		return  (int)(Math.random()*54);
	}
	//发牌
	private void deal(){
		for(int i=0; i<51; i++){
			switch(i%3){
			case 0:
				//玩家1的牌
				paly1[i/3] = pukes[i];
				break;
			case 1:
				//玩家2的牌
				paly2[i/3] = pukes[i];
				break;
			case 2:
				//玩家3的牌
				paly3[i/3] = pukes[i];
				break;
			}
		}
		//底牌
		for(int i=51; i<54; i++){
			base[i%3] = pukes[i];
		}
	}
	//打印扑克
	private void print(){
		//玩家1
		System.out.println("玩家1\n"+Arrays.toString(paly1));
		//玩家2
		System.out.println("玩家2\n"+Arrays.toString(paly2));
		//玩家3
		System.out.println("玩家3\n"+Arrays.toString(paly3));
		//底牌
		System.out.println("底牌\n"+Arrays.toString(base));
	}
	//初始化
	public void init(){
		//创建扑克
		createPuke();
		//洗牌
		randPuke();
		//发牌
		deal();
		//打印
		print();
	}
	
	public void static main(String[] args){
		Puke puke = new Puke();
		puke.init();
	}
}

Java

评论