4.斗地主发牌
程序员文章站
2022-04-15 19:05:49
package doudizhu;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.List;/**斗地主的洗牌和发牌* 规则:使用54张牌打乱顺序,三个玩家参与游戏,每人17张牌,最后剩三张底牌* 准备牌:每张牌y由花色和数字组成* 发牌* 看牌 */public class Poker{ public static...
package doudizhu;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/*
*斗地主的洗牌和发牌
* 规则:使用54张牌打乱顺序,三个玩家参与游戏,每人17张牌,最后剩三张底牌
* 准备牌:每张牌y由花色和数字组成
* 发牌
* 看牌
*/
public class Poker
{
public static void main(String[] args)
{
List<String> pokerBox = new ArrayList<>();
List<String> numbers = new ArrayList<>();
List<String> colors = new ArrayList<>();
colors.add("♥");
colors.add("♦");
colors.add("♠");
colors.add("♣");
for (int i = 2; i <=10 ; i++) {
numbers.add(i+"");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");
numbers.add("A");
//生产牌,拼接花色和数字
for (String color:colors)
{
//每次拿到一种花色
for (String number:numbers)
{
// String card = color + number;
// pokerBox.add(card);
pokerBox.add(color+number);
}
}
pokerBox.add("大王");
pokerBox.add("小王");
// System.out.println(pokerBox);
//洗牌Collection 工具类 都是静态方法
//shuffle
Collections.shuffle(pokerBox);
// System.out.println(pokerBox);
//发牌 创建player1 player2 player3
ArrayList<String> player1 = new ArrayList<>();
ArrayList<String> player2 = new ArrayList<>();
ArrayList<String> player3 = new ArrayList<>();
ArrayList<String> dipai = new ArrayList<>();
for (int i = 0; i < pokerBox.size(); i++) {
String card = pokerBox.get(i);
//判断i值,先判断
if(i>=51)
{
dipai.add(card);
}
else
{
if(i%3==0)
{
player1.add(card);
}else if(i%3==1)
{
player2.add(card);
}else if(i%3==2)
{
player3.add(card);
}
}
}
System.out.println("王思聪的牌"+player1);
System.out.println("马云"+player2);
System.out.println("我"+player3);
System.out.println("底牌"+dipai);
}
}
== 和 equals的区别
"== " 基本数据类型是比较两个对象的内容(数值和数值类型)
int i = 2;
int k = 2;
char m = '2';
System.out.println(i == k); // true
System.out.println(m == k); // false
引用数据类型中 == 和 equals 比较的都是两个对象的地址值, 如果重写了 equals 方法比较的是两个对象的内容是否一致
Object obj1 = new Object();
Object obj2 = new Object();
// 都是比较的地址值
System.out.println(obj1.equals(obj2)); // false
System.out.println(obj1==obj2); // false
String 、Interger等类对equals进行了重写, 实际比较的是两个对象的内容是否一致
String a = new String("abcd");
String b = new String("abcd");
// abcd 放在常量池中
String c = "abcd";
String d = "abcd";
if (a == b){ // false
// 不是同一个对象
System.out.println("a==b");
}
if (a.equals(b)){
// true String 重写了equals
System.out.println("a==b equals");
}
if (c == d){
// true 共享同一变量
System.out.println("c==d");
}
if (c.equals(d)){
// true
System.out.println("c.equals(d)");
}
String 的重写
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
// 判断是否属于String类型
if (anObject instanceof String) {
// 强制转换为String类型
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
本文地址:https://blog.csdn.net/qq_45111873/article/details/107896082
上一篇: java统一异常处理
下一篇: 如何使用OPCache提升PHP的性能
推荐阅读
-
微盟瞄准私域直播,电商直播或将“重新发牌”
-
日本惊现赌场机器人:能帮庄家发牌
-
4. abp中的asp.net core模块剖析
-
JJ比赛斗地主怎么玩?JJ比赛斗地主的玩法图文步骤
-
学习9.总结# 1.函数初识 # 2.函数的定义 # 3.函数的调用 # 4.函数的返回值 # 5.函数的参数
-
[springboot 开发单体web shop] 4. Swagger生成Javadoc
-
Blazor(WebAssembly) + .NETCore 实现斗地主
-
C#使用二维数组模拟斗地主
-
学习9.内容# 1.函数初识 # 2.函数的定义 # 3.函数的调用 # 4.函数的返回值 # 5.函数的参数
-
Spring Boot2(八):性感banner,在线发牌