本文实例为大家分享了java实现扑克牌游戏的具体代码,供大家参考,具体内容如下

游戏功能描述

1、创建一副扑克牌:

包括四种花色:黑桃,红桃,梅花,方片

包括十三种点数:2-10,J,Q,K,A

2、创建两名玩家(or多名)

玩家至少要有ID,姓名,手牌等属性,手牌为扑克牌的集合

3、将创建好的扑克牌进行随机洗牌

4、从洗牌后的扑克牌的第一张开始,发给每个玩家,按照一人一张的方式,每人发两张(or多张)

5、比较两名玩家手中的扑克牌,比较规则为:取两人各自手中点数最大的牌进行比较,点数大的赢;若两人各自的点数最大的牌相等,则再按照花色比较。

代码

//Card.java

package card;

public class Card{

private String color;

private String number;

public Card(String color, String number) {

this.color = color;

this.number = number;

}

public String getColor() {

return color;

}

public String getNumber() {

return number;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (!(obj instanceof Card))

return false;

Card other = (Card) obj;

if (color == null) {

if (other.color != null)

return false;

} else if (!color.equals(other.color))

return false;

if (number == null) {

if (other.number != null)

return false;

} else if (!number.equals(other.number))

return false;

return true;

}

}

//Cards.java

package card;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class Cards {

private List list = new ArrayList();

//创建一副扑克牌

public Cards(){

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

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

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

for(int i=0;i

for(int j=0;j

list.add(new Card(color[i], number[j]));

}

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

}

//获取一副扑克牌

public List getList() {

return list;

}

//洗牌(打乱)

public void shufCards(){

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

Collections.shuffle(list);

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

}

//展示一副扑克牌

public void showCards(){

System.out.print("当前的扑克牌为:");

System.out.print("[ ");

for(int i=0;i

System.out.print(list.get(i).getColor() + list.get(i).getNumber()+ " ");

}

System.out.println(" ]");

}

}

//Player.java

package card;

import java.util.ArrayList;

import java.util.List;

public class Player {

private int id;

private String name;

private List handCards = new ArrayList();

public Player(int id, String name){

this.id = id;

this.name = name;

}

public List getHandCards() {

return handCards;

}

public void setHandCards(Card card) {

handCards.add(card);

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

//CardComparator.java(自定义排序规则)

package card;

import java.util.Comparator;

public class CardComparator implements Comparator {

@Override

public int compare(Card c1, Card c2) {

// 构建花色和牌值数组,通过比对,计算得到某张牌的价值(大小)

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

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

//由于比较规则是先比较牌值,如果相等再比较花色(黑红梅方),所以将牌值赋予较高的权值

int valueOfC1 = 0;

int valueOfC2 = 0;

for(int i=0;i

if(c1.getNumber().equals(number[i])) valueOfC1 += i*10;

if(c2.getNumber().equals(number[i])) valueOfC2 += i*10;

}

for(int i=0;i

if(c1.getColor().equals(color[i])) valueOfC1 += i;

if(c2.getColor().equals(color[i])) valueOfC2 += i;

}

if( valueOfC1 > valueOfC2 ) return -1;

if( valueOfC1 < valueOfC2 ) return 1;

return 0;

}

}

//PlayDemo.java

package card;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Scanner;

public class PlayDemo {

//创建玩家

//要对玩家ID的异常处理,要求用户只能输入整数ID,否则需要重新输入

public Player setPlayer(){

int id=0;

String name="";

Scanner console = new Scanner(System.in);

boolean ready = true;

do{

try{

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

id = console.nextInt();

ready = true;

}catch(Exception e){

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

ready = false;

console.nextLine();

}

}while(ready==false);

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

name = console.next();

return new Player(id, name);

}

public static void main(String[] args) {

//测试简易扑克牌程序

PlayDemo game = new PlayDemo();

//(1)创建一副牌

Cards cards = new Cards();

//(2)展示新的扑克牌

cards.showCards();

//(3)洗牌

cards.shufCards();

//(4)创建玩家

System.out.println("--------------创建两个(or多个)玩家就可以开始游戏啦!-------------");

List p = new ArrayList();

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

{

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

p.add(game.setPlayer());

}

for(int i=0;i

{

System.out.println("欢迎玩家:"+p.get(i).getName());

}

//(5)扑克牌比大小游戏开始啦~

int count = 0;

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

//设定每人分别拿两张(or多张)

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

//玩家轮流拿牌

for(int j=0; j< p.size(); j++){

System.out.println(">玩家"+p.get(j).getName()+"拿牌");

p.get(j).setHandCards(cards.getList().get(count));

count++;

}

}

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

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

for(int i=0;i

System.out.print("玩家"+p.get(i).getName()+"的手牌为:[ ");

for(int j=0;j

Card cur = p.get(i).getHandCards().get(j);

System.out.print(cur.getColor()+cur.getNumber()+" ");

}

System.out.println(" ]");

}

//排序得到每个玩家最大的手牌(排序规则自定义)

for(int i=0;i

Collections.sort(p.get(i).getHandCards(), new CardComparator());

}

List maxCard = new ArrayList();

for(int i=0;i

Card maxCur = p.get(i).getHandCards().get(0);

System.out.println("玩家"+p.get(i).getName()+"最大的手牌为:"+ maxCur.getColor()+maxCur.getNumber());

maxCard.add(maxCur);

}

//得到最后的胜者

List temp = new ArrayList();

temp.addAll(maxCard);

Collections.sort(temp, new CardComparator());

for(int i=0;i

if(maxCard.get(i).equals(temp.get(0))) System.out.println("恭喜玩家:"+p.get(i).getName()+"获胜!");

}

}

}

游戏运行截图

还有一个地方需要优化,即不能输入重复的ID和姓名,可以重写Player的equals方法,将用户的输入与已有的输入相比较,不满足要求则需要重新输入,不过就先不加了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

扑克牌游戏java代码_java实现简易扑克牌游戏相关推荐

  1. 贪吃蛇游戏java代码_Java实现贪吃蛇游戏

    最近JAVA和JSwing上手练习了一下贪吃蛇,供大家参考,具体内容如下 欢迎交流和加入新的内容 用到了JSwing,下面是一些具体的思路 实现 * 蛇: 采用单链表记录首尾,整个蛇被分为lattic ...

  2. 拼图游戏java代码_java设计:拼图游戏 完整源码

    //July/设计. //我对有的老师,很无语./06.04/. //Puzzle.java ----------------------------------------------------- ...

  3. 发扑克牌java程序_Java实现简易扑克牌游戏

    功能描述 1.创建扑克牌.包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王. 2.创建两个玩家.包括玩家id.姓名.手牌等集合,手牌为扑克牌的集合. 3.洗牌. ...

  4. java简易扑克牌游戏设计报告_Java第三季 简易扑克牌游戏 练习完成(已自测通过)...

    /** * 扑克牌类 * Created by yuyong on 2017/3/8. */ public class Card { public String color; // 花色 public ...

  5. 2048 java代码_java实现的2048游戏完整实例

    本文实例讲述了java实现的2048游戏.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: package awtDemo; import javax.swing.*; impor ...

  6. 蜘蛛纸牌 java代码_java实现蜘蛛纸牌游戏

    [实例简介] 用java技术实现windows自带的蜘蛛纸牌游戏 [实例截图] [核心代码] CardsGame └── CardsGame ├── bin │   └── com │   └── g ...

  7. 小学数学闯关游戏 java代码_Java语言实现小学数学练习

    package per.java.shejiti; import java.io.*; import java.util.ArrayList; import java.util.Collections ...

  8. 拼图java代码_Java制作智能拼图游戏原理及代码

    今天突发奇想,想做一个智能拼图游戏来给哄女友. 需要实现这些功能 第一图片自定义 第二宫格自定义,当然我一开始就想的是3*3 4*4 5*5,没有使用3*5这样的宫格. 第三要实现自动拼图的功能,相信 ...

  9. 弹球小游戏java代码_java实现简单的弹球游戏

    弹球游戏实现原理: 隔一定时间(小于1秒)重新绘制图像,因为Graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建Canvas的子类,只需要重写它的paint ...

最新文章

  1. R语言使用dplyr包使用group_by函数、summarise函数和mutate函数计算分组下的均值、标准差、样本个数、以及分组均值的95%执行区间对应的下限值和上限值(Calculate CI)
  2. rocketmq 消息指定_闲话RocketMQ
  3. js面向对象和继承的碎碎念
  4. maven引入hadoop_Maven引入hadoop依赖包出错解决办法
  5. Leetcode题库217.存在重复元素(python实现)
  6. python数据写入csv不换行_你还在重复工作?Python轻松读写核对csv表格上万条数据!...
  7. 为什么有些人看起来年纪轻轻,但思想深度和高度却远高于常人?
  8. 2018级C语言大作业 - 黄金矿工
  9. 轻量级前端MVVM框架avalon - 初步接触
  10. jq中获取属性名的方法
  11. 如何使用MIME类型
  12. nmake、makefile、cmake学习笔记
  13. 【安全】网络安全态势感知
  14. 【简单示例:数据库表转XML】
  15. 乒乓球十一分制比赛规则_乒乓球比赛规则
  16. Android安装apk报错 问题记录
  17. Java通过jacob生成动态word,还有一种方法通过word书签实现
  18. 银河麒麟系统设置变更
  19. 2014,寻找企业信息管理软件的蓝海
  20. VAD(集成噪音人声识别)接口

热门文章

  1. python中[x是什么意思_python中x[::]什么意思
  2. 产生自卑心理的原因是什么?
  3. Android 操作系统架构
  4. 如何将PPT转换成安卓APK安装包
  5. 随机过程笔记(9) 瑞利分布和窄带高斯
  6. html标签必须放body吗,为什么script标签一般放在body下面
  7. qpython终端怎么使用_ATX-uiautomator2 使用 QPython 在 Android 手机内执行自动化 -及wsl安装使用【未成功】...
  8. 理想与现实:HI3516编译Valgrind
  9. 视频去水印用哪个软件好?视频去水印用哪个软件简单好用效果好?
  10. Otter(阿里开源项目Otter介绍)