Java-->简单的斗地主发牌流程
package com.dragon.java.hwddz; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /*1. 写一个可以给斗地主三家随机发牌的程序。
a:牌可以随机发给三个玩家
b:在控制台打印每个玩家的牌。
c:对每个玩家手中的牌按照大写排序。
```
牌的花色:"♠", "♥", "♣", "♦"
*思路:创建一个容器存储所有的牌,再创建三个容器分别表示三个用户的牌,三个用户轮流从第一个容器中取牌,
*剩下三张为底牌。把大王和小王也算进去**/
public class Test {
public static void main(String args[]) {
Map<Integer, String> mapPoker = new HashMap<>();
List<Integer> listIndex = new ArrayList<>(); Poker.setPoker(mapPoker, listIndex); Poker.washPoker(listIndex);
// 定义用户
Player[] players = new Player[3];
players[0] = new Player("躺之徳");
players[1] = new Player("小剪");
players[2] = new Player("呆立叫");
// 用户容器
List<Integer> tzd = new ArrayList<>();
List<Integer> xj = new ArrayList<>();
List<Integer> dlj = new ArrayList<>();
List<Integer> dp = new ArrayList<>(); Player.getPoker(tzd, xj, dlj, dp, listIndex); // int index = Player.getMaxNumber(players);
// System.out.println(players[index].getName() + "抢到了地主!"); players[0].showPoker(tzd, mapPoker);
players[1].showPoker(xj, mapPoker);
players[2].showPoker(dlj, mapPoker);
// players[index].showDp(dp, mapPoker); System.out.println("\n" + "底牌:");
for (Integer integer : dp) {
System.out.print(mapPoker.get(integer) + " ");
}
}
}
--> Poker类用于存入54张扑克牌
package com.dragon.java.hwddz; import java.util.Collections;
import java.util.List;
import java.util.Map; public class Poker {
private static String[] pokerColor = { "♠", "♥", "♣", "♦" };
private static String[] pokerNum = { "3", "4", "5", "6", "7", "8", "9",
"10", "J", "Q", "K", "A", "2" };
// 存入54张不同的牌,并给每张牌一个标号
public static void setPoker(Map<Integer, String> mapPoker,
List<Integer> listIndex) {
int index = 0;
for (String nums : pokerNum) {
for (String colors : pokerColor) {
String poker = colors.concat(nums);
mapPoker.put(index, poker);
listIndex.add(index);
index++;
}
}
mapPoker.put(index, "大☝王");
listIndex.add(index);
index++;
mapPoker.put(index, "小☟王");
listIndex.add(index);
}
// 洗牌 --> 即洗标号
public static void washPoker(List<Integer> listIndex) {
Collections.shuffle(listIndex);
} }
--> Player类对玩家进行发牌和显示处理(写完我就后悔了,J,Q,K,A,2的排序太low了..package com.dragon.java.hwddz;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Random; public class Player {
private String name; Player() {
super();
} Player(String name) {
super();
this.name = name;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
// 发牌流程
public static void getPoker(List<Integer> player1, List<Integer> player2,
List<Integer> player3, List<Integer> dp, List<Integer> list) {
for (int i = 0; i < list.size(); i++) {
if (i >= list.size() - 3) {
dp.add(list.get(i));
} else if (i % 3 == 1) {
player1.add(list.get(i));
} else if (i % 3 == 2) {
player2.add(list.get(i));
} else if (i % 3 == 0) {
player3.add(list.get(i));
}
}
}
// 显示牌面
public void showPoker(List<Integer> list, Map<Integer, String> mapPoker) {
System.out.println("\n" + name + "的手牌是:");
List<String> listPoker = new ArrayList<>();
for (Integer key : list) {
listPoker.add(mapPoker.get(key));
}
Collections.sort(listPoker, new MyComparator());
for (String string : listPoker) {
System.out.print(string + " ");
}
} // public void showDp(List<Integer> dp, Map<Integer, String> mapPoker) {
// List<String> listPoker = new ArrayList<>();
// for (Integer key : dp) {
// listPoker.add(mapPoker.get(key));
// }
// Collections.sort(listPoker, new MyComparator());
// for (String string : listPoker) {
// System.out.print(string + " ");
// }
// } public int throwsElbows() {
Random random = new Random();
int num = random.nextInt(6) + 1;
System.out.println(name + "摇了" + num + "点");
return num;
} // 请忽略下面注释...
// public static int getMaxNumber(Player[] players) {
// List<Integer> numbers = new ArrayList<>();
// for (int i = 0; i < players.length; i++) {
// numbers.add(players[i].throwsElbows());
// }
// Collections.sort(numbers);
// for (int i = 0; i < numbers.size() - 1; i++) {
// if (numbers.get(numbers.size() - 1) == numbers.get(i)) {
// System.out.println(players[numbers.size() - 1].name + "和"
// + players[i].name + "摇的点数相同");
// System.out.println("他们打了一架! --> " + players[i].name + "赢了!");
// return i;
// }
// }
// return numbers.size() - 1;
// } // 牌面的比较排序 --> 看得就烦...
public static class MyComparator implements Comparator<String> { @Override
public int compare(String o1, String o2) {
String m1 = o1.substring(1, 2);
String m2 = o2.substring(1, 2);
if (m1.equals("1")) {
m1 = "a";
} else if (m1.equals("J")) {
m1 = "b";
} else if (m1.equals("Q")) {
m1 = "c";
} else if (m1.equals("K")) {
m1 = "d";
} else if (m1.equals("A")) {
m1 = "e";
} else if (m1.equals("2")) {
m1 = "f";
}
if (m2.equals("1")) {
m2 = "a";
} else if (m2.equals("J")) {
m2 = "b";
} else if (m2.equals("Q")) {
m2 = "c";
} else if (m2.equals("K")) {
m2 = "d";
} else if (m2.equals("A")) {
m2 = "e";
} else if (m2.equals("2")) {
m2 = "f";
}
return m1.compareTo(m2); }
}
}
--> 写完发现逻辑是不是有问题啊...
Java-->简单的斗地主发牌流程的更多相关文章
- Java 用集合实现简单的斗地主发牌
创建数组.集合,存放数据 public class FightAgainstLandlords { /** * poker集合,存储54张牌 */ private ArrayList<Strin ...
- JAVA代码之斗地主发牌
理解很好理解,关键是思路 按照斗地主的规则,完成洗牌发牌的动作: 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. ...
- java集合--模拟斗地主发牌洗牌
import java.util.*; /** * @Date: 2020/6/17 19:53 */public class Test04 { public static void main(Str ...
- 使用Java实现简单的斗地主案例
使用Java实现简单的斗地主案例 案例说明:使用Java实现简单的斗地主洗牌发牌的操作: 具体规则: 共有54张牌,顺序打乱: 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后留三张为底牌(地主牌) ...
- Java前辈:学习J2EE流程中的经验和教训
Java前辈:学习J2EE流程中的经验和教训 在这里我谈谈我在学习j2ee流程,并谈到在此过程中领会的经验和教训.以便后来者少走弯路. Java发展到现在,按应用来分主要分为三大块:J2SE,J2 ...
- 我的第一个activiti实例 (代码方式) ctiviti入门列子一个简单的activiti请假流程
转: (activiti入门列子一个简单的activiti请假流程) 我的第一个activiti实例 2017年05月31日 14:29:45 chf_mixueer 阅读数:1223 整个项目的 ...
- Java 中的运算符和流程控制
Java 中的运算符和流程控制 + 面试题 算术运算符 Java 中的算术运算符,包括以下几种: **算术运算符** **名称** **举例** + 加法 1+2=3 - 减法 2-1=1 \* 乘法 ...
- ZAM 3D 制作简单的3D字幕 流程(二)
原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...
- java简单词法分析器(源码下载)
java简单词法分析器 : http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%8D%E6%B3%95%E5%88%8 ...
随机推荐
- 为什么你总是学不好Linux技术?这是我的答案。
摘要: 我们为什么要学习Linux,最近几年Linux发展迅速,特别服务器领域,带来了很多新技术,云计算,虚拟化,大数据等技术,还有安全方面都有了很大的发展同时也给了Linux运维工作带来了,更多的要 ...
- $(":input").each()和$.each()的区别
<body> <form action="strutsAction" method="get"> <input ...
- C# 小规模查找集合性能测试
项目中包含浮点运算,大概每秒 20 - 100 万左右. 其计算结果每秒只包含1000个左右. 因此大量运算是重复性的.程序运行时,cpu 在 3% - 10% 浮动.打算将结果缓存.根据键值索值. ...
- 戴文的Linux内核专题:08内核配置(5)
转自Linux中国 Linux内核拥有许多可以配置的特性,接下来我们还有许多要配置. 下一个可以配置的特性是x86的随机数生成器(x86 architectural random number gen ...
- switch… case 语句的用法(一)
public class Test7 { public static void main(String[] args) { int i=5; switch(i) { case 1: System.ou ...
- eclipse 工程乱码问题
一 设置工作空间的编码格式(对新建的工程有效) window-->preference-->Gerneral-->Workspace-->Text file coding--- ...
- XCode 自动化打包总结
最近一个礼拜折腾xcode 中ipa 自动化打包,对我来说也说是磕磕碰碰.毕竟对mac下的命令行模式完全不熟悉.而且我们的项目是基于cordova的一个项目. 之前我自己对cordova 项目的命令行 ...
- MySQL的高级查询
高级查询 1.连接查询(对列的扩展) 第一种形式select * from Info,Nation #会形成笛卡尔积 select * from Info,Nation where Info.Nati ...
- poj2429 大数分解+dfs
//Accepted 172 KB 172 ms //该程序为随机性算法,运行时间不定 #include <cstdio> #include <cstring> #includ ...
- TPLink 备份文件bin文件解析
TPLink 路由器备份文件bin文件 测试路由器 WR885,备份文件加密方式DES,密钥:478DA50BF9E3D2CF linux端: openssl enc -d -des-ecb -nop ...