java模拟实现斗地主(超简单的发牌理牌思路)

您所在的位置:网站首页 斗地主小狗粉丝帮怎么弄 java模拟实现斗地主(超简单的发牌理牌思路)

java模拟实现斗地主(超简单的发牌理牌思路)

2024-06-11 20:12| 来源: 网络整理| 查看: 265

java语言模拟实现斗地主

用数组以及随机数模拟实现,超简单~~~

一、初始化牌

众所周知,纸牌共有54张,将这54张牌放入到字符串数组里面,进行初始化操作,注意:这个顺序很重要,后面理牌的时候要用。相当于一个模板 以下是我声明的字符串数组。

String[] pai = { "3♠", "3♥", "3♦", "3♣", "4♠", "4♥", "4♦", "4♣", "5♠", "5♥", "5♦", "5♣", "6♠", "6♥", "6♦", "6♣", "7♠", "7♥", "7♦", "7♣", "8♠", "8♥", "8♦", "8♣", "9♠", "9♥", "9♦", "9♣", "10♠", "10♥", "10♦", "10♣", "J♠", "J♥", "J♦", "J♣", "Q♠", "Q♥", "Q♦", "Q♣", "K♠", "K♥", "K♦", "K♣", "A♠", "A♥", "A♦", "A♣", "2♠", "2♥", "2♦", "2♣", "大♚", "小♔" };

二、建数组

//设置一个boolean数组,来对应下标,检查牌是否出现过 boolean[] isTrue = new boolean[54]; //用来存随机生成的下标,最重要,理牌时候也用到 int[] xiaBiao = new int[54]; //建3个int数组存下标,表示三个玩家, int[] zhao = new int[17]; int[] liu = new int[17]; int[] zhang = new int[17]; //用一个int数组存地主牌 int[] diZhuPai = new int[3];

根据牌的下标去字符串里面取牌(值),如果这个值有了就对应的boolean数组的对应的设为true。

三、用随机数生成下标

用随机数生成一个(0,53]的随机数,其实生成的随机数就是字符数组(pai数组)的下标,根据生成的数去取值。

public void xiPai(String[] pai, boolean[] isTrue, int[] xiaBiao) { System.out.println("\n洗牌"); int temp = 0;//用来计数,看是否够54张牌, while (temp //执行的话证明还没有这个牌(下标) xiaBiao[temp] = p;//把值存到数组里面 temp++;//牌数加一 System.out.print(pai[p] + " "); //每27张牌换行一次 if (temp % 27 == 0) System.out.println(); isTrue[p] = true;//对应的boolean数组设为true,证明这张牌已经有了 } } }

发牌

发牌就是将存好的数组下标分成4份(3份17个代表17张牌,一个3个,代表地主牌),可以直接用数组拷贝方法,都可以,只要达到目的就行。

//发牌 public void faPai(String[] pai, int[] xiaBiao, int[] zhang, int[] liu, int[] zhao, int[] dizhupai) { System.out.print("\n开始发牌:"); int k = 0; int j = 0; while (j System.out.print(pai[zhang[i]] + " "); } System.out.print("\n赵云的牌为:"); for (int i =0; i System.out.print(pai[liu[i]] + " "); } int q=0; System.out.print("\n底牌:"); for (int i = 51; i System.out.print("\n\n理牌"); //把下标排序,根据下标取值 Arrays.sort(zhang); Arrays.sort(zhao); Arrays.sort(liu); System.out.print("\n张飞的牌为:"); for (int i = 0; i System.out.print(pai[zhao[i]] + " "); } System.out.print("\n刘备的牌为:"); for (int i = 0; i public static void main(String[] args) { String[] pai = { "3♠", "3♥", "3♦", "3♣", "4♠", "4♥", "4♦", "4♣", "5♠", "5♥", "5♦", "5♣", "6♠", "6♥", "6♦", "6♣", "7♠", "7♥", "7♦", "7♣", "8♠", "8♥", "8♦", "8♣", "9♠", "9♥", "9♦", "9♣", "10♠", "10♥", "10♦", "10♣", "J♠", "J♥", "J♦", "J♣", "Q♠", "Q♥", "Q♦", "Q♣", "K♠", "K♥", "K♦", "K♣", "A♠", "A♥", "A♦", "A♣", "2♠", "2♥", "2♦", "2♣", "大♚", "小♔" }; boolean[] isTrue = new boolean[54];//设置一个boolean数组,来对应下标, int[] xiaBiao = new int[54]; int[] zhao = new int[17]; int[] liu = new int[17]; int[] zhang = new int[17]; int[] diZhuPai = new int[3]; DouDiZhu d = new DouDiZhu(); d.chushipai(pai); d.xiPai(pai, isTrue, xiaBiao); d.faPai(pai, xiaBiao, zhang, liu, zhao, diZhuPai); d.liPai(pai, zhang, zhao, liu); } //初始化牌,其实就是给输出一下pai[]数组 public void chushipai(String[] p) { System.out.print("初始化新牌:"); for (int i = 0; i System.out.println(); } System.out.print(p[i] + "\t"); } System.out.println(); } //洗牌 public void xiPai(String[] pai, boolean[] isTrue, int[] xiaBiao) { System.out.println("\n洗牌"); int temp = 0;//用来计数,看是否够54张牌, while (temp //执行的话证明还没有这个牌(下标) xiaBiao[temp] = p; temp++; System.out.print(pai[p] + " "); if (temp % 27 == 0) System.out.println(); isTrue[p] = true; } } } //发牌 public void faPai(String[] pai, int[] xiaBiao, int[] zhang, int[] liu, int[] zhao, int[] dizhupai) { System.out.print("\n开始发牌:"); int k = 0; int j = 0; while (j System.out.print(pai[zhang[i]] + " "); } System.out.print("\n赵云的牌为:"); for (int i =0; i System.out.print(pai[liu[i]] + " "); } int q=0; System.out.print("\n底牌:"); for (int i = 51; i System.out.print("\n\n理牌"); //把下标排序,根据下标取值 Arrays.sort(zhang); Arrays.sort(zhao); Arrays.sort(liu); System.out.print("\n张飞的牌为:"); for (int i = 0; i System.out.print(pai[zhao[i]] + " "); } System.out.print("\n刘备的牌为:"); for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3