功能描述

1、创建扑克牌。包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王。

2、创建两个玩家。包括玩家id、姓名、手牌等集合,手牌为扑克牌的集合。

3、洗牌。将创建好的扑克牌打乱。

4、发牌。将洗牌之后的扑克牌集合,从第一张开始,发给两个玩家,安装一人 一张的方式,每人发两张。

5、游戏。比较两名玩家手中的扑克牌。规则为:去两名玩家手上点数最大的牌进行比较,点数大的赢,若点数一样大,就按照色花进行比较。

难点分析:

1、洗牌,如何将扑克牌进行打乱。(主要知识点Random,list.contains())

2、扑克牌如何进行大小比较。(主要知识点collections.sort() , comparable)

实现代码

Card.java(扑克牌类)

package com.betty.dome2;

public class Card implements Comparable{

// 牌面

private String num;

// 花色

private String name;

public Card(){

}

public Card(String num,String name){

this.num = num;

this.name = name;

}

public String getNum() {

return num;

}

public void setNum(String num) {

this.num = num;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((name == null) ? 0 : name.hashCode());

result = prime * result + ((num == null) ? 0 : num.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Card other = (Card) obj;

if (name == null) {

if (other.name != null)

return false;

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

return false;

if (num == null) {

if (other.num != null)

return false;

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

return false;

return true;

}

// 获取牌面大小

private Integer getNumValue(String num){

switch(num){

case "A": return 12;

case "2": return 13;

case "3": return 1;

case "4": return 2;

case "5": return 3;

case "6": return 4;

case "7": return 5;

case "8": return 6;

case "9": return 7;

case "10": return 8;

case "J": return 9;

case "Q": return 10;

case "K": return 11;

}

return -1;

}

// 获取花色大小

private Integer getNameValue(String name){

switch(name){

case "黑桃": return 4;

case "红心": return 3;

case "梅花": return 2;

case "方块": return 1;

}

return -1;

}

@Override

public int compareTo(Card card) {

// 如果牌面相同就看花色

int numCompare = getNumValue(this.num).compareTo(getNumValue(card.num));

if(numCompare == 0){

return getNameValue(this.name).compareTo(getNameValue(card.name));

}

return numCompare;

}

}

Player.java(角色类)

package com.betty.dome2;

import java.util.ArrayList;

import java.util.List;

public class Player {

// 角色id

private Integer ID;

// 角色姓名

private String name;

// 角色获得的牌

List cardList;

public Player(){

}

public Player(Integer ID,String name){

this.ID = ID;

this.name = name;

this.cardList = new ArrayList();

}

public Integer getID() {

return ID;

}

public void setID(Integer iD) {

ID = iD;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Welcome.java(主程序)

package com.betty.dome2;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

public class Welcome {

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

String[] names = {"黑桃","红心","梅花","方块"};

List cardStartList; // 开始创建扑克牌时的序列

List cardEndList; // 洗牌后的序列

List playerList; // 玩家列表

public Welcome(){

this.cardStartList= new ArrayList();

this.cardEndList = new ArrayList();

this.playerList = new ArrayList();

}

// 创建扑克牌

void createCard(){

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

for (String name : names) {

for (String num : nums) {

cardStartList.add(new Card(num,name));

}

}

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

System.out.print("[");

for(int i=0;i

Card card = cardStartList.get(i);

if(i%13!=0) System.out.print(",");

if((i+1)%13==1 && i!=0){

System.out.println("]");

System.out.print("[");

}

System.out.print(card.getName()+card.getNum());

}

System.out.println("]");

}

// 洗牌

void shuffleCard(){

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

Random random = new Random();

Integer listSize = cardStartList.size();

for(int i=0;i

Card cd = new Card();

do{

cd = cardStartList.get(random.nextInt(listSize));

}while(cardEndList.contains(cd));

cardEndList.add(cd);

}

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

}

// 输入角色姓名

@SuppressWarnings("resource")

private String getName() {

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

Scanner input = new Scanner(System.in);

return input.next();

}

// 输入角色id && 输入整数判断

@SuppressWarnings("resource")

private Integer getId() {

Scanner input = new Scanner(System.in);

Integer id;

while(true){

try {

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

id = input.nextInt();

break;

} catch (Exception e) {

System.out.println("请输入整数");

input = new Scanner(System.in);

}

}

return id;

}

// 创建角色

private void createPlayers() {

Integer playerNum = 2;

for(int i=0;i

playerList.add(new Player(getId(), getName()));

}

for (Player player : playerList) {

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

}

}

// 给角色发牌

private void sendCard() {

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

int cardSendNum = 2,index = 0;

for(int i=0;i

for(int j=0;j

Player player = playerList.get(j);

player.cardList.add(cardEndList.get(index++));

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

}

}

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

}

// 游戏开始

private void playGame() {

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

Card maxCard = new Card("0","方块");

Player winner = new Player();

for(int i=0;i

Player player = playerList.get(i);

List cardList = player.cardList;

Collections.sort(cardList);

Card card = cardList.get(cardList.size()-1);

if(maxCard.compareTo(card)<0){

maxCard = card;

winner = player;

}

System.out.println("----玩家:"+ player.getName()

+ "最大的牌为:" + card.getName()+ card.getNum());

}

System.out.println("-----------玩家:"+winner.getName()+"获胜----------");

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

for(int j=0;j

Player player = playerList.get(j);

System.out.print("玩家 :" + player.getName()+"[");

for(int i=0;i

if(i!=0) System.out.print(",");

System.out.print(player.cardList.get(i).getName()+

player.cardList.get(i).getNum());

}

System.out.print("]\n");

}

}

public static void main(String[] args) {

Welcome we = new Welcome();

we.createCard(); // 创建扑克牌

we.shuffleCard(); // 洗牌

we.createPlayers(); // 创建角色

we.sendCard(); // 给角色发牌

we.playGame(); // 游戏开始

}

}

实现的效果图:

发扑克牌java程序_Java实现简易扑克牌游戏相关推荐

  1. 扑克牌游戏java代码_java实现简易扑克牌游戏

    本文实例为大家分享了java实现扑克牌游戏的具体代码,供大家参考,具体内容如下 游戏功能描述 1.创建一副扑克牌: 包括四种花色:黑桃,红桃,梅花,方片 包括十三种点数:2-10,J,Q,K,A 2. ...

  2. 进制转换器java程序_java编写简易的进制转换器

    hi,大家好, 这是我的"21天coding不间断"任务的Day 5, 是一个简洁的10进制与2进制互转的算法实现. import java.util.Scanner; publi ...

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

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

  4. 扑克牌java发牌_Java练习——扑克牌发牌器

    Java练习--扑克牌发牌器 声明:学习自其他博主,感谢分享,这里自己也写了一下. 实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试 构建一张扑克牌 /***@author冬冬 * 定义一个 ...

  5. java程序_Java程序员必备----Java命令大全

    1.java.exe: ====================== 运行java程序,这个相信每一位用Java的人知道了.2.javac.exe: ====================== 编译 ...

  6. jav中什么是组织java程序_Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指()。A.Java调试器B.Java剖析工具C.Jav...

    Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指().A.Java调试器B.Java剖析工具C.Jav 更多相关问题 "投资收益"账户属于(). A.损 ...

  7. 用条件运算符编写java程序_Java 编程入门课程丨第 8 单元:条件运算符和控制语句...

    原标题:Java 编程入门课程丨第 8 单元:条件运算符和控制语句 教程概览 本单元是"Java 编程入门"课程的第 8 部分.尽管各单元中讨论的概念具有独立性,但实践组件是在您学 ...

  8. 简单计算机java程序_JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单...

    JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单 JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单制作 汇编实现引导程序 ; 文件名 boot.asm org 7c ...

  9. java 五子棋 简单_java实现简易五子棋游戏

    本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 编写一个简易五子棋,棋盘在控制台中绘制,棋盘每- - 个点都有对应的坐标,下棋者输 入对应坐标落棋子,运行效果如图所 ...

最新文章

  1. 建立双链表(头插法)
  2. 2 resize 到指定大小_阿里巴巴为什么让初始化集合时必须指定大小?
  3. python做电脑软件-作为一个Python程序员,电脑上应该具备哪些软件?
  4. C 引用和指针的区别
  5. SPI及其工作原理浅析
  6. 【年终总结】2021年有三AI做了什么,2022年我们要做什么?
  7. CentOS7执行yum命令出错
  8. php读取gitlab用户信息,gitlab api获取所有用户的记录
  9. mysql集群搭建.pdf,内容太过真实
  10. ZDI 公布多个尚未修复的 Windows 高危0day详情
  11. springboot 建readme_README
  12. 2004级C++试题及答案
  13. 打印服务Print Spooler自动停止解决方案
  14. 计算机xp怎么调整亮度,[如何调整计算机屏幕的亮度] xp系统如何调整屏幕的亮度?屏幕亮度调整方法的详细说明...
  15. 傅里叶变换matlab学习笔记
  16. PX Deq Credit: send blkd (3)---Script to monitor parallel queries (文档 ID 45
  17. C# 网易云音乐API 多达100+ 支持登录,无损下载
  18. 小程序常见故障解决方法分享|微信小程序平台常见拒绝情形
  19. eclipse java 测试_测试:LR中使用Eclipse来进行Java程序的测试方法
  20. 菜刀php后门,关于菜刀后门排查

热门文章

  1. WorksheetFunction 成员 (Excel)
  2. 力扣(20.232)补9.6
  3. 保研历程(经验分享、保研流程介绍)
  4. SpringnMVC视图解析失败
  5. 分布式系统的性能优化方法
  6. 2022.03全国青少年软件编程(图形化)等级考试试卷(四级)
  7. Java8新特性之Joining
  8. 阿里云OSS服务器上传图片并获取路径(SpringBoot)(☆)
  9. 关注灾情,心系九寨18
  10. android一键 iphone,流畅吃鸡最全教程来了:安卓iPhone一键解锁最高画质