java 模拟斗地主分派
2017-03-26 22:18
316 查看
斗地主分派java版
个人感觉java C的差不多都是算法的实现都差不多java的用对象存每个人的牌
C的话开块内存存一下 结构体 链表
主要思路是 1-54 分别代表不同的牌
比如
1234 红桃1黑桃1 梅花1 方块1
5678 红桃2黑桃2 梅花2 方块2
9 10 11 12 红桃3黑桃3 梅花3 方块3
你处理的就是1-54这写数字
闲来无事 写个玩玩
废话不多说上代码。
package java_03; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Random; public class T3 { public static void main(String[] args) { // 红桃 :heart黑桃 : spade梅花 : club方块 : diamond //1- 54 随机一个数 int [] count = randomArray(1, 54, 54); Person p1 = new Person("张三"); Person p2 = new Person("李四"); Person p3 = new Person("王五"); // System.out.println(count.length); for(int i = count.length-1;i>=3 ;i--){ //把牌平均分给3个人 int temp = i % 3 ; switch (temp) { case 0: p1.getList().add(count[i]); break; case 1: p2.getList().add(count[i]); break; case 2: p3.getList().add(count[i]); break; default: break; } } System.out.println("豪华斗地主v0.1"); System.out.println("----------------------"); System.out.println("分牌数量"); System.out.println("----------------------"); System.out.println(p1.getList().size()+"-1"); System.out.println(p2.getList().size()+"-2"); System.out.println(p3.getList().size()+"-3"); System.out.println("-------------------- 4000 --"); System.out.println("分牌结果"); // System.out.println("底牌:" + count[51]+","+count[52]+","+count[53]); System.out.println("底牌:" + getName(count[0])+","+getName(count[1])+","+getName(count[2])); System.out.println("----------------------"); //没啥好说的,打印出三个人的牌 //第1个人 System.out.println(p1.getName()); Iterator<Integer> i1 = p1.getList().iterator(); while (i1.hasNext()) { int temp = i1.next(); System.out.print(getName(temp)+","); } System.out.println(); System.out.println(); //第2个人 System.out.println(p2.getName()); Iterator<Integer> i2 = p2.getList().iterator(); while(i2.hasNext()){ int temp = i2.next(); System.out.print(getName(temp)+","); } System.out.println(); System.out.println(); //第3个人 System.out.println(p3.getName()); Iterator<Integer> i3 = p3.getList().iterator(); while(i3.hasNext()){ int temp = i3.next(); System.out.print(getName(temp)+","); } } //这个方法是获取这张牌是什么花色.比如梅花3 红桃3 //原理其实很简单。就是54张牌分别对应不同的花色 //1234 分别是红心3梅花3黑桃3方块3 //5678 分别是红心4梅花4黑桃4方块4 依次类推 //方便判断 牌的大小 public static String getName(int temp){ if(temp % 4 == 0){ return "方块"+temp/4; } int res = temp/4; int count = temp - res * 4; if(res >=13){ if(count == 2){ return "小王"; }else{ return "大王"; } } int i = res + 1; String s = ""; switch (count) { case 1: //红桃 s += "红桃"+i; break; case 2: //黑桃 s += "黑桃"+i; break; case 3: //梅花 s += "梅花"+i; break; default: break; } return s; } //这儿方法是随机产生1-54 数字不重复模拟洗牌 public static int[] randomArray(int min,int max,int n){ int len = max-min+1; if(max < min || n > len){ return null; } //初始化给定范围的待选数组 int[] source = new int[len]; for (int i = min; i < min+len; i++){ source[i-min] = i; } int[] result = new int ; Random rd = new Random(); int index = 0; for (int i = 0; i < result.length; i++) { //待选数组0到(len-2)随机一个下标 index = Math.abs(rd.nextInt() % len--); //将随机到的数放入结果集 result[i] = source[index]; //将待选数组中被随机到的数,用待选数组(len-1)下标对应的数替换 source[index] = source[len]; } return result; } } //用面向对象来存放每个人手中的牌 //你也可以对手中的牌进行排序只要对list进行排序就行了, //由于博主比较懒没排序 请见谅 class Person{ private String name; private ArrayList<Integer> list; public Person(String name) { list = new ArrayList<Integer>(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public ArrayList<Integer> getList() { return list; } public void setList(ArrayList<Integer> list) { this.list = list; } }
相关文章推荐
- java模拟斗地主发牌(CollectionsDemo)
- Java基础知识强化之集合框架笔记71:模拟斗地主洗牌和发牌并对牌进行排序的案例
- Java模拟 双分派Double Dispatch
- 大数据之JAVA基础(十七):集合--模拟斗地主洗牌和发牌
- Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)
- 利用java集合模拟斗地主(发牌)
- Java模拟斗地主发牌和洗牌
- Java模拟斗地主洗牌、发牌和对牌排序
- java模拟斗地主发牌看牌
- java-模拟斗地主的洗牌和发牌
- Java基础知识强化之集合框架笔记70:模拟斗地主洗牌和发牌(ArrayList)
- 用java编写模拟斗地主洗牌发牌程序
- JAVA-11.3-模拟斗地主洗牌、发牌、并进行排序(集合)
- Java_基础—模拟斗地主洗牌和发牌并对牌进行排序
- 用java模拟斗地主洗牌和发牌
- Java实现--模拟斗地主的洗牌和发牌
- 黑马程序员——用java模拟斗地主洗牌和发牌
- Java中使用HashMap,TreeSet和List来实现模拟斗地主的洗牌和发牌的小例子
- java学习笔记(二十五)模拟斗地主发牌与洗牌
- java中用HashMap,ArrayList,TreeMap实现一个模拟斗地主发牌的用例