java 斗地主

代码:

package com.oracle.demo02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class DouDiZhu {
    //斗地主(发牌)
    public static void main(String[] args) {
        //定义扑克牌Map
        HashMap<Integer, String> pooker=new HashMap<Integer,String>();
        //定义装有扑克牌号的集合
        ArrayList<Integer> pookerNumber=new ArrayList<Integer>();
        //封装数据
        String[] color={"♠","♦","♥","♣"};
        String[] number={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        int index=2;
        for (String n : number) {
            for (String c : color) {
                pooker.put(index, c+n);
                pookerNumber.add(index);
                index++;
            }
        }
        //封装大小王
        pooker.put(0, "大王");
        pooker.put(1, "小王");
        pookerNumber.add(0);
        pookerNumber.add(1);
        //测试
        //System.out.println(pooker);
        //洗牌:打乱集合中元素顺序(随机)--> Collections.shuffle();
        Collections.shuffle(pookerNumber);
        //System.out.println(pookerNumber);
        //创建四个容器
        ArrayList<Integer> player1=new ArrayList<Integer>();
        ArrayList<Integer> player2=new ArrayList<Integer>();
        ArrayList<Integer> player3=new ArrayList<Integer>();
        ArrayList<Integer> bottom=new ArrayList<Integer>();
        //发牌
        for (int i = 0; i < pookerNumber.size(); i++) {
            //将前三张牌作为底牌
            if (i<3) {
                bottom.add(pookerNumber.get(i));
            }else if(i%3==0){
                player1.add(pookerNumber.get(i));
            }else if(i%3==1){
                player2.add(pookerNumber.get(i));
            }else if(i%3==2){
                player3.add(pookerNumber.get(i));
            }
        }
        //为四个容器中的牌排序(理顺)--> Collections.sort();
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);
        Collections.sort(bottom);
        //看牌
        look("渣渣辉",pooker, player1);
        look("梁朝痿",pooker, player2);
        look("赵本仙",pooker, player3);
        look("底牌",pooker, bottom);
    }
    public static void look(String name,HashMap<Integer, String> pooker,ArrayList<Integer> player) {
        System.out.print(name+": ");
        for (int number : player) {
            System.out.print(pooker.get(number)+" ");
        }
        System.out.println();
    }
}

构思:

原文地址:https://www.cnblogs.com/l1314/p/12123620.html

时间: 2024-10-18 06:21:29

java 斗地主的相关文章

java斗地主

部分代码如下 Main.java package com; import java.awt.Color; import java.awt.Container; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Random

java斗地主游戏项目源码

部分代码如下Main.java package com; import java.awt.Color; import java.awt.Container; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Random;

java 18 - 12 模拟斗地主洗牌、发牌,并对发的牌进行排序

1 /* 2 模拟斗地主的发牌功能(发牌完毕后发到手上的牌是有顺序的) 3 分析: 4 A:创建一个HashMap集合 5 B:创建一个ArrayList集合 6 C:创建两个字符串,一个是花色,一个是牌的数字 (发牌得有一盒牌) 7 为了方便以后的排序,创建这两个字符串的时候,按照大小顺序排列(斗地主中的大小顺序) 8 大小王除外 9 D:把这两个字符串放进HashMap集合中(拼接一起 花色+牌号) 同时给每个放进去牌进行编码0--52并存储 10 同时也给ArrayList集合中存储编码,

Java集合练习:斗地主游戏

这是一个模拟斗地主的小游戏,最后看到的牌型是经过排序的,具体代码和解释如下: package cn.poker_test; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; /* * 模拟斗地主小游戏 * * 思路: * A:创建一个HashMap集合 * B:创建一个ArrayList集合 * C:创建花色数组和点数数组 *

java之实例斗地主(集合)

public class CollectionTest { /**  * 玩斗地主的三个步骤:  * A 买牌  * B 洗牌  * C 发牌  * D 看底牌  */ public static void main(String[] args) { String[] color={"黑桃","红桃","梅花","方块"};  String[] numbers={"A","2",&quo

Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class DouDiZhu { public static void main(String[] args) { // 创建Map集合,键

通过Java实现斗地主

功能:洗牌,发牌,对玩家手中的牌排序,看牌 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(Strin

JAVA面向对象编程课程设计——网络版单机斗地主

一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 吴修恩 JSP界面的设计,前后端数据的交互,servlet设计,动态更新界面 二.项目GIT地址 fight_against_landlords 三.项目git提交记录截图 四.项目功能架构图.主要功能流程图 五.面向对象设计类图 1.CardGames类图 2.CardGame类图 3.Card类图 4.UserUserInformation类图 5.User类图

Java基础之如何解决斗地主问题

    难的是逻辑的分析,把逻辑转化成代码是一种能力,这种能力需要多练习总结.     多多指教,共同进步. 问题: 要求实现斗地主游戏发牌过程,打印三个玩家的牌和底牌.在不看底牌的情况下,统计出三个玩家的炸弹数: S(small)代表小王,B(big)代表大王 ----------------------------------------------------------------------------------------------------------------------