斗地主小游戏

ctrl+shift+/:多行注释


第一版:

App:
package game;public class App {public static void main(String[] args) {new PokerGame();}
}
package game;import java.util.ArrayList;
import java.util.Collections;public class PokerGame {//存储牌static ArrayList<String> list = new ArrayList<>();static {//准备牌String[] color = {"♠", "♥", "♦", "♣"};String[] number = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};for (String s : color) {for (String string : number) {list.add(s + string);}}list.add("大王");list.add("小王");}PokerGame() {//洗牌Collections.shuffle(list);//发牌ArrayList<String> lord = new ArrayList<>();ArrayList<String> player1 = new ArrayList<>();ArrayList<String> player2 = new ArrayList<>();ArrayList<String> player3 = new ArrayList<>();for (int i = 0; i < list.size(); i++) {if (i <= 2) {lord.add(list.get(i));continue;}if (i % 3 == 0) {player1.add(list.get(i));} else if (i % 3 == 1) {player2.add(list.get(i));} else {//注意:不能写 i % 3 == 1player3.add(list.get(i));}}//看牌lookPoker("底牌", lord);lookPoker("player1", player1);lookPoker("player2", player2);lookPoker("player3", player3);}//参数//玩家姓名//牌public static void lookPoker(String name, ArrayList<String> list) {System.out.print(name + ":");for (String poker : list) {System.out.print(poker + " ");}System.out.println();}
}

第二版:利用序号对牌进行排序

App:
package gameSort;public class App {public static void main(String[] args) {new PokerGame();}
}
package gameSort;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;public class PokerGame {//存储每张牌及其对应的序号static HashMap<Integer, String> hm = new HashMap<>();//存的是有序数字,为了模拟每张牌,发牌时用的也是这个数字static ArrayList<Integer> list = new ArrayList<>();static {String[] color = {"♠", "♥", "♣", "♦"};String[] number = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};int startNumber = 1;//number要在外循环,这样可以保证不同花色的同一张牌价值是相近的for (String n : number) {for (String c : color) {hm.put(startNumber, c + n);list.add(startNumber);startNumber++;}}hm.put(startNumber, "大王");list.add(startNumber);startNumber++;hm.put(startNumber, "小王");list.add(startNumber);}PokerGame() {//洗牌Collections.shuffle(list);//发牌(使用treeSet可以直接排序)TreeSet<Integer> lord = new TreeSet<>();TreeSet<Integer> player1 = new TreeSet<>();TreeSet<Integer> player2 = new TreeSet<>();TreeSet<Integer> player3 = new TreeSet<>();for (int i = 0; i < list.size(); i++) {Integer serialNumber = list.get(i);if (i <= 2) {lord.add(serialNumber);continue;}if (i % 3 == 0) {player1.add(serialNumber);} else if (i % 3 == 1) {player2.add(serialNumber);} else {player3.add(serialNumber);}}//看牌lookPoker("底牌", lord);lookPoker("玩家1", player1);lookPoker("玩家2", player2);lookPoker("玩家3", player3);}/** 参数一:玩家姓名* 参数二:牌的序号* */public static void lookPoker(String name, TreeSet<Integer> list) {System.out.print(name + ":");for (Integer i : list) {//根据数字找对应的牌String s = hm.get(i);System.out.print(s + " ");}System.out.println();}
}

第三版:利用牌的价值进行排序

