玩家类:

package playingCardsGame;

import java.util.ArrayList;

import java.util.List;

/*

* 玩家类

*/

public class Players {

int ID;

String name;

List handCards;

Players(int ID, String name){

this.ID = ID;

this.name = name;

this.handCards = new ArrayList();

}

}

手牌类:

package playingCardsGame;

/*

* 手牌类

*/

public class HandCards {

String card;

HandCards(String card) {

this.card = card;

}

}

游戏类:

package playingCardsGame;

import java.util.ArrayList;

import java.util.InputMismatchException;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

/*

* 游戏类

*/

public class CardsGame {

public List cardsList;

public List shuffleList;

public List player;

public Players ps;

private Scanner console;

Random random;

public CardsGame(){

cardsList = new ArrayList();

shuffleList = new ArrayList();

player = new ArrayList();

ps = new Players(0, null);

console = new Scanner(System.in);

random = new Random();

}

String[] color = {"方片","梅花","红桃","黑桃"};

String[] ch = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

//创建扑克牌并洗牌

public void Cards(){

System.out.println("--------------创建扑克牌...--------------");

for(int i = 0; i < color.length; i++){

for(int j = 0; j < ch.length; j++){

cardsList.add(color[i] + ch[j]);

}

}

System.out.println("------------扑克牌创建成功!-------------");

System.out.print("为:[");

for(int k = 0; k < cardsList.size(); k++){

if(k < cardsList.size()-1){

System.out.print(cardsList.get(k)+",");

}else

System.out.println(cardsList.get(k)+"]");

}

System.out.println("--------------开始洗牌...--------------");

for(int m = 0; m < cardsList.size(); m++){

int number;

do{

number = random.nextInt(cardsList.size());

}while(shuffleList.contains(cardsList.get(number).toString()));

shuffleList.add(cardsList.get(number).toString());

}

System.out.println("--------------洗牌结束!--------------");

}

//创建玩家并进行游戏

public void Play(){

System.out.println("--------------创建玩家...--------------");

//自定义玩家个数并进行异常检测

int numberOfPlayers;

while(true){

System.out.println("请输入玩家个数(最少2名玩家,最多26名玩家):");

Scanner console = new Scanner(System.in);

try{

numberOfPlayers = console.nextInt();

if(numberOfPlayers > 1 && numberOfPlayers < 27){

break;

}else{

throw new Exception();

}

}catch(InputMismatchException e){

System.out.println("请输入整数类型的玩家个数!");

}catch(Exception e){

System.out.println("玩家个数不在规定范围之内!");

}

}

//获取每个玩家的ID和姓名并对ID进行异常检测

for(int i = 1; i <= numberOfPlayers; i++){

System.out.println("请输入第"+ i + "位玩家的ID和姓名:");

int ID;

while(true){

System.out.println("输入ID:");

Scanner console = new Scanner(System.in);

try{

ID = console.nextInt();

break;

}catch(InputMismatchException e){

System.out.println("请输入整数类型的ID!");

}

}

System.out.println("输入姓名:");

String name = console.next();

player.add(new Players(ID, name));

}

for (Players player : player) {

System.out.println("-----欢迎玩家:" + player.name);

}

System.out.println("--------------开始发牌...--------------");

//获取所发牌的手牌序列

for(int i = 0; i < 2; i ++){

for(int j = 0; j < numberOfPlayers; j ++){

System.out.println("-----玩家:" + player.get(j).name + "-拿牌");

if(i == 0)

ps.handCards.add(new HandCards(shuffleList.get(j).toString()));

else

ps.handCards.add(new HandCards(shuffleList.get(j + numberOfPlayers).toString()));

}

}

System.out.println("--------------发牌结束!--------------");

System.out.println("--------------开始游戏...--------------");

//获取每个玩家的最大手牌序列

List maxCards = new ArrayList();

int m = 0, n = 0, p = 0, q = 0;

String max;

for(int i = 0;i < numberOfPlayers; i ++){

String card1 = ps.handCards.get(i).card.toString();

String card2 = ps.handCards.get(i + numberOfPlayers).card.toString();

//比较牌面大小

for(int j = 0; j < ch.length; j ++){

if(card1.substring(2).equals(ch[j]))

m = j;

if(card2.substring(2).equals(ch[j]))

n = j;

}

if(m >= n){

if(m == n){//如果牌面大小相等,再比较花色并最终得到最大值

for(int j = 0; j < color.length; j ++){

if(card1.substring(0,2).equals(color[j]))

p = j;

if(card2.substring(0,2).equals(color[j]))

q = j;

}

if(p > q){

max = card1.toString();

}else{

max = card2.toString();

}

}else{

max = card1.toString();

}

}else{

max = card2.toString();

}

System.out.println("玩家:" + player.get(i).name + "最大的手牌为:" + max);

maxCards.add(max);

}

//比较最大手牌序列,先比较大小再比较花色,最后得到最大牌对应的玩家

for(int i = 0, j = 1;j < numberOfPlayers; j ++){

String card3 = maxCards.get(i).toString();

String card4 = maxCards.get(j).toString();

for(int k = 0; k < ch.length; k ++){

if(card3.substring(2).equals(ch[k]))

m = k ;

if(card4.substring(2).equals(ch[k]))

n = k;

}

if(m <= n){

if(m == n){

for(int r = 0; r < color.length; r ++){

if(card3.substring(0,2).equals(color[r]))

p = r;

if(card4.substring(0,2).equals(color[r]))

q = r;

}

if(p < q)

i = j;

}else

i = j;

}

m = i;

}

//输出游戏结果

System.out.println("--------------玩家:" +player.get(m).name + "获胜!--------------");

System.out.println("玩家各自的手牌为:");

for (int i = 0; i < numberOfPlayers; i ++)

System.out.println(player.get(i).name + ":[" + ps.handCards.get(i).card.toString()

+"," + ps.handCards.get(i + numberOfPlayers).card.toString() + "]");

}

public static void main(String[] args) {

CardsGame cg = new CardsGame();

cg.Cards();

cg.Play();

}

}

