package Demo2;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
/*
* 斗地主程序
* 核心思想是把纸牌通过Map集合封装起来
* 思路
* 1,造纸牌.Map集合
* 2,发牌,给玩家分发数字(后期可以对应到牌)
* 3,匹配,通过玩家集合中的数字找到Map集合中的Value
*/
public class DouDemo {
public static void main(String[] args) {
//1.造牌
//先造花色
ArrayList<String> color=new ArrayList<String>();
Collections.addAll(color, "♥","♣","♠","♦");
//再造牌的点数
ArrayList<String> number=new ArrayList<String>();
Collections.addAll(number, "3","4","5","6","7","8","9","10","J","Q","K","A","2");
//再造Map集合,真正的牌
HashMap<Integer,String> map=new HashMap<>();
//增强for循环
int index=0;
for(String key:number){
for(String value:color){
//Map集合中Key是数字,int类型;Value是字符串
map.put(index++, key+value);
}
}
map.put(index++,"小王");
map.put(index++, "大王");
//-----------------------扑克牌制造完毕.--------------------
//2,发牌.创建一个包含54个元素的集合,把这54个数字分给3个玩家和底牌
ArrayList<Integer> key=new ArrayList<Integer>();
for (int i = 0; i < 54; i++) {
key.add(i);
}
//打乱顺序
Collections.shuffle(key);
//发给3个玩家和底牌
ArrayList<Integer> keyPlay1=new ArrayList<Integer>();
ArrayList<Integer> keyPlay2=new ArrayList<Integer>();
ArrayList<Integer> keyPlay3=new ArrayList<Integer>();
ArrayList<Integer> keyCards=new ArrayList<Integer>();
//打乱顺序后的数字集合,角标对应的就不是里面的数字了,所以,循环把54个角标值赋值给玩家后,玩家集合里的数字也是乱的
for(int i=0;i<key.size();i++){
if(i>=51){
keyCards.add(key.get(i));
}
else if(i%3==0){
keyPlay1.add(key.get(i));
}
else if(i%3==1){
keyPlay2.add(key.get(i));
}
else{
keyPlay3.add(key.get(i));
}
}
//对玩家的牌进行排序,符合常规玩法的码牌规则
Collections.sort(keyPlay1);
Collections.sort(keyPlay2);
Collections.sort(keyPlay3);
//让玩家集合中的数字(Key)与Map集合产生关系
ArrayList<String> valuePlay1=new ArrayList<>();
ArrayList<String> valuePlay2=new ArrayList<>();
ArrayList<String> valuePlay3=new ArrayList<>();
ArrayList<String> valueCards=new ArrayList<>();
for(Integer key1:keyPlay1){
valuePlay1.add(map.get(key1));
}
for(Integer key1:keyPlay2){
valuePlay2.add(map.get(key1));
}
for(Integer key1:keyPlay3){
valuePlay3.add(map.get(key1));
}
for(Integer key1:keyCards){
valueCards.add(map.get(key1));
}
System.out.println(valuePlay1);
System.out.println(valuePlay2);
System.out.println(valuePlay3);
System.out.println(valueCards);
}
}
[AppleScript] 纯文本查看 复制代码 package Demo2;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
/*
* 斗地主程序
* 核心思想是把纸牌通过Map集合封装起来
* 思路
* 1,造纸牌.Map集合
* 2,发牌,给玩家分发数字(后期可以对应到牌)
* 3,匹配,通过玩家集合中的数字找到Map集合中的Value
*/
public class DouDemo {
public static void main(String[] args) {
//1.造牌
//先造花色
ArrayList<String> color=new ArrayList<String>();
Collections.addAll(color, "♥","♣","♠","♦");
//再造牌的点数
ArrayList<String> number=new ArrayList<String>();
Collections.addAll(number, "3","4","5","6","7","8","9","10","J","Q","K","A","2");
//再造Map集合,真正的牌
HashMap<Integer,String> map=new HashMap<>();
//增强for循环
int index=0;
for(String key:number){
for(String value:color){
//Map集合中Key是数字,int类型;Value是字符串
map.put(index++, key+value);
}
}
map.put(index++,"小王");
map.put(index++, "大王");
//-----------------------扑克牌制造完毕.--------------------
//2,发牌.创建一个包含54个元素的集合,把这54个数字分给3个玩家和底牌
ArrayList<Integer> key=new ArrayList<Integer>();
for (int i = 0; i < 54; i++) {
key.add(i);
}
//打乱顺序
Collections.shuffle(key);
//发给3个玩家和底牌
ArrayList<Integer> keyPlay1=new ArrayList<Integer>();
ArrayList<Integer> keyPlay2=new ArrayList<Integer>();
ArrayList<Integer> keyPlay3=new ArrayList<Integer>();
ArrayList<Integer> keyCards=new ArrayList<Integer>();
//打乱顺序后的数字集合,角标对应的就不是里面的数字了,所以,循环把54个角标值赋值给玩家后,玩家集合里的数字也是乱的
for(int i=0;i<key.size();i++){
if(i>=51){
keyCards.add(key.get(i));
}
else if(i%3==0){
keyPlay1.add(key.get(i));
}
else if(i%3==1){
keyPlay2.add(key.get(i));
}
else{
keyPlay3.add(key.get(i));
}
}
//对玩家的牌进行排序,符合常规玩法的码牌规则
Collections.sort(keyPlay1);
Collections.sort(keyPlay2);
Collections.sort(keyPlay3);
//让玩家集合中的数字(Key)与Map集合产生关系
ArrayList<String> valuePlay1=new ArrayList<>();
ArrayList<String> valuePlay2=new ArrayList<>();
ArrayList<String> valuePlay3=new ArrayList<>();
ArrayList<String> valueCards=new ArrayList<>();
for(Integer key1:keyPlay1){
valuePlay1.add(map.get(key1));
}
for(Integer key1:keyPlay2){
valuePlay2.add(map.get(key1));
}
for(Integer key1:keyPlay3){
valuePlay3.add(map.get(key1));
}
for(Integer key1:keyCards){
valueCards.add(map.get(key1));
}
System.out.println(valuePlay1);
System.out.println(valuePlay2);
System.out.println(valuePlay3);
System.out.println(valueCards);
}
}
|
|