JAVA 自动发牌,

news/2025/1/15 14:39:38/

JAVA 面向对象 程序设计 微课版 P118页

 第1 个玩家:
红心2 红心A 草花A 草花K 黑桃Q 草花Q 方块Q 草花J 方块9 黑桃8 红心8 草花8 黑桃7 黑桃5 方块5 方块4 红心3 
 第2 个玩家:
小王 草花2 方块A 方块K 黑桃J 红心J 黑桃10 红心10 草花10 黑桃9 红心9 草花9 方块8 草花7 方块7 黑桃6 红心5 
 第3 个玩家:
大王 黑桃2 方块2 黑桃A 红心K 方块J 方块10 红心7 红心6 草花6 方块6 草花5 黑桃4 红心4 黑桃3 草花3 方块3 


底牌:
草花4
红心Q
黑桃K
 

package _8;public class Card {private static String face[]={"J","Q","K","A","2","小王","大王"};private static String suit[]={"方块","草花","红心","黑桃"};private int rank;//片的点数private int suitIdx;//花色编号public int getRank() {return rank;}public int getSuitIndex() {return suitIdx;}public Card(int rank,int suitIdx){this.rank =rank;this.suitIdx =suitIdx;}@Overridepublic String toString() {if(rank<=10)return suit[suitIdx]+rank;else if(rank<=15)return suit[suitIdx]+face[rank -11 ];elsereturn face[rank-11];}
}
package _8;import java.util.Comparator;public class CardComparator implements Comparator<Card> {@Overridepublic int compare(Card o1, Card o2) {if(o1.getRank()==o2.getRank())return o2.getSuitIndex() -o1.getSuitIndex();elsereturn o2.getRank()-o1.getRank();}
}
package _8;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class CardTest {public static void main(String[] args) {List<Card> cards = new ArrayList<Card>();//所有牌List<List<Card>> p_cards = new ArrayList<List<Card>>();//多个人,每个人多张牌for (int i = 3; i <= 15; i++) {for (int j = 0; j < 4; j++) {cards.add(new Card(i, j));}}cards.add(new Card(16, 0));cards.add(new Card(17, 0));for (int i = 0; i < 3; i++) {List<Card> p_card = new ArrayList<Card>();p_cards.add(p_card);}Collections.shuffle(cards);//洗牌CardComparator comparator = new CardComparator();//分发牌for (int i = 0; i < 3; i++) {for (int j = 0; j < 17; j++) {Card card = cards.remove(0);p_cards.get(i).add(card);}}//打印三个人手中信息for (int i = 0; i < 3; i++) {//p_cards.get(i).sort(comparator);Collections.sort(p_cards.get(i), comparator);System.out.println(" 第" + (i + 1) + " 个玩家:");for (int j = 0; j < p_cards.get(i).size(); j++) {System.out.print(p_cards.get(i).get(j) + " ");}System.out.println();}//底牌System.out.println("底牌:");for (Card card : cards) System.out.println(card);}
}


http://www.ppmy.cn/news/1018822.html

相关文章

Unity学习笔记--使用 C# 开发一个 LRU

目录 什么是 LRULRU 核心思想代码实现一&#xff1a;双向链表 哈希表分析代码实现二&#xff1a;OrderedDictionary分析项目案例预告结尾 什么是 LRU 在计算机系统中&#xff0c;LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;是一种缓存置换算法。…

算法通关村第五关——HashMap和队列问题分析

1.HashMap 1.1Hash的概念和基本特征 哈希(Hash)&#xff1a;也称为散列。就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变换成固定长度的输出&#xff0c;这个输出值就是散列值。 假设数组array存放的是1到15这些数&#xff0c;现在要存在一个大小是7的Hash表中…

Fortinet安全专家问答实录|如何防护暴力破解、撞库攻击

黑客攻防&#xff0c;一个看似神秘&#xff0c;但却必不可缺的领域。近期&#xff0c;全球网络与安全融合领域领导者Fortinet&#xff08;Nasdaq&#xff1a;FTNT&#xff09;&#xff0c;开启了Fortinet DEMO DAY系列实战攻防演练线上直播&#xff0c;让人人都能零距离观摩黑客…

自定义TabBar导航栏动画 - 用Vue实现炫酷的交互效果

系列文章目录 文章目录 系列文章目录前言一、准备工作二、HTML模板三、HTML模板四、Vue组件五、页面组件总结 前言 TabBar导航栏是移动端应用中常见的导航方式之一。为了提升用户体验&#xff0c;我们可以使用Vue自定义TabBar导航栏的动画效果&#xff0c;使页面切换更加平滑和…

分布式搜索ElasticSearch-ES(一)

一、ElasticSearch介绍 ES是一款非常强大的开源搜索引擎&#xff0c;可以帮我们从海量的数据中快速找到我们需要的内容。 ElasticSearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack(ELK)&#xff0c;被广泛运用在日志数据分析&#xff0c;实时监控等领域。 …

mysql的group_concat字段的长度限制

mysql的group_concat字段的长度限制 在使用group_concat进行数据分组查询的时候会出现数据只出现一部分的状况&#xff0c;这种是因为group_concat这个字段的字符长度不够&#xff0c;在信息超高这个长度的时候会自动的截取&#xff0c;如果想要解决这个问题的话需要进行额外的…

【Java】异常处理 之 使用 Commons Logging

使用 Commons Logging 和Java标准库提供的日志不同Commons Logging 是一个第三方日志库&#xff0c;它是由Apache创建的日志模块。 Commons Logging的特色是&#xff0c;它可以挂接不同的日志系统&#xff0c;并通过配置文件指定挂接的日志系统。默认情况下&#xff0c;Commo…

Flink窗口分类简介及示例代码

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 1. 流式计算2. 窗口3. 窗口的分类◆ 基于时间的窗口&#xff08;时间驱动&#xff09;1) 滚动窗口&#xff08;Tumbling Windows&#xff09;2) 滑动窗口&#xff08;Sliding Windows&…