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

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. JZOJ 5842

    Description 给定一个n*m 的 01 矩阵,求包含[l,r]个 1 的子矩形个数. Input 第一行,两个正整数n,m.接下来n 行,每行一个长度为 m 的 01 串,表示给定的矩阵.接 ...

  2. 25.VUE学习之-单击和双击事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. DAG上的动态规划——嵌套矩阵问题

    问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它的长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d,或者b<c,a<d(相当于把矩形X旋 ...

  4. [洛谷P1168]中位数(Splay)/(主席树)

    Description 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], -, A[2k - 1]的中位数.即前1,3,5,--个数的 ...

  5. python之随机数random模块

    random模块:用于生成随机数 import random #random模块:用于生成随机数 li = [] for i in range(7): r = random.randrange(0,3 ...

  6. 利用本地SQL Server维护计划来维护SQL Database

    On-Premise的SQL Server提供了维护计划来定期.定时的维护SQL Server.一般的做法是:定义SQL Server Agent Jobs,而后维护计划帮助我们定期.定时执行SQL ...

  7. Maya建模命令

    Surface-Loft(放样)在两条曲线中间生成曲面Section Radius 改变圆环的圆环半径Edit Mesh- Merge 点连结挤压 keep face together(整体挤压),若 ...

  8. 网络流24题:P2762 太空飞行计划问题

    P2762 太空飞行计划问题 题目背景 题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,E ...

  9. 平衡树 - Luogu 1486 郁闷的出纳员

    这么久没写平衡树了,再来一发... P1486 郁闷的出纳员 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的 ...

  10. python - 接口自动化测试 - HttpRequest - 接口测试类封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: http_request.py @ide: PyCharm ...