Java 用集合实现简单的斗地主发牌
创建数组、集合,存放数据
public class FightAgainstLandlords {
/**
* poker集合,存储54张牌
*/
private ArrayList<String> poker;
/**
* colors数组存储牌的花色
*/
private String[] colors;
/**
* numbers数组存储牌的值
*/
private String[] numbers;
}
构造方法FightAgainstLandlords
public class FightAgainstLandlords {
public FightAgainstLandlords(ArrayList<String> poker, String[] colors, String[] numbers) {
this.poker = poker;
this.colors = colors;
this.numbers = numbers;
}
}
定义打乱牌牌序方法
public class FightAgainstLandlords {
/**
* 存储54张牌
*/
public ArrayList<String> fiftyFive() {
for (String color: colors) {
for (String number: numbers) {
poker.add(color + number);
}
}
poker.add("大王");
poker.add("小王");
// 洗牌,调用Collections类的静态方法shuffle(),用默认随机源对指定列表进行置换
Collections.shuffle(poker);
return poker;
}
}
发牌
public class FightAgainstLandlords {
/**
* 发牌
* 获取玩家牌或者底牌
* j = 1, 2, 3 代表玩家牌
* j = 其他数字 代表底牌
*/
public ArrayList<String> licensing(int j, ArrayList<String> pokers) {
// 三个玩家
ArrayList<String> people1 = new ArrayList<>();
ArrayList<String> people2 = new ArrayList<>();
ArrayList<String> people3 = new ArrayList<>();
// 底牌
ArrayList<String> basePoker = new ArrayList<>();
for (int i = 0; i < pokers.size(); i++) {
String p = pokers.get(i);
if ( i < 51) {
if (i % 3 == 0) {
people1.add(p);
} else if (i % 3 == 1) {
people2.add(p);
} else {
people3.add(p);
}
} else {
basePoker.add(p);
}
}
// 返回玩家的牌、底牌
if (j == 1) {
return people1;
} else if (j == 2) {
return people2;
} else if (j == 3) {
return people3;
} else {
return basePoker;
}
}
}
测试FightAgainstLandlords类
import java.util.ArrayList;
public class DemoFightAgainstLandlords {
public static void main(String[] args) {
ArrayList<String> poker = new ArrayList<>();
String[] colors = {"红桃", "黑桃", "梅花", "方块"};
String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
// new一个斗地主
FightAgainstLandlords fightAgainstLandlords = new FightAgainstLandlords(poker, colors, numbers);
// 54张牌
ArrayList<String> pokers = fightAgainstLandlords.fiftyFive();
// 获取每个人的牌,和底牌
ArrayList<String> people1 = fightAgainstLandlords.licensing(1, pokers);
ArrayList<String> people2 = fightAgainstLandlords.licensing(2, pokers);
ArrayList<String> people3 = fightAgainstLandlords.licensing(3, pokers);
ArrayList<String> basePoker = fightAgainstLandlords.licensing(4, pokers);
// 看一下它们每个人的牌,和底牌
System.out.println("people1:" + people1);
System.out.println("people2:" + people2);
System.out.println("people3:" + people3);
System.out.println("basePoker:" + basePoker);
}
}
输出结果(每个人的牌,和底牌都是随机的):
people1:[红桃3, 梅花J, 梅花K, 方块J, 方块K, 梅花10, 红桃6, 梅花9, 黑桃Q, 红桃Q, 梅花4, 黑桃A, 方块2, 红桃8, 方块4, 黑桃8, 红桃K]
people2:[梅花A, 方块3, 小王, 黑桃J, 红桃7, 方块5, 方块9, 黑桃10, 方块8, 梅花Q, 方块6, 梅花6, 红桃10, 方块Q, 黑桃5, 黑桃2, 红桃A]
people3:[梅花5, 梅花8, 黑桃7, 黑桃4, 红桃9, 黑桃9, 黑桃K, 方块7, 黑桃6, 梅花3, 方块10, 红桃4, 黑桃3, 红桃5, 大王, 红桃J, 方块A]
basePoker:[红桃2, 梅花2, 梅花7]
FightAgainstLandlords类的所有代码
import java.util.ArrayList;
import java.util.Collections; public class FightAgainstLandlords {
/**
* poker集合,存储54张牌
* 不是斗地主也可以存储52张牌(不存储大王、小王牌)
*/
private ArrayList<String> poker; /**
* colors数组存储牌的花色
*/
private String[] colors; /**
* numbers数组存储牌的值
*/
private String[] numbers; public FightAgainstLandlords(ArrayList<String> poker, String[] colors, String[] numbers) {
this.poker = poker;
this.colors = colors;
this.numbers = numbers;
} /**
* 存储54张牌
*/
public ArrayList<String> fiftyFive() {
for (String color: colors) {
for (String number: numbers) {
poker.add(color + number);
}
}
poker.add("大王");
poker.add("小王");
// 洗牌,调用Collections类的静态方法shuffle(),用默认随机源对指定列表进行置换
Collections.shuffle(poker);
return poker;
} /**
* 发牌
* 获取玩家牌或者底牌
* j = 1, 2, 3 代表玩家牌
* j = 其他数字 代表底牌
*/
public ArrayList<String> licensing(int j, ArrayList<String> pokers) {
// 三个玩家
ArrayList<String> people1 = new ArrayList<>();
ArrayList<String> people2 = new ArrayList<>();
ArrayList<String> people3 = new ArrayList<>();
// 底牌
ArrayList<String> basePoker = new ArrayList<>(); for (int i = 0; i < pokers.size(); i++) {
String p = pokers.get(i);
if ( i < 51) {
if (i % 3 == 0) {
people1.add(p);
} else if (i % 3 == 1) {
people2.add(p);
} else {
people3.add(p);
}
} else {
basePoker.add(p);
}
} // 返回玩家的牌、底牌
if (j == 1) {
return people1;
} else if (j == 2) {
return people2;
} else if (j == 3) {
return people3;
} else {
return basePoker;
}
}
}
Java 用集合实现简单的斗地主发牌的更多相关文章
- Java Linked集合的简单介绍和常用方法的使用
LinkedList的简单介绍 java.util.LinkedList 集合数据存储的结构是链表结构.LinkedList是一个双向链表在实际开发中,对一个集合元素的添加和删除,经常涉及到首尾操作, ...
- Java用集合实现斗地主发牌
本文以java双列集合HashMap为核心实现发牌操作: 思路: 1.准备牌:创建一个Map集合,存储牌的索引和组装好的牌 创建一个lis ...
- 使用Java实现简单的斗地主案例
使用Java实现简单的斗地主案例 案例说明:使用Java实现简单的斗地主洗牌发牌的操作: 具体规则: 共有54张牌,顺序打乱: 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后留三张为底牌(地主牌) ...
- Java基础-集合的嵌套
Java基础-集合的嵌套 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.静态导入 静态导入是在JDK1.5后的新特性,可以减少开发的代码量,但是实际用处是很一般,静态导入的标准 ...
- 计算机网络(13)-----java nio手动实现简单的http服务器
java nio手动实现简单的http服务器 需求分析 最近在学习HTTP协议,还是希望动手去做一做,所以就自己实现了一个http服务器,主要功能是将http请求封装httpRequest,通过解析 ...
- Github优秀java项目集合(中文版) - 涉及java所有的知识体系
Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容 ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- 谈谈Java的集合组件
让我们一起谈谈Java的集合组件 我们在使用Java的时候,都会遇到并使用到Java的集合.在这里通过自己的理解和网上的资源对Java的集合方面的使用做一个简单的讲解和总结. Java主要分为3个集合 ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
随机推荐
- H3C 帧中继数据链路标识
- Python--day47--mysql索引注意事项
- servicemix 实例 -- 参考open source ESBs in action这本书
1. 项目结构 2. bean服务处理单元 1)Person类 package esb.chapter3; import java.io.StringWriter; import javax.xml. ...
- java基本数据类型和包装类相互转换
把基本数据类型 → 包装类: 通过对应包装类的构造方法实现 除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象. 包装类 → 基本数据类型 包装类的实例方法xxxValue() ...
- python编程设计模式之接口类和抽象类
接口类 """ 接口类 是一种编程设计模式,在python原本没有接口类 借用Java思想创建的一种规范设计模式 支持多继承,进行多方面规范 ""&q ...
- 21个项目玩转深度学习:基于TensorFlow的实践详解06—人脸检测和识别——项目集锦
摘自:https://github.com/azuredsky/mtcnn-2 mtcnn - Multi-task CNN library language dependencies comment ...
- 微信小程序之在线答题(2)
Tips:前端进阶的概念一直比较模糊,我们往往以掌握知识的多少来划分初级中级和高级,但这并不全面,谁都不能保证自己掌握的知识是最全最好的,尤其在前端工程师这个职业,每天都是日新月异. 所以,我认为要分 ...
- 2019-9-3-win10-uwp-收集-DUMP-文件
title author date CreateTime categories win10 uwp 收集 DUMP 文件 lindexi 2019-09-03 17:48:44 +0800 2018- ...
- 【t050】方程求解
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 要求Xi(i = 1,2,3,4)是一个[-T..T]中的整数,满足方程AX1 + BX2 + CX3 ...
- vue-learning:41 - Vuex - 第二篇:const store = new Vue.Store(option)中option选项、store实例对象的属性和方法
vuex 第二篇:const store = new Vue.Store(option)中option选项.store实例对象的属性和方法 import Vuex from 'vuex' const ...