App
package game3;public class App {public static void main(String[] args) {new PokerGame();}
}
package game3;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;//利用牌的价值排序
public class PokerGame {//存牌static ArrayList<String> list = new ArrayList<>();//存牌及其对应的价值static HashMap<String, Integer> hm = new HashMap<>();static {//准备牌String[] color = {"♠", "♥", "♦", "♣"};String[] number = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};for (String s : color) {for (String string : number) {list.add(s + string);}}//需要在汉字前面加一个空格,以免getValue截取不到完整的“大王”\“小王”list.add(" 大王");list.add(" 小王");//给牌添加价值,3~10直接由字符串转换成Integer类型即可,减少复杂性hm.put("J", 11);hm.put("Q", 12);hm.put("K", 13);hm.put("A", 14);hm.put("2", 15);hm.put("大王", 50);hm.put("小王", 100);}PokerGame() {//洗牌Collections.shuffle(list);//发牌ArrayList<String> lord = new ArrayList<>();ArrayList<String> player1 = new ArrayList<>();ArrayList<String> player2 = new ArrayList<>();ArrayList<String> player3 = new ArrayList<>();for (int i = 0; i < list.size(); i++) {if (i <= 2) {lord.add(list.get(i));continue;}if (i % 3 == 0) {player1.add(list.get(i));} else if (i % 3 == 1) {player2.add(list.get(i));} else {//注意:不能写 i % 3 == 1player3.add(list.get(i));}}//排序order(lord);order(player1);order(player2);order(player3);//看牌lookPoker("底牌", lord);lookPoker("player1", player1);lookPoker("player2", player2);lookPoker("player3", player3);}//利用牌的价值进行排序//参数:集合public void order(ArrayList<String> list) {Collections.sort(list, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {//o1:表示当前要插入到有序序列中的牌//o2:表示已经在有序序列中存在的牌//负数:o1小 插到前面//正数:o2大 插到后面//0:o1的数字和o2是一样大的,需要按照花色再次排序//1.计算o1花色和价值String color1 = o1.substring(0, 1);int value1 = getValue(o1);//2.计算o2花色和价值String color2 = o2.substring(0, 1);int value2 = getValue(o2);//比较o1和o2的价值int i = value1 - value2;return i == 0 ? color1.compareTo(color2) : i;}});}//计算牌的价值//参数:牌//返回值:价值public int getValue(String poker) {//获取牌上的数字String number = poker.substring(1);//拿着数字到map集合中判断是否存在if (hm.containsKey(number)) {//存在,获取价值return hm.get(number);} else {//不存在,类型转换return Integer.parseInt(number);}}public static void lookPoker(String name, ArrayList<String> list) {System.out.print(name + ":");for (String poker : list) {System.out.print(poker + " ");}System.out.println();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于小波样条框架的一维时间序列信号降噪方法(MATLAB R2018A)

1952年&#xff0c;DUFFIN在研究非调和Fourier级数时引入了Hilbert空间中框架的概念&#xff0c;然而并没有引起很大的反响。1986年&#xff0c;DAUBECHIES研究发现利用框架可以将L2(R)中的函数展开成类似标准正交基的级数&#xff0c;并且用框架研究函数时所需的条件要比用标准…

多态的应用——数组多态

介绍 ai查询 在Java中&#xff0c;动态数组通常通过ArrayList类来实现&#xff0c;它是Java集合框架&#xff08;Java Collections Framework&#xff09;的一部分。ArrayList是一个可调整大小的数组实现&#xff0c;提供了比标准数组更多的灵活性和功能。 以下是使用ArrayLis…

基于51单片机的MQ-2烟雾报警设计

随着现代家庭用火、用电量的增加,家庭烟雾发生的频率越来越高。烟雾报警器也随之被广泛应用于各种场合。本课题所研究的无线多功能烟雾报警器采用STC89C51为核心控制器,利用气体传感器MQ-2、ADC0832模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片,当环…

前端技术回顾系列 08|TS 泛型基础

在微信中阅读,关注公众号:CodeFit。 创作不易,如果你觉得这篇文章对你有帮助,请不要忘了 点赞、分享 和 关注 我的公众号:CodeFit,为我的持续创作提供一些动力。 上篇内容回顾:枚举(Enums) 在上篇文章中,我们详细回顾了 TypeScript 中的 枚举(Enums)。 枚举 是一…

Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作?回滚交易和抛出异常如何选择?

文章目录 Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作&#xff1f;场景举例&#xff1a;回滚交易和抛出异常如何选择&#xff1f; Solidity选择使用 require 语句还是条件语句结合手动触发 revert 操作&#xff1f; IERC721 nft IERC721(nftAddress)…

设置路径别名

一、描述 如果想要给路径设置为别名&#xff0c;就是常见的有些项目前面的引入文件通过开头的&#xff0c;也就是替换了一些固定的文件路径&#xff0c;怎么配置。 二、配置 import { defineConfig } from vite import react from vitejs/plugin-react import path from path…

ElementUi el-tree动态加载节点数据 load方法触发机制

需求背景&#xff1a;需要根据点击后获取的数据动态渲染一个 el-tree&#xff0c;同时渲染出来的 el-tree&#xff0c;需要点击节点时才能获取该节点的层数的获取&#xff0c;如图所示&#xff0c;我需要点击“组”节点才能渲染“设备列表”树&#xff0c;同时“设备列表”树的…

war后门文件部署 什么是war后门文件 为什么要部署???看见war后门文件部署你知道????

在漏洞复现的时候做了一道war后门文件部署的&#xff0c;然后我们就要去了解什么是war包&#xff0c;然后这个漏洞实现要有什么情况&#xff1f;&#xff1f;为什么要进行部署&#xff1f;&#xff1f; war包在哪些地方可以实现&#xff1f;&#xff1f;&#xff1f; war是一种…

优设AI导航

1、优设AI导航 优设AI导航

数据结构与算法题目集(中文)6-2顺序表操作集

题目地址 https://pintia.cn/problem-sets/15/exam/problems/type/6?problemSetProblemId725&page0 注意审题&#xff0c;返回false的时候不要返回ERROR&#xff0c;否则答案错误&#xff0c;机器规则是死的。 位置一般指数组下标&#xff0c;位序一般指数组下标1。但是思…

[FreeRTOS 基础知识] 任务调度 与 链表

文章目录 任务并行的概念RTOS如何实现多任务调度&#xff1f; 任务并行的概念 在生活中&#xff0c;经常出现一心多用的情况。比如你需要一边吃饭一边手机回复信息&#xff0c;这里面就存在两个任务&#xff1a;任务一、吃饭。任务二、手机回复信息。 假如你无法一心多用&…

leetCode127. 单词接龙

leetCode127. 单词接龙 // bfs 剪枝 class Solution { public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) {// 1.将所有的单词放在set字段中unordered_set<string> s;for (auto & ele : wordList) s.insert(ele);//…

hw meta10 adb back up DCIM

1. centos install adb 2. HW enable devlepment mode & enalbe adb debug 3. add shell root/zt/adb-sync python3 ./adb-sync --reverse /sdcard/DCIM/Camera /root/zt/meta10

前端技术入门指南

引言 在数字化时代&#xff0c;前端开发成为了连接用户与数字世界的重要桥梁。无论你是对编程充满好奇的新手&#xff0c;还是想要拓展自己技能领域的在职人员&#xff0c;前端开发都是一个值得学习和探索的领域。本文将带你走进前端技术的世界&#xff0c;为你提供一个入门指…

git 创建分支,将分支合并到master分支上

git 创建分支 要在Git中创建一个新分支并且复制master分支的内容&#xff0c;同时保留master分支&#xff0c;你可以先切换到master分支&#xff0c;然后创建并切换到新分支&#xff0c;最后将master分支的内容复制到新分支。以下是相应的命令&#xff1a; git checkout mast…

Maven简单介绍

Maven 是一个项目管理和构建工具&#xff0c;主要用于 Java 项目。它帮助开发者自动化管理项目的依赖、构建过程、报告生成等任务。下面是关于 Maven 的一些基本信息&#xff0c;以及如何在本地设置和在 IDE&#xff08;如 IntelliJ IDEA&#xff09;中配置 Maven 的步骤。 什…

【Modelground】个人AI产品MVP迭代平台(5)——神投手(实时投篮检测游戏)

文章目录 介绍篮框识别进球算法离屏渲染总结 介绍 神投手是我开发的一款移动端web实时投篮检测游戏。其解决的痛点是&#xff1a;专为投篮训练而生的&#xff0c;有手机就能玩的投篮计数游戏。我本人是一个篮球爱好者&#xff0c;特点就是投篮准&#xff0c;虽然投篮挺靠天赋&…

第二十一节:带你梳理Vue2: 父组件使用子组件时的修饰符和双向数据绑定

1. 原生事件修饰符.native 1.1. 关于组件标签上的事件 在组件标签上是没办法触发原生的js事件的,vue会将其作为自定义事件处理 示例代码如下: <div id"app"><!-- 使用组件 --><!-- 组件标签上使用DOM元素原生事件不会触发, --><my-compone…

DevExpress WPF中文教程:Grid - 如何向项目添加GridControl并绑定到数据

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

第十二届蓝桥杯单片机国赛练习代码

文章目录 前言一、问题重述二、主函数总结 前言 第十五蓝桥杯国赛落幕已有十天&#xff0c;是时候总结一下&#xff0c;这个专栏也将结束。虽然并没有取得预期的结果&#xff0c;但故事结尾并不总是美满的。下面是赛前练习的第十二届国赛的代码。 一、问题重述 二、主函数 完整…