java简易扑克牌_简易扑克牌游戏(java)
//创建扑克牌类
public class PokerCard {
public String shapeColor;
public String number;
}
//创建玩家类
import java.util.HashSet;
import java.util.Set;
public class Player {
public int id;
public String name;
public Set handCards;
public Player(){
handCards = new HashSet();
}
}
//创建游戏
import java.util.*;
public class TestPoker {
private List pokerCardsList;
public Map nums;
public Map huase;
public TestPoker(){
pokerCardsList = new ArrayList();
nums = new HashMap();
huase = new HashMap();
}
//获取玩家的ID并且处理可能的异常
public void getID(Player player){
while (true) {
Scanner console = new Scanner(System.in);
try {
System.out.println("输入ID");
int n = console.nextInt();
player.id = n;
break;
} catch (Exception e) {
System.out.println("请输入整数型的ID");
continue;
}
}
}
//创建方法比较两张扑克牌的大小
public PokerCard compare(PokerCard p1,PokerCard p2){
if(nums.get(p1.number)>nums.get(p2.number) ){
return p1;
}if(nums.get(p1.number)
return p2;
}else {
if(huase.get(p1.shapeColor)>huase.get(p2.shapeColor) ){
return p1;
}
else{
return p2;
}
}
}
//主函数
public static void main(String[] args){
Scanner console = new Scanner(System.in);
System.out.println("------------------创建扑克牌...------------------");
TestPoker tp = new TestPoker();
String[] huase = {"方片","梅花","红桃","黑桃"};
String[] num = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
//初始化点数、花色与其大小的映射
for(String str:huase){
tp.huase.put(str, Arrays.asList(huase).indexOf(str));
}
for(String str:num){
tp.nums.put(str,Arrays.asList(num).indexOf(str));
}
//创建扑克牌
for(String str:huase){
for(String string:num){
PokerCard pc = new PokerCard();
pc.shapeColor = str;
pc.number = string;
tp.pokerCardsList.add(pc);
}
}
System.out.println("------------------扑克牌创建成功!-----------------");
System.out.print("为:");
for(PokerCard pokerCard:tp.pokerCardsList){
int k =tp.pokerCardsList.indexOf(pokerCard);
//System.out.print("为:");
switch (k){
case 0:
System.out.print("["+pokerCard.shapeColor+pokerCard.number+",");
break;
case 51:
System.out.println(pokerCard.shapeColor+pokerCard.number+"]");
break;
default:
System.out.print(pokerCard.shapeColor+pokerCard.number+",");
break;
}
//System.out.print(str+",");
}
System.out.println("-------------------开始洗牌...--------------------");
Collections.shuffle(tp.pokerCardsList);
System.out.println("--------------------洗牌结束---------------------");
System.out.println("--------------------创建玩家...--------------------");
Player[] players = {new Player(),new Player()};
for(int i=0;i<2;i++){
System.out.println("请输入第"+(i+1)+"位玩家的ID和姓名");
tp.getID(players[i]);
System.out.println("输入姓名");
String name = console.next();
players[i].name = name;
}
System.out.println("----欢迎玩家:"+players[0].name);
System.out.println("----欢迎玩家:"+players[1].name);
System.out.println("-------------------开始发牌...----------------------");
int k =0;
for(int i=0;i<2;i++){
for(Player player:players){
System.out.println("----玩家:"+player.name+"-拿牌");
player.handCards.add(tp.pokerCardsList.get(k));
k++;
}
}
System.out.println("---------------------开始游戏...------------------------");
//创建玩家和最大手牌的映射关系
Map playerMaxPokerCardMaps = new HashMap();
for(int i =0;i<2;i++) {
PokerCard maxHandCard = tp.compare((PokerCard) players[i].handCards.toArray()[0], (PokerCard) players[i].handCards.toArray()[1]);
System.out.println("玩家:" + players[i].name + "最大的手牌为:" + maxHandCard.shapeColor + maxHandCard.number);
playerMaxPokerCardMaps.put(maxHandCard,players[i]);
}
System.out.println("-----------玩家:"+playerMaxPokerCardMaps.get(
tp.compare((PokerCard) playerMaxPokerCardMaps.keySet().toArray()[0]
,(PokerCard) playerMaxPokerCardMaps.keySet().toArray()[1])).name
+"获胜!-------------------");
System.out.println("玩家各自的手牌为:");
int j =0;
for(Player player:players){
System.out.println(player.name+":"+"["+((PokerCard)player.handCards.toArray()[0]).shapeColor
+((PokerCard)player.handCards.toArray()[0]).number
+","+((PokerCard) player.handCards.toArray()[1]).shapeColor
+((PokerCard)player.handCards.toArray()[1]).number+"]");
j++;
}
}
}
结果
------------------创建扑克牌...------------------
------------------扑克牌创建成功!-----------------
为:[方片2,方片3,方片4,方片5,方片6,方片7,方片8,方片9,方片10,方片J,方片Q,方片K,方片A,梅花2,梅花3,梅花4,梅花5,梅花6,梅花7,梅花8,梅花9,梅花10,梅花J,梅花Q,梅花K,梅花A,红桃2,红桃3,红桃4,红桃5,红桃6,红桃7,红桃8,红桃9,红桃10,红桃J,红桃Q,红桃K,红桃A,黑桃2,黑桃3,黑桃4,黑桃5,黑桃6,黑桃7,黑桃8,黑桃9,黑桃10,黑桃J,黑桃Q,黑桃K,黑桃A]
-------------------开始洗牌...--------------------
[黑桃9,方片6,黑桃J,黑桃K,红桃J,方片8,红桃6,红桃A,黑桃3,梅花9,红桃3,梅花4,梅花2,方片10,方片3,方片2,红桃10,方片5,黑桃5,黑桃8,梅花A,红桃2,方片Q,红桃9,梅花6,红桃K,梅花3,黑桃Q,黑桃7,方片4,方片J,梅花Q,方片7,梅花7,方片9,梅花10,黑桃6,黑桃A,方片K,红桃8,红桃Q,梅花8,红桃7,黑桃10,红桃5,梅花K,黑桃4,方片A,梅花5,黑桃2,红桃4,梅花J]
--------------------洗牌结束---------------------
--------------------创建玩家...--------------------
请输入第1位玩家的ID和姓名
输入ID
1
输入姓名
Tom
请输入第2位玩家的ID和姓名
输入ID
2
输入姓名
Jack
----欢迎玩家:Tom
----欢迎玩家:Jack
-------------------开始发牌...----------------------
----玩家:Tom-拿牌
----玩家:Jack-拿牌
----玩家:Tom-拿牌
----玩家:Jack-拿牌
---------------------开始游戏...------------------------
玩家:Tom最大的手牌为:黑桃J
玩家:Jack最大的手牌为:黑桃K
-----------玩家:Jack获胜!-------------------
玩家各自的手牌为:
Tom:[黑桃J,黑桃9]
Jack:[黑桃K,方片6]
java简易扑克牌_简易扑克牌游戏(java)相关推荐
- 基于java+swing的潜艇大战项目游戏(java+swing)
基于java+swing的潜艇大战项目游戏(java+swing) 功能简介: Java swing实现的一款小游戏潜艇大战的项目源码 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 bool ...
- python生成一副扑克牌_【扑克游戏基本】用python打造出一副扑克牌并实操大转变...
今天要用python写一副简单的扑克牌, 我们想用物件导向的概念, 分别定义类别「单张扑克牌」与「一副扑克牌」, 而「一副扑克牌」就由52张「单张扑克牌」所组成 类别- 单张扑克牌 一张扑克牌由「点数 ...
- Java游戏里面的星球大战_星球大战手机游戏-JAVA程序算法
内容简介: 毕业设计 星球大战手机游戏-JAVA程序算法,共18页,9196字 摘 要 近年来,随着各种不同设备,尤其是移动通信设备的飞速发展诞生了一项新的开发技术-J2ME.它定位在消费性电子产品的 ...
- java 判断类型_如何快速入门Java编程学习(干货)
一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- 我的世java途径错误_我的世界JAVA路径错误的解决方法分享
我的世界JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?第一手游网必须 ...
- 支持java虚拟主机_为何缺乏支持Java的虚拟主机
现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...
- 做Java头发少_这35个Java代码优化细节,你用了吗
链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...
- java编程赋值运算符_跟我学java编程—简单赋值运算符“=”
赋值运算符是双目运算符,用在赋值表达式中.赋值运算符将值存储在运算符左边操作数指定的变量中.有两种赋值操作,简单赋值和复合赋值,简单赋值把运算符右边的操作数的值存储在运算符左边操作数指定的变量中:复合 ...
- java session使用_使用Neo4j和Java进行大数据分析 第2部分
本文的第一部分介绍了Neo4j及其Cypher查询语言.如果您已经阅读了第1部分,那么您已经了解了为什么Neo4j和其他图形数据库特别受社交图形或网络中用户之间关系建模的影响.您还在开发环境中安装了N ...
最新文章
- python——动态的增加实例方法、类方法、静态方法
- 两种方式调试JNI中DLL(动态链接库)
- 质数判断,不同算法效率比较
- 利用docker中的nginx镜像部署angular项目
- vuex的结构有哪些参数?
- Azure 内容审查器之羞羞图审查
- 利用js实现 禁用浏览器后退
- HDU 4404 Worms(多边形和圆相交)
- 基于队列的医院挂号模拟系统
- pivot sqlserver 条件_SqlServer行转列(PIVOT),列转行(UNPIVOT)总结
- 腾讯翻译君 VS 谷歌翻译
- Mathematica图像处理
- 关于输入阻抗和输出阻抗的理解
- 1433端口被运营商封锁的解决方法
- excel 分组统计
- 人工智能3.0展望---一种让AI产生自我意识的方法
- html+默认ie11,IE11浏览器设置成默认浏览器的方法
- Python 多变量赋值实现“交换”
- 金蝶云苍穹笔记(三)
- 简单的led驱动 了解下
热门文章
- Spring Boot Logback 配置详解
- android sd卡挂载广播,Android--检测内置/外置SD卡存储卡,枚举所有挂载点(通过反射实现),监听SD卡广播...
- java 小球抛物线_关于【愤怒的小鸟】其中的算法(自由落体,抛物线,碰撞,反弹)...
- linux 如何安装Python3.5
- echarts图表自适应
- cmake vs qmake
- laravel实现第三方qq一键登录
- 厦门大学数学专业考研试题参考解答
- nginx配置多个站点的方法
- linux 中禁用USB存储