发扑克牌java程序_Java实现简易扑克牌游戏
功能描述
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实现简易扑克牌游戏相关推荐
- 扑克牌游戏java代码_java实现简易扑克牌游戏
本文实例为大家分享了java实现扑克牌游戏的具体代码,供大家参考,具体内容如下 游戏功能描述 1.创建一副扑克牌: 包括四种花色:黑桃,红桃,梅花,方片 包括十三种点数:2-10,J,Q,K,A 2. ...
- 进制转换器java程序_java编写简易的进制转换器
hi,大家好, 这是我的"21天coding不间断"任务的Day 5, 是一个简洁的10进制与2进制互转的算法实现. import java.util.Scanner; publi ...
- java简易扑克牌游戏设计报告_Java第三季 简易扑克牌游戏 练习完成(已自测通过)...
/** * 扑克牌类 * Created by yuyong on 2017/3/8. */ public class Card { public String color; // 花色 public ...
- 扑克牌java发牌_Java练习——扑克牌发牌器
Java练习--扑克牌发牌器 声明:学习自其他博主,感谢分享,这里自己也写了一下. 实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试 构建一张扑克牌 /***@author冬冬 * 定义一个 ...
- java程序_Java程序员必备----Java命令大全
1.java.exe: ====================== 运行java程序,这个相信每一位用Java的人知道了.2.javac.exe: ====================== 编译 ...
- jav中什么是组织java程序_Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指()。A.Java调试器B.Java剖析工具C.Jav...
Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指().A.Java调试器B.Java剖析工具C.Jav 更多相关问题 "投资收益"账户属于(). A.损 ...
- 用条件运算符编写java程序_Java 编程入门课程丨第 8 单元:条件运算符和控制语句...
原标题:Java 编程入门课程丨第 8 单元:条件运算符和控制语句 教程概览 本单元是"Java 编程入门"课程的第 8 部分.尽管各单元中讨论的概念具有独立性,但实践组件是在您学 ...
- 简单计算机java程序_JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单...
JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单 JAVA程序员需要知道的计算机底层基础10-操作系统引导程序的简单制作 汇编实现引导程序 ; 文件名 boot.asm org 7c ...
- java 五子棋 简单_java实现简易五子棋游戏
本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 编写一个简易五子棋,棋盘在控制台中绘制,棋盘每- - 个点都有对应的坐标,下棋者输 入对应坐标落棋子,运行效果如图所 ...
最新文章
- 建立双链表(头插法)
- 2 resize 到指定大小_阿里巴巴为什么让初始化集合时必须指定大小?
- python做电脑软件-作为一个Python程序员,电脑上应该具备哪些软件?
- C 引用和指针的区别
- SPI及其工作原理浅析
- 【年终总结】2021年有三AI做了什么,2022年我们要做什么?
- CentOS7执行yum命令出错
- php读取gitlab用户信息,gitlab api获取所有用户的记录
- mysql集群搭建.pdf,内容太过真实
- ZDI 公布多个尚未修复的 Windows 高危0day详情
- springboot 建readme_README
- 2004级C++试题及答案
- 打印服务Print Spooler自动停止解决方案
- 计算机xp怎么调整亮度,[如何调整计算机屏幕的亮度] xp系统如何调整屏幕的亮度?屏幕亮度调整方法的详细说明...
- 傅里叶变换matlab学习笔记
- PX Deq Credit: send blkd (3)---Script to monitor parallel queries (文档 ID 45
- C# 网易云音乐API 多达100+ 支持登录,无损下载
- 小程序常见故障解决方法分享|微信小程序平台常见拒绝情形
- eclipse java 测试_测试:LR中使用Eclipse来进行Java程序的测试方法
- 菜刀php后门,关于菜刀后门排查