项目要求
1>新建两个玩家
2>创建扑克牌,洗牌
3>发牌,每个玩家没人拿两张,比较大小
4>比较规则:两个玩家选出各种最大的牌,进行游戏,先比较点数大小,点数大的获胜,点数相同则比较花色:黑桃>红心>梅花>方块
5>输出要求:结束时分别输出玩家的手牌情况。

运行结果截图:

Java源码:
Card类:

package com.card;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;public class Card {private String number;private String color;/*** Create a pair of new cards* @return*/public ArrayList<Card> createCard(){String[] carNumber = new String[]{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};String[] carColor = new String[]{"方块","红心","梅花","黑桃"};ArrayList<Card> newCards = new ArrayList<Card>();//Create a pair of new cardsfor(int i = 0;i < carColor.length;i ++){for(int j = 0;j < carNumber.length;j ++){//  card.id = i;Card card = new Card();card.color = carColor[i];card.number = carNumber[j];newCards.add(card);}}return newCards;}/*** show the new cards* @return*/public String[] getNewCards(){String[] newCardGroup = new String[createCard().size()];for(int i = 0;i < createCard().size();i ++){newCardGroup[i] =  createCard().get(i).color +createCard().get(i).number ;}return newCardGroup;}/*** Create random cards* @return*/public String[] RandomCard(){Random random = new Random();String[] cardsArray = getNewCards();String swapCard = null;for(int i = 0;i < cardsArray.length;i ++){int index = random.nextInt(cardsArray.length);swapCard = cardsArray[i];cardsArray[i] = cardsArray[index];cardsArray[index] = swapCard;}return cardsArray;}
}

Game类:

package com.game;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;import com.card.Card;
import com.player.Player;public class Game {public static void main(String[] args) {// Create new Card classCard card = new Card(); Player[] player = new Player[2];Scanner input = new Scanner(System.in);System.out.println("**********开始创建扑克牌**********");System.out.println("**********扑克牌创建成功**********");System.out.println(Arrays.toString(card.getNewCards()));System.out.println("**********开始洗牌**********");String[] cardsRandom = card.RandomCard();System.out.println("**********洗牌结束**********");System.out.println("**********创建玩家**********");//Create playersfor(int i = 0; i < player.length;i ++){System.out.println("请输入第" + (i+1) + "玩家的ID和姓名");System.out.println("请输入ID:");int id = input.nextInt();System.out.println("请输入姓名:");String name = input.next();Player player1 = new Player(id,name);player[i] = player1;}//Show players' namefor(int i = 0;i < player.length;i ++)System.out.println("*****欢迎玩家:" + player[i].getName());System.out.println("**********开始发牌**********");Random random = new Random();int index;for(int i = 0;i < 4;i ++){System.out.println("*****玩家: " + player[i % 2].getName() + " 拿牌");index = random.nextInt(cardsRandom.length);player[i % 2].setCardInfo(cardsRandom[index]);}System.out.println("**********发牌结束**********");System.out.println("**********开始游戏**********");String[] cardsComp = new String[2];for(int i = 0;i < player.length;i ++){cardsComp[i] = player[i].maxCard();System.out.println("玩家:" + player[i].getName() + "最大的手牌为: " + player[i].maxCard());}int result  = maxCard(cardsComp);if(result == 1)System.out.println("********玩家 " + player[0].getName() + "获胜");else if(result == -1)System.out.println("********玩家 " + player[1].getName() + "获胜");elseSystem.out.println("********玩家 " + player[1].getName() + "和玩家 " + "手牌一样大,没有输赢");System.out.println("**********玩家的手牌为:");for(int i = 0;i < player.length;i ++)System.out.println(player[i].getName() + ":[ " + player[i].getCardInfo().get(0) + " , "+ player[i].getCardInfo().get(1) + " ]");}public static int maxCard(String[] cards){Map<String, Integer> cardCompare = new HashMap<String, Integer>();cardCompare.put("梅花", 4);cardCompare.put("黑桃", 3);cardCompare.put("红心", 2);cardCompare.put("方片", 1);int winer;int a = 0;int b = 0;a = transfer(cards[0]);b = transfer(cards[1]);if(a > b)winer = 1;else if(a < b)winer = -1;else{String card1 = cards[0].substring(0,2);String card2 = cards[1].substring(0,2);if(cardCompare.get(card1) > cardCompare.get(card2))winer = 1;else if(cardCompare.get(card1) < cardCompare.get(card2))winer = -1;elsewiner = 0;}return winer;}public static int transfer(String str){int a = 0;if(str.substring(2).equals("J"))a = 11;else if(str.substring(2).equals("Q"))a = 12;else if(str.substring(2).equals("K"))a = 13;else if(str.substring(2).equals("A"))a = 1;elsea = Integer.parseInt(str.substring(2));return a;}}

Player类:

package com.player;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class Player {private int id;private String name;ArrayList<String> cardInfo = new ArrayList<String>();public Player(int id, String name){this.id = id;this.name = name;}public ArrayList<String> getCardInfo() {return cardInfo;}public void setCardInfo(String cardInfo) {this.cardInfo.add(cardInfo);}public String maxCard(){Map<String, Integer> cardCompare = new HashMap<String, Integer>();cardCompare.put("梅花", 4);cardCompare.put("黑桃", 3);cardCompare.put("红心", 2);cardCompare.put("方片", 1);ArrayList<String> cards = getCardInfo();String maxCard = null;int a ;int b ;a = transfer(cards.get(0));b = transfer(cards.get(1));if(a > b)maxCard = cards.get(0);else if(a < b)maxCard = cards.get(1);else{String card1 = cards.get(0).substring(0,2);String card2 = cards.get(1).substring(0,2);if(cardCompare.get(card1) > cardCompare.get(card2))maxCard = cards.get(0);else if(cardCompare.get(card1) < cardCompare.get(card2))maxCard = cards.get(1);elsemaxCard = cards.get(0);}return maxCard;}public int transfer(String str){int a;if(str.substring(2).equals("J"))a = 11;else if(str.substring(2).equals("Q"))a = 12;else if(str.substring(2).equals("K"))a = 13;else if(str.substring(2).equals("A"))a = 1;elsea = Integer.parseInt(str.substring(2));return a;}public String getName() {return name;}
}

体会:主要应用Java泛型解决,使用Random类和泛型生成随机扑克牌以及实现随机发牌以及手牌比较

项目源码:https://github.com/gannyee/Easy-Game-Cards-Compare

java 小项目:简单扑克牌游戏相关推荐

  1. Java小项目:海战游戏

    前段时间发现同学们用纸玩起了一个打发时间的小游戏,感觉规则挺有意思的. 每个人有一片10*10的海域和五艘船,大小分别是1*1,1*2,1*2,2*2,2*2,玩家先安排自己的船的位置,然后轮流攻击对 ...

  2. java课设小迷宫含代码_Java小项目之迷宫游戏的实现方法

    项目要求: 一个网格迷宫由n行n列的单元格组成,每个大院个要么是空地(用0表示),要么是障碍物(用1表示),你的任务是找一条从起点到终点的移动序列,其中只能上下左右移动到相邻单元格.任何时候都不能在有 ...

  3. java 迷宫游戏_Java小项目之迷宫游戏的实现方法

    项目要求: 一个网格迷宫由n行n列的单元格组成,每个大院个要么是空地(用0表示),要么是障碍物(用1表示),你的任务是找一条从起点到终点的移动序列,其中只能上下左右移动到相邻单元格.任何时候都不能在有 ...

  4. java打印扑克牌_java实现简单扑克牌游戏

    本文实例为大家分享了java实现简单扑克牌游戏的具体代码,供大家参考,具体内容如下 扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张, ...

  5. Java小程序——简单五子棋(人机对战)

    有关五子棋人人对战的代码,以及其他一些我想说的话请参考 Java小程序 -- 简单五子棋_如切如磋,如琢如磨-CSDN博客_java小程序 由于某些原因,这里我给出的AI算法算是比较简单的,所以导致了 ...

  6. java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材源码

    Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...

  7. Andriod小程序——简单制作游戏中控制任务移动的轮盘

    Andriod小程序--简单制作游戏中控制人物移动的轮盘 说明 自定义自己的view继承于View类 重写onDraw()方法 当我们看到这个控件的时候那个样子,如图 完善onDraw()方法 重写O ...

  8. 我是一只小僵尸java,Java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材...

    Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...

  9. java小项目家庭记账程序

    文章目录 java小项目家庭记账程序 **1.项目目标:** 2.项目需求: 3.具体思路: 4.具体代码: 1.页面: 2.Option_1类: 3.Option_2类: 4.Option_3类: ...

  10. java小项目影院系统

    java小项目,影院管理系统 http://download.csdn.net/detail/github_32658299/9632276 下面是两个关键的类 1.这是电影院测试类,用来读取用户输入 ...

最新文章

  1. android 模板 ui布局,Android UI布局
  2. IHttpHandler的学习(0)
  3. HTTP 状态代码及其定义(转载)
  4. linux测试dvi接口,Pro Capture-DVI 2路高清DVI采集卡 支持Linux系统更专业
  5. vue全局安装jquery,vue使用bootstrap框架,vue中封装websocket通讯,vue引入element-ui 组件库,引入highcharts图表插件
  6. Java技术简介及Tomcat部署
  7. 怎么把截屏的一部分内容涂掉_电脑怎么录屏?录屏软件的使用技巧
  8. mysql5.7系列使用记录信息
  9. PB数据窗口自动换下一页
  10. [转]McAfee 病毒库最新离线升级包下载 VirusScan SuperDAT
  11. 作业帮冯雪胡不归问题_【凭谁唤君胡不归作文】作业帮
  12. 大数据集群的部署安装
  13. 1.回文是指正读和反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈。)2.假设以带头结点的循环链
  14. 正则表达式 匹配电子邮箱
  15. Failed to get convolution algorithm. This is probably because cuDNN failed to initialize,
  16. 计算机网络基本知识(三):网络互联设备
  17. Java减肥计划(swith版)
  18. 帮爷爷刻录VCD光盘
  19. 对接保利威直播api-php
  20. 《现代密码学》2022年期末试卷

热门文章

  1. HTTP Status 404 - No result defined for action com.cnlive.csp.manage.action.SysGiftAction and result
  2. 基于PHP+MySQL动漫专题网站系统的设计与实现
  3. WebApi入门第一章(WebApi介绍)
  4. 未处理的异常 stack overflow
  5. 写深度新闻通讯稿和一般新闻稿的差别在哪,以及需要注意的地方有哪些
  6. 2023年第八届数维杯数学建模A题B题C题思路分析汇总
  7. 厦门易派电子路口安全预警“哨兵”雷达,行人斑马线智慧的“双眼”
  8. Piggy-Bank 【POJ - 1384】
  9. 从架构角度看网络安全:数字化时代企业如何构建防御体系?
  10. mac 4k分辨率 字太小 27寸 hidpi_电视机4a和4k的区别