你打过牌吗?
你想知道系统是如何把牌随机的分配给玩家的吗?
今天的代码将介绍(以斗地主为例)系统的发牌系统的·代码内容
接下来,去探寻以下吧!!!!!
一:当你什么都没有时,想打牌时要干什么?(买牌)
牌是由花色和数字和大小王组成
第1:创建两个数组
花色数组
String [] aa = {"♥","♣","♦","♠"}; //为了方便观看用图来代替
数字数组
String [] bb = {"3","4","5","6","7","8","9","10","J","Q","K","A","2",};
第2:通过创建两种集合来存放牌和牌的位置
Map< Integer, String> pokes = new HashMap(); //存放牌
List<Integer> liss = new ArrayList<Integer>(); //存放后面要用牌的位置
第3:通过遍历的方法来把牌的花色和数字结合在一起,并且把牌存放在集合中 (遍历是通过增强for的方法去遍历打印)
int sum=1; //这里定义的sum是最后输出牌做准备
for (String b1:bb) {
for(String a1:aa) {
String pai=a1+b1;
//System.out.println(pai);
pokes.put(sum, pai);
liss.add(sum);
sum++;
}
}
第4:将大小王两张牌放进集合中
pokes.put(sum, "小王");
liss.add(sum++);
pokes.put(sum, "大王");
liss.add(sum);
*这就是买牌的具体过程,接下来将输出打印和买牌的完整代码 *
Map< Integer, String> pokes = new HashMap();
List<Integer> liss = new ArrayList<Integer>();
String [] aa = {"♥","♣","♦","♠"};
String [] bb = {"3","4","5","6","7","8","9","10","J","Q","K","A","2",};
int sum=1;
for (String b1:bb) {
for(String a1:aa) {
String pai=a1+b1;
//System.out.println(pai);
pokes.put(sum, pai);
liss.add(sum);
sum++;
}
}
pokes.put(sum, "小王");
liss.add(sum++);
pokes.put(sum, "大王");
liss.add(sum);
System.out.println("牌"+pokes);
System.out.println("位置"+liss);
//输出两个集合的结果为:
//牌{1=♥3, 2=♣3, 3=♦3, 4=♠3, 5=♥4, 6=♣4, 7=♦4, 8=♠4, 9=♥5, 10=♣5, 11=♦5, 12=♠5, 13=♥6, 14=♣6, 15=♦6, 16=♠6, 17=♥7, 18=♣7, 19=♦7, 20=♠7, 21=♥8, 22=♣8, 23=♦8, 24=♠8, 25=♥9, 26=♣9, 27=♦9, 28=♠9, 29=♥10, 30=♣10, 31=♦10, 32=♠10, 33=♥J, 34=♣J, 35=♦J, 36=♠J, 37=♥Q, 38=♣Q, 39=♦Q, 40=♠Q, 41=♥K, 42=♣K, 43=♦K, 44=♠K, 45=♥A, 46=♣A, 47=♦A, 48=♠A, 49=♥2, 50=♣2, 51=♦2, 52=♠2, 53=小王, 54=大王}
//位置[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54]
二:当买完牌时要进行发牌。
第1:斗地主有三个玩家和底牌,所以需要四个集合来存放随机产生的数
List<Integer> ma = new ArrayList<Integer>();
List<Integer> yun = new ArrayList<Integer>();
List<Integer> cai = new ArrayList<Integer>();
List<Integer> di = new ArrayList<Integer>();
第2:发牌都是随机的,随机进行发牌
Collections.shuffle(liss); //通过Collextion工具类来随机产生牌
第3:把打乱的牌序,分发给三个玩家,并且留下三张底牌。
for(int i=0;i<liss.size();i++) {
Integer fa = liss.get(i);
System.out.println(fa);
if(i>=liss.size()-3) {
di.add(fa);
}
else if(i % 3==0) {
ma.add(fa);
}
else if(i % 3==1) {
yun.add(fa);
}
else if(i % 3==2) {
cai.add(fa);
}
}
***这就是发牌的具体过程,接下来将输出打印和发牌的完整代码 ***
List<Integer> ma = new ArrayList<Integer>();
List<Integer> yun = new ArrayList<Integer>();
List<Integer> cai = new ArrayList<Integer>();
List<Integer> di = new ArrayList<Integer>();
Collections.shuffle(liss);
System.out.println("洗好牌的的顺序"+liss);
for(int i=0;i<liss.size();i++) {
Integer fa = liss.get(i);
System.out.println(fa);
if(i>=liss.size()-3) {
di.add(fa);
}
else if(i % 3==0) {
ma.add(fa);
}
else if(i % 3==1) {
yun.add(fa);
}
else if(i % 3==2) {
cai.add(fa);
}
}
System.out.println("ma的牌:"+ma);
System.out.println("yun的牌:"+yun);
System.out.println("cai的牌:"+cai);
System.out.println("底牌:"+di);
//输出结果
//ma的牌:[41, 2, 34, 27, 54, 43, 13, 33, 21, 40, 20, 44, 49, 16, 51, 29, 3]
//yun的牌:[45, 36, 47, 15, 22, 26, 31, 35, 10, 38, 7, 39, 4, 9, 1, 52, 46]
//cai的牌:[28, 25, 17, 24, 30, 42, 12, 48, 8, 37, 50, 53, 6, 23, 11, 5, 32]
//底牌:[18, 14, 19]
三:以上的代码输出的都是数字,接下来进行输出打印牌
完整代码,在进行讲解
public static String pritepokes(List<Integer> nn,Map<Integer, String> mm) { //使用方法来进行转换
Collections.sort(nn); //升序:为了输出的牌是从小到大的。
StringBuffer pp = new StringBuffer(); //创建一个空列表,用来存放牌
for(Integer nnn:nn) { //这里是使用增强for的方法进行遍历打印
String poke = mm.get(nnn); //把对应的位置换成牌(把List集合 转换成对应 Map集合value值
pp.append(poke+" "); //将获得的值添加StringBuffer创建的空列表
}String str = pp.toString(); //方法返回的是String 进行转换
return str;
}
**下面将展示出完整代码和完整的输出结果: **
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class 买牌 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map< Integer, String> pokes = new HashMap();
List<Integer> liss = new ArrayList<Integer>();
String [] aa = {"♥","♣","♦","♠"};
String [] bb = {"3","4","5","6","7","8","9","10","J","Q","K","A","2",};
int sum=1;
for (String b1:bb) {
for(String a1:aa) {
String pai=a1+b1;
//System.out.println(pai);
pokes.put(sum, pai);
liss.add(sum);
sum++;
}
}
pokes.put(sum, "小王");
liss.add(sum++);
pokes.put(sum, "大王");
liss.add(sum);
System.out.println("牌"+pokes);
System.out.println("位置"+liss);
//发牌
List<Integer> ma = new ArrayList<Integer>();
List<Integer> yun = new ArrayList<Integer>();
List<Integer> cai = new ArrayList<Integer>();
List<Integer> di = new ArrayList<Integer>();
Collections.shuffle(liss);
System.out.println("洗好牌的的顺序"+liss);
for(int i=0;i<liss.size();i++) {
Integer fa = liss.get(i);
System.out.println(fa);
if(i>=liss.size()-3) {
di.add(fa);
}
else if(i % 3==0) {
ma.add(fa);
}
else if(i % 3==1) {
yun.add(fa);
}
else if(i % 3==2) {
cai.add(fa);
}
}
System.out.println("ma的牌:"+ma);
System.out.println("yun的牌:"+yun);
System.out.println("cai的牌:"+cai);
System.out.println("底牌:"+di);
System.out.println("ma的牌:"+pritepokes(ma, pokes));
System.out.println("yun的牌:"+pritepokes(yun, pokes));
System.out.println("cai的牌:"+pritepokes(cai, pokes));
System.out.println("底牌:"+pritepokes(di, pokes));
}
public static String pritepokes(List<Integer> nn,Map<Integer, String> mm) {
Collections.sort(nn); //升序
StringBuffer pp = new StringBuffer();
for(Integer nnn:nn) {
String poke = mm.get(nnn);
pp.append(poke+" ");
}String str = pp.toString();
return str;
}
}
输出结果:
牌{1=♥3, 2=♣3, 3=♦3, 4=♠3, 5=♥4, 6=♣4, 7=♦4, 8=♠4, 9=♥5, 10=♣5, 11=♦5, 12=♠5, 13=♥6, 14=♣6, 15=♦6, 16=♠6, 17=♥7, 18=♣7, 19=♦7, 20=♠7, 21=♥8, 22=♣8, 23=♦8, 24=♠8, 25=♥9, 26=♣9, 27=♦9, 28=♠9, 29=♥10, 30=♣10, 31=♦10, 32=♠10, 33=♥J, 34=♣J, 35=♦J, 36=♠J, 37=♥Q, 38=♣Q, 39=♦Q, 40=♠Q, 41=♥K, 42=♣K, 43=♦K, 44=♠K, 45=♥A, 46=♣A, 47=♦A, 48=♠A, 49=♥2, 50=♣2, 51=♦2, 52=♠2, 53=小王, 54=大王}
位置[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54]
洗好牌的的顺序[54, 48, 29, 52, 49, 16, 5, 26, 43, 27, 21, 47, 32, 12, 45, 7, 2, 51, 20, 14, 22, 50, 6, 4, 28, 34, 41, 9, 31, 35, 36, 11, 53, 40, 46, 42, 10, 17, 15, 25, 13, 39, 1, 38, 8, 3, 23, 19, 18, 33, 37, 24, 44, 30]
54
48
29
52
49
16
5
26
43
27
21
47
32
12
45
7
2
51
20
14
22
50
6
4
28
34
41
9
31
35
36
11
53
40
46
42
10
17
15
25
13
39
1
38
8
3
23
19
18
33
37
24
44
30
ma的牌:[54, 52, 5, 27, 32, 7, 20, 50, 28, 9, 36, 40, 10, 25, 1, 3, 18]
yun的牌:[48, 49, 26, 21, 12, 2, 14, 6, 34, 31, 11, 46, 17, 13, 38, 23, 33]
cai的牌:[29, 16, 43, 47, 45, 51, 22, 4, 41, 35, 53, 42, 15, 39, 8, 19, 37]
底牌:[24, 44, 30]
ma的牌:♥3 ♦3 ♥4 ♦4 ♥5 ♣5 ♣7 ♠7 ♥9 ♦9 ♠9 ♠10 ♠J ♠Q ♣2 ♠2 大王
yun的牌:♣3 ♣4 ♦5 ♠5 ♥6 ♣6 ♥7 ♥8 ♦8 ♣9 ♦10 ♥J ♣J ♣Q ♣A ♠A ♥2
cai的牌:♠3 ♠4 ♦6 ♠6 ♦7 ♣8 ♥10 ♦J ♥Q ♦Q ♥K ♣K ♦K ♥A ♦A ♦2 小王
底牌:♠8 ♣10 ♠K
**
这就是完整的讲解过程,如果还可以,留个什么都行。 感谢
**