功能:洗牌,发牌,对玩家手中的牌排序,看牌

package demo06;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; /**
*
* @author Administrator
* 实现模拟斗地主的功能
* 1.组合牌
* 2.洗牌
* 3.发牌
* 4.看牌
*/
public class DouDiZhu {
public static void main(String[] args) {
//1. 组合牌
//创建Map集合,键是编号,值是牌
HashMap<Integer, String> pooker=new HashMap<>();
//创建List集合,存储编号
ArrayList<Integer> pookerNumber=new ArrayList<>();
//定义出13个点数的数组
String[] numbers = {"2","A","K","Q","J","10","9","8",
"7","6","5","4","3"};
//定义四个花色数组
String[] colors={"♥","♠","♣","♦"};
//定义整数变量,作为键出现
int index=2; //先避开大小王
//遍历数组,花色+点数的组合存储到Map集合
for(String number:numbers){
for(String color:colors){
pooker.put(index,color+number);
pookerNumber.add(index);
index++;
}
}
//存储大王,和小王
pooker.put(0, "大王");
pookerNumber.add(0);
pooker.put(1, "小王");
pookerNumber.add(1); //洗牌,将牌的编号打乱
Collections.shuffle(pookerNumber); //发牌功能,将牌编号,发给玩家集合,底牌集合
ArrayList<Integer> player1=new ArrayList<>();
ArrayList<Integer> player2=new ArrayList<>();
ArrayList<Integer> player3=new ArrayList<>();
ArrayList<Integer> bottom=new ArrayList<>(); //发牌采用的是集合索引%3
for(int i=0;i<pookerNumber.size();i++){
//先将底牌做好
if(i<3){
//存到底牌去
bottom.add(pookerNumber.get(i));
} //对索引%3判断
else if(i%3==0){
//索引上的编号,发给玩家1
player1.add(pookerNumber.get(i));
}else if(i%3==1){
//索引上的编号,发给玩家2
player2.add(pookerNumber.get(i));
}else if(i%3==2){
//索引上的编号,发给玩家3
player3.add(pookerNumber.get(i));
}
}
//对玩家手中的编号排序
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
//看牌,将玩家手中的编号,到Map集合中查找,根据键找值
look("刘德华",player1,pooker);
look("张学友",player2,pooker);
look("黎明",player3,pooker);
look("底牌",bottom,pooker); }
public static void look(String name,ArrayList<Integer> player,HashMap<Integer, String> pooker){
//遍历ArrayList集合,获取元素,作为键,到集合Map中找值
System.out.println(name+":");
for(Integer key:player){
String value=pooker.get(key);
System.out.print(value+" ");
}
System.out.println();
}
}

通过Java实现斗地主的更多相关文章

  1. 用Java制作斗地主

    首先,按照斗地主规则,完成洗牌发牌的动作.如图: 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 4. 查看三人各 ...

  2. java模拟斗地主发牌看牌

    import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...

  3. Java模拟斗地主发牌和洗牌

    package cn.itcast_04; import java.util.ArrayList; import java.util.Collections; import java.util.Has ...

  4. Java实现斗地主发牌(Collections工具类的应用)

    package com.doudou_01; import java.util.ArrayList; import java.util.Collections; import java.util.Li ...

  5. Java模拟斗地主(实现大小排序)

    import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Li ...

  6. java之斗地主

    hashmap集合+ArrayList集合+Collections集合工具类shuffle()和sort()hashmap中get(key).put(key/value)Arraylist中的add( ...

  7. Java 模拟斗地主

    模拟斗地主 public class M1 { public static void main(String args[]) { DouDiZhu02(); } private static void ...

  8. Java程序斗地主发牌代码,List、Map集合的应用

    Java集合存储的灵活运用List集合存储 54个编号 Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2 用2 ...

  9. java 模拟斗地主发牌洗牌

    一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...

随机推荐

  1. Labyrinth POJ - 1383

    Labyrinth POJ - 1383 The northern part of the Pyramid contains a very large and complicated labyrint ...

  2. BZOJ - 2744 朋友圈 (二分图上的最大团)

    [题目大意] 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着.一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目.两 ...

  3. [Uva1642]魔法Gcd(数论)

    Description 给定n个数,某个连续区间[L,R]的收益为\(gcd(A_l,A_{l+1},A_{l+2}...A_r)*(r-l+1)\), 求收益最大的区间的收益值 \(1 \leq n ...

  4. 使用tensorflow设计的网络模型看不到数据流向怎么办

    首先tensorflow的设计思想就是先把需要用的变量已张量的形式保存, 实际上并没有实质的数值填充. 然后设计网络架构,也仅仅是架构而已, 只能说明数据关系和层与层之间的关系. 真正的数据输入是在主 ...

  5. Nhibernate官方体系结构图部分中文翻译

    原文链接 :http://nhibernate.info/doc/nh/en/index.html#architecture 体系结构图 高度抽象NHibernate体系架构图 这幅图展示了NHibe ...

  6. 【Combination Sum 】cpp

    题目: Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C  ...

  7. 【NOIP 2017 普及组】 跳房子

    裸的单调队列优化dp+二分 我居然还调了挺久 日常审题错误 #include <bits/stdc++.h> using namespace std; typedef long long ...

  8. IOS开发学习笔记035-UIScrollView-自动滚动

    让图片自动滚动的话,需要使使用定时器,循环计算当前页的页码.并且在拖动图片时停止计时器,停止拖动时启动计时器. 定时器 方法1: performSelector [self performSelect ...

  9. Leetcode 553.最优除法

    最优除法 给定一组正整数,相邻的整数之间将会进行浮点除法操作.例如, [2,3,4] -> 2 / 3 / 4 . 但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级.你需要找出怎么添 ...

  10. mysql的下载及配置(复制1)

    ---恢复内容开始--- MySQL数据库安装与配置详解 目录 一.概述 二.MySQL安装 三.安装成功验证 四.NavicatforMySQL下载及使用 一.概述 MySQL版本:5.7.17 下 ...