java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...相关推荐

  1. java怎么实现打牌_JAVA入门第三季实战:简易扑克牌

    本程序使用了ArrayList .HashMap,简单应用了Java第三季的集合框架 首先创建一个卡牌类 /** * 扑克类 */ public class Poker { public Poker( ...

  2. 黑桃k游戏java实战_JAVA入门第三季综合实战-简易扑克游戏

    自己写加参考,解决了抛异常只抛一次的问题 ,使程序更加完整 卡片类 package practice; public class Card { @Override public int hashCod ...

  3. 用java统计任一书名次数_Java入门第三季 借书系统源代码 加入了限制重输次数 欢迎指教交流...

    昨天刷完了关于异常的视频,感觉讲的太跳跃了,让我这个新手有点不适应,摸索了很久才完成了这个借书系统,擅自命名为达达借书系统,我还没习惯写备注,如果有看不懂的地方,欢迎大家留言指教. 建立 JieShu ...

  4. Java入门第三季-综合实战:简易扑克牌游戏

    一.概述 第三季的综合实战部分是写一个简易扑克牌游戏,功能实现要求如下: 1.创建一副扑克牌 包括四种花色: 黑桃 红桃 梅花 方片 十三种点数 2-10,JQKA,不考虑大小王 2.创建两名玩家 玩 ...

  5. java异常处借接错书_Java入门第三季-异常-图书馆借书系统

    参考大神的代码,实现循环查询读书, 名称输入异常类定义 NameException.java package com.imooc; /** * 书名异常类 * @author Majinglian * ...

  6. 阿克斯java表_java 入门第三季的6-5 作业, 希望大家指点

    java 入门第三季的6-5 作业, 希望大家指点 public static void main(String[] args) { // TODO Auto-generated method stu ...

  7. java 记牌_JAVA入门第三季——简易扑克牌

    package PlayingCards; /** * * * 定义扑克牌类 * @author Administration * */ public class Card { private int ...

  8. c++ 标准异常类层次结构_Java入门教程十一(异常处理)

    在程序设计和运行的过程中,发生错误是不可避免的.尽管 Java 语言的设计从根本上提供了便于写出整洁.安全代码的方法,并且程序员也尽量地减少错误的产生,但是使程序被迫停止的错误的存在仍然不可避免.为此 ...

  9. java三张扑克牌,java第三季综合练习之扑克牌游戏

    初学Java,看完入门前三季,终于把最后的综合练习实现功能了!有待后续继续优化.代码顺序是先分类,最后部分是测试类. import java.util.ArrayList; import java.u ...

最新文章

  1. 企业的失败,是一种必然
  2. python语言怎么用-科学家们是如何使用 Python 语言的?
  3. laravel mysql json_mysql – Laravel JSON where子句不区分大小写
  4. 在P5QL上激活Windows Vista
  5. qt能使用logback_X04Logback的配置
  6. 全新威马E.5将于4月15日上市
  7. 06-JavaScript的流控制语句
  8. cocos2d-x学习之旅(九): 2.2 盘古开天辟地,进入游戏世界
  9. Java8 - Stream API快速入门
  10. 系统分析与设计学习笔记(一)
  11. elasticsearch之 hdfs上的备份和还原操作
  12. 经典混响插件免安装+50拓展 – Audio Ease Altiverb 7 XL 7.2.8 WiN
  13. 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-855】-【V6.0 Android-Q-TE1】...
  14. laravel admin grid文档
  15. 从卫星影像的视角见证莆田母亲河(美丽的木兰溪)改造前后的容颜变化
  16. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---JavaScript篇
  17. iOS从相册选择视频和保存视频到相册
  18. Mina2框架--服务端与客户端通信
  19. 用iOS/Android实现家庭自动化远程控制
  20. 一起看TV:在电视上怎么下载软件?两个办法教你有效安装

热门文章

  1. DT时代下 数据库灾备的探索与实践
  2. Windows Server Version 1709 管理之入门篇
  3. AliOS Things KV组件的写平衡特性 1
  4. 亚马逊云科技张文翊:引领企业可持续发展的绿色云端之旅
  5. 【IPF2020】浪潮集团高级副总裁彭震:智算中心 筑基智慧世界
  6. java pinyin4j 首字母_通讯录之按汉字首字母排序 --java--pinyin4J
  7. 敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】
  8. redhat 6.5怎么安装mysql5.6_centos 6.5安装mysql5.6
  9. mysql对本地文件的读取_Mysql 任意读取客户端文件
  10. RabbitMQ 最新版安装 (Linux环境)