热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JAVA实现网页版斗地主_Java实现斗地主案例

本文实例为大家分享了Java实现斗地主的具体代码,供大家参考,具体内容如下importjava.util.ArrayList;importjava.ut

本文实例为大家分享了Java实现斗地主的具体代码,供大家参考,具体内容如下

import java.util.ArrayList;

import java.util.Collections;

public class DemoPoker {

public static void main(String[] args) {

/**

*一、准备牌

普通牌:2 A K...3

花色:♥ ♠ ♣ ♦

王牌:大王 小王

创建一个集合,把牌组装之后存进去

*/

String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};

String[] colors = {"♥", "♠", "♣", "♦"};

ArrayList pokerBox &#61; new ArrayList<>();

for (String color : colors) {

for (String number : numbers) {

pokerBox.add(color &#43; number);

}

}

pokerBox.add("大王");

pokerBox.add("小王");

/**

* 二、洗牌

static void shuffle​(List> list) 使用默认的随机源随机置换指定的列表。

此处为了输出结果工整所以没有直接输出集合

*/

Collections.shuffle(pokerBox);

for (int i &#61; 0; i

System.out.print(pokerBox.get(i)&#43;"\t");

if (i&#61;&#61;26) {

System.out.println();

}

}

System.out.println();

/**

* 三、发牌

遍历集合&#xff0c;用索引%3发牌&#xff0c;余0给玩家1&#xff0c;余1给玩家2&#xff0c;余2给玩家3

索引0-50是玩家的牌&#xff0c;51-53是底牌

*/

//玩家一

ArrayList player01 &#61; new ArrayList<>();

//玩家二

ArrayList player02 &#61; new ArrayList<>();

//玩家三

ArrayList player03 &#61; new ArrayList<>();

//底牌

ArrayList diPai &#61; new ArrayList<>();

for (int i &#61; 0; i

String faces &#61; pokerBox.get(i);

if (i>&#61;51) {

diPai.add(faces);

} else if (i%3&#61;&#61;0) {

player01.add(faces);

} else if (i%3&#61;&#61;1) {

player02.add(faces);

} else if (i%3&#61;&#61;2) {

player03.add(faces);

}

}

/**

* 四、看牌

直接输出每位玩家的集合

*/

System.out.println("张无忌"&#43;player01);

System.out.println("张翠山"&#43;player02);

System.out.println("殷素素"&#43;player03);

System.out.println("底牌"&#43;diPai);

}

}

带排序版的

package com.demo_2.poker;

import java.util.Collections;

import java.util.HashMap;

import java.util.LinkedList;

import java.util.List;

public class Poker {

/**

*一共要四步。一、备牌 二、洗牌 三、发牌 四、看牌

目的&#xff1a;练习集合的用法

*/

public static void main(String[] args) {

/**

* 第一步&#xff1a;备牌

使用List接口中的of()方法添加并分别创建numbers和colors集合

*/

//numbers&#xff1a;存储普通牌 2、A、K...3从大到小

List numbers &#61; List.of("2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");

//colors&#xff1a;存储四种花色 ♥、♠、♦、♣

List colors &#61; List.of("♥", "♠", "♦", "♣");

//创建一个Map集合存储索引和组装好的牌

HashMap pokerBox &#61; new HashMap<>();

//创建一个List集合储存牌的索引

LinkedList pokerIndex &#61; new LinkedList<>();

//先把大王、小王和下标分别放进Map的键和值里面,再向LinkedList里面存储下标&#xff0c;下标增加1

int index &#61; 0;

pokerBox.put(index, "大王");

pokerIndex.add(index);

index&#43;&#43;;

pokerBox.put(index, "小王");

pokerIndex.add(index);

index&#43;&#43;;

//组装牌&#xff1a;遍历两个List集合&#xff0c;使用Map接口中的put()方法给pokerBox添加键和值&#xff0c;并给LinkedList传下标

for (String number : numbers) {

for (String color : colors) {

pokerBox.put(index, color &#43; number);

pokerIndex.add(index);

index&#43;&#43;;

}

}

/**

* 第二步&#xff1a;洗牌

使用Collocations类中的shuffler方法&#xff0c;传递参数pokerIndex

*/

Collections.shuffle(pokerIndex);

/**

* 第三步&#xff1a;发牌

创建四个List集合&#xff0c;分别存储三位玩家和底牌

使用for循环遍历pokerIndex&#xff0c;i%3结果为0的给玩家1&#xff0c;1的给玩家2&#xff0c;2的给玩家3

*/

LinkedList player01 &#61; new LinkedList<>();

LinkedList player02 &#61; new LinkedList<>();

LinkedList player03 &#61; new LinkedList<>();

LinkedList diPai &#61; new LinkedList<>();

for (int i &#61; 0; i

Integer in &#61; pokerIndex.get(i);

if (i >&#61; 51) {

diPai.add(in);

} else if (i % 3 &#61;&#61; 0) {

player01.add(in);

} else if (i % 3 &#61;&#61; 1) {

player02.add(in);

} else if (i % 3 &#61;&#61; 2) {

player03.add(in);

}

}

//给玩家的牌排序&#xff0c;使用Collocations接口中的sort()方法排序

Collections.sort(player01);

Collections.sort(player02);

Collections.sort(player03);

Collections.sort(diPai);

/**

*第四步&#xff1a;看牌

遍历排过序的List集合作为Map集合的键值获取对应的值

为提高代码复用性定义一个方法代替

*/

print("令狐冲",player01,pokerBox);

print("诸葛瑾",player02,pokerBox);

print("司马懿",player03,pokerBox);

print("底牌",diPai,pokerBox);

}

/**

*看牌的方法&#xff1a;

参数&#xff1a;

String name

LinkedList list

HashMap map

*/

public static void print(String name,LinkedList list,HashMap map){

System.out.print(name&#43;"&#xff1a;");

for (Integer key : list) {

System.out.print(map.get(key)&#43;" ");

}

System.out.println();

}

}

以上就是本文的全部内容&#xff0c;希望对大家的学习有所帮助&#xff0c;也希望大家多多支持聚米学院。



推荐阅读
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
author-avatar
蘑菇-2166_315
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有