妞一个斗地主发牌程序!!!

学习java三个星期,利用所学的知识做了一个三人斗地主发牌程序,闲话少叙,上代码

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.List;
 4
 5 /**
 6  * 三人斗地主程序 功能:将一副牌随机分发给地主(20张牌),农民A(17张牌),农民B (17张牌)
 7  * 步骤:1、洗牌阶段:将54张牌储存到ArraryList 容器中(批量储存,for循环)
 8  * 2、发牌阶段:打乱数组中元素的顺序,取出三个元素,首先放到装有地主牌的容器中 利用for循环嵌套,分段给牌(存数据)到地主、农民A、农民B
 9  * 三个容器当中,一家17张,外层循环控制循环次数,内层循环控制每家的牌数
10  *
11  * @author kimi
12  *
13  */
14
15 public class Landlords {
16     public static void play() {
17         String[] arr = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; // 定义数组用来储存基本牌组
18         List<String> pokerList = new ArrayList<>(); // 定义容器存储54张牌
19         List<String> xList = new ArrayList<>(); // 定义容器储存地主的牌
20         List<String> aList = new ArrayList<>(); // 定义容器储存农民A的牌
21         List<String> bList = new ArrayList<>(); // 定义容器存储农民B的牌
22         for (int i = 0; i < arr.length; i++) {
23             pokerList.add("红桃" + arr[i]);
24             pokerList.add("黑桃" + arr[i]); // 循环存入数据
25             pokerList.add("梅花" + arr[i]);
26             pokerList.add("方块" + arr[i]);
27         }
28         pokerList.add("大鬼");
29         pokerList.add("小鬼");
30         Collections.shuffle(pokerList); // 打乱牌组的顺序
31         xList.add(pokerList.get(0));
32         xList.add(pokerList.get(1)); // 复制三张牌给地主
33         xList.add(pokerList.get(2));
34         pokerList.remove(0);
35         pokerList.remove(1); // 删除牌组中的三张牌
36         pokerList.remove(2);
37         // ----------开始发牌----------------
38         for (int i = 0; i < 17; i++) {
39             xList.add(pokerList.get(i));
40         }
41         for (int i = 17; i < 34; i++) {
42             aList.add(pokerList.get(i));
43         }
44         for (int i = 34; i < 51; i++) {
45             bList.add(pokerList.get(i));
46         }
47         System.out.println("地主的牌:" + xList);
48         System.out.println("农民A的牌:" + aList);
49         System.out.println("农民B的牌:" + bList);
50     }
51
52     public static void main(String[] args) {
53         play();
54     }
55
56 }

运行结果如下,当然每次运行结果都不一样

地主的牌:[黑桃3, 红桃9, 红桃K, 红桃9, 红桃J, 方块K, 梅花Q, 梅花2, 方块Q, 黑桃9, 红桃6, 方块10, 梅花3, 黑桃K, 黑桃10, 方块3, 红桃Q, 梅花K, 方块9, 红桃5]
农民A的牌:[黑桃J, 黑桃4, 黑桃6, 黑桃7, 方块7, 红桃7, 梅花J, 方块4, 黑桃A, 方块8, 梅花4, 小鬼, 大鬼, 方块2, 梅花8, 梅花5, 梅花7]
农民B的牌:[红桃2, 红桃8, 梅花10, 梅花A, 黑桃8, 红桃A, 梅花9, 红桃10, 方块J, 方块6, 方块A, 黑桃Q, 红桃4, 黑桃5, 黑桃2, 方块5, 红桃3]
时间: 2024-10-13 00:57:38

妞一个斗地主发牌程序!!!的相关文章

斗地主发牌程序

//洗牌函数 shuffle() 接收一个数组 let shuffle = function(pokers){ for(let i=0;i<pokers.length;i++) { let random = parseInt(Math.floor(Math.random()*54));//随机生成54张牌的一个随机数 //两张牌进行交换 let temp = pokers[i]; pokers[i] = pokers[random]; pokers[random] = temp; } } //对

集合练习 之 斗地主发牌

      >HashMap 的key底层数据结构是哈希表 >ArrayList 底层数据结构是数组,查询快,增删慢 >TreeSet  底层数据结构式红黑树(平衡二叉树),默认构造器采用自然排序(Integer已经实现了Comparable接口 ).     package cn.itcast.day18; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import

自己写的一部分斗地主的程序,没有去写界面,临时是用黑框来显示的

这几天比較空,所以想写一点东西. 斗地主的程序一直以来都想写,但感觉规则推断比較复杂,一直没有较多的时间来写. 这次主要是把跟牌和牌型的推断写出来了.写了一个比較弱智的AI,属于有牌就出的那种.对于AI算法,临时没有什么好的想法,所以打算临时放一放. 后期补上界面之后再进行优化. 在这就把基本的函数和算法列出来吧. 首先是主程序,主要控制显示和游戏的流程. #include <iostream> #include "PokerDesk.h" using namespace

C语言的随机发牌程序(红桃、黑桃、梅花、方块)

做一个随机发牌的C语言程序,供大家学习,思考. 未做任何注释,有测试时候留下的一些输出语句,一遍方便测试. /* author:nunu qq:398269786 */ #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int a[60]; int b[60]; int w = 0; int wi,wj,wii; int i,j,index,x=0,m; for(i=0;i<54;

第十章 数组与集合 发牌程序 实例代码

解决方案目录: Suit.cs四种花色 namespace Cards { enum Suit { Clubs, Diamonds, Hearts, Spades } } Value.cs扑克牌的13中面值 namespace Cards { enum Value { Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace } } Pack.cs发牌程序核心类 namespace Cards { u

Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,

36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,该抽象类中有个“安 全生产”的抽象方法:abstract void safetyInProduction() (

java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E

21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak() 方法,在speak方法中输出“咿咿呀呀......”的信息. (2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法 中输出“小样的,不错嘛!会说话了!”的信息. (3)在People类中新增方法void think(),在thi

[转]什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查

1 什么是Pro*C/C++ 1.通过在过程编程语言C/C++中嵌入SQL语句而开发出的应用程序 2.什么是嵌入式SQL 1.在通用编程语言中使用的SQL称为嵌入式SQL 2.在SQL标准中定义了很多中语言的嵌入式SQL 3.各个厂商对嵌入式SQL的具体实现不同 3.什么是Pro*C/C++ 1.在C/C++语言中嵌入SQL语句而开发出的应用程序. 2.目的:使c/c++这种效率语言称为访问数据库的工具. 4.嵌入式SQL的载体是宿主语言 宿主语言 Pro程序 C/C++ Pro*C/C++ F

#Memcached系列#(6)使用Enyim.Caching访问Memcached的一个C#控制台程序

这篇文章主要是通过Enyim.Caching来完成访问Memcached. 这篇文章标为"原创",其实,是从多个地方整合过来的内容:但觉得"转载"也不合适,也并不是完全照搬别人的东西. 参考网址(不过,感觉它的配置写的乱糟糟的):http://www.cnblogs.com/luyinghuai/archive/2008/08/28/1278200.html (1)首先下载EnyimMemcached(文件名:EnyimMemcached-master.zip).