发牌规则
黑桃按照从小到大依次为:1-13
红桃按照从小到大依次为:14-26
梅花按照从小到大依次为:27-39
方块按照从小到大依次为:40-52
小王53 大王54
代码实现:
package com.zsy.study; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; /** * * @author 偶my耶 * 游戏发牌 */ public class Cards { /** * 发牌函数 * @param args */ private int[][] player; //玩家 private int[] total; // 底牌数 public int[][] getPlayer() { return player; } public void setPlayer(int[][] player) { this.player = player; } public int[] getTotal() { return total; } public void setTotal(int[] total) { this.total = total; } /** * 发牌函数 * @param CardNum 总牌数 * @param Rs 人数 * @param Ps 每人的牌数 * @return Cards */ public static Cards PlayingCards(int Rs){ int Ps ,CardNum; //每人的牌数 //总牌数 if(Rs==4){ //如果人数是4个,则把总牌数设为108张,每人的牌数设为25张 CardNum=108; Ps=25; }else if(Rs==3){ //如果人数是4个,则把总牌数设为54张,每人的牌数设为17张 CardNum=54; Ps=17; }else { CardNum=0; Ps=0; System.out.println("输入错误"); System.exit(1); } int[] total=new int[CardNum]; // int[][] player=new int[Rs][Ps]; //定义玩家数和牌数的 数组 int leftNum=CardNum; //剩下的牌数 int ranNumber; //随机发的牌 Random random=new Random(); for (int i = 0; i < total.length; i++) { //将牌数设在1--54之间 其中1~13表示一种花色 total[i]=(i+1)%54; //,依此类推 if (total[i]==0) { //把0设为54 total[i]=54; } } for(int i=0;i<player[0].length;i++){ //随机分配牌 for(int j=0;j<player.length;j++){ ranNumber=random.nextInt(leftNum); //随机获取下标, player[j][i]=total[ranNumber]; //将随机的数赋给玩家 total[ranNumber] = total[leftNum-1]; leftNum--; } } Cards card=new Cards(); card.setPlayer(player); card.setTotal(total); return card; } public void print(Cards card,int rs) { int dp; for (int i = 0; i < card.getPlayer().length; i++) { System.out.print("玩家"+(i+1)+"的牌"); for (int j = 0; j < card.getPlayer()[i].length; j++) { System.out.print(" "+card.getPlayer()[i][j]); } System.out.println(); } System.out.print("底牌"); if(rs==4){ dp=8; //设置底牌数 }else { dp=3; //设置底牌数 } for (int i = 0; i < dp; i++) { System.out.print(" "+card.getTotal()[i]); } System.out.println(); } public static void main(String[] args) throws Exception{ System.out.println("请选择游戏:1、斗地主,2、三打哈"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//输入语句 Integer rs = Integer.valueOf(br.readLine()); Cards card=PlayingCards(rs+2); card.print(card,rs); } }
运行结果:
时间: 2024-11-09 17:30:37