运行结果:
--------------创建扑克牌------------
------------创建扑克牌成功----------
为:[2方块, 2梅花, 2红桃, 2黑桃, 3方块, 3梅花, 3红桃, 3黑桃, 4方块, 4梅花, 4红桃, 4黑桃, 5方块, 5梅花, 5红桃, 5黑桃, 6梅花, 6方块, 6黑桃, 6红桃, 7梅花, 7方块, 7黑桃, 7红桃, 8梅花, 8方块, 8黑桃, 8红桃, 9梅花, 9方块, 9黑桃, 9红桃, 10红桃, 10黑桃, 10方块, 10梅花, J红桃, J黑桃, J方块, J梅花, Q红桃, Q黑桃, Q方块, Q梅花, k红桃, k黑桃, k方块, k梅花, A黑桃, A红桃, A梅花, A方块]
--------------开始洗牌------------
--------------洗牌结束------------
为:[6黑桃, A方块, 7梅花, J梅花, 3方块, 9方块, k梅花, 8黑桃, 2梅花, 5黑桃, 2红桃, 4方块, 9黑桃, 6红桃, 2方块, 9梅花, k方块, 5红桃, 9红桃, 7黑桃, A红桃, 10方块, Q方块, 4黑桃, 6梅花, 4梅花, 10黑桃, 5梅花, A黑桃, Q黑桃, 8梅花, 3梅花, J方块, k黑桃, 8红桃, 8方块, J黑桃, Q红桃, 7红桃, J红桃, 3黑桃, A梅花, Q梅花, 7方块, 3红桃, 6方块, 2黑桃, 10梅花, 5方块, 4红桃, 10红桃, k红桃]
--------------创建玩家------------
请输入第1位玩家的ID和姓名
请输入ID:
1
请输入姓名:
小明
请输入第2位玩家的ID和姓名
请输入ID:
2
请输入姓名:
小红
请输入第3位玩家的ID和姓名
请输入ID:
3
请输入姓名:
小潘
----欢迎玩家:小明参加游戏---
----欢迎玩家:小红参加游戏---
----欢迎玩家:小潘参加游戏---
-----------开始发牌---------
---玩家小明拿牌
---玩家小红拿牌
---玩家小潘拿牌
---玩家小明拿牌
---玩家小红拿牌
---玩家小潘拿牌
---玩家小明拿牌
---玩家小红拿牌
---玩家小潘拿牌
---玩家小明拿牌
---玩家小红拿牌
---玩家小潘拿牌
----------发牌结束----------
----------开始游戏----------
玩家 :小明最大手牌为: k梅花
玩家 :小红最大手牌为: A方块
玩家 :小潘最大手牌为: 9方块
--------玩家:小红胜利---------
------------玩家手牌---------
--玩家:小明 5黑桃 6黑桃 J梅花 k梅花
--玩家:小红 2红桃 3方块 8黑桃 A方块
--玩家:小潘 2梅花 4方块 7梅花 9方块
代码:
玩家类:WanJia
package com.hxf.puke;
import java.util.List;
import java.util.ArrayList;
/
玩家类
-
*/
public class WanJia {
//定义玩家id和姓名
private int id;
private String name;
public List<Integer> shoupai;public WanJia(){
}
public WanJia(int id, String name){
this.id = id;
this.name = name;
this.shoupai = new ArrayList<Integer>();
}public int getId(){
return id;
}
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());
return result;
}@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof WanJia))
return false;
WanJia other = (WanJia) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
游戏类:YouXi
package com.hxf.puke;
import java.util.*;
public class YouXi {
private final int WANJIARENSHU = 3;//定义玩家人数
private final int FAPAISHU = 12;//定义发牌数量
private String[] DianShu = {"2","3","4","5","6","7","8","9","10","J","Q","k","A"};//定义牌的点数
private String[] HuaShe = {"方块","梅花","红桃","黑桃"};//定义牌的花色
private Map<Integer, String> newPuKe;//定义扑克牌
private List<Integer> XuHao;//定义扑克牌序号
private List<Integer> newXuHao;//定义洗牌后扑克牌序号
private Map<Integer, WanJia> ampWanJia;//定义玩家
private List<WanJia> WanJiaDuiXiang;
private Scanner console;
private Random random;
public YouXi(){
newPuKe = new HashMap<Integer, String>();
XuHao = new ArrayList<Integer>();
newXuHao = new ArrayList<Integer>();
ampWanJia = new HashMap<Integer, WanJia>();
WanJiaDuiXiang = new ArrayList<WanJia>();
console = new Scanner(System.in);
random = new Random();//实例化
}
/*
* 创建扑克牌
* CreatePuKe()
*/
public void CreatePuKe(){
System.out.println("--------------创建扑克牌------------");
int i=0;
for(String huase:DianShu){
for(String dianshu:HuaShe){
String temp = huase.concat(dianshu);
newPuKe.put(i,temp);
XuHao.add(i);
i++;
}
}
System.out.println("------------创建扑克牌成功----------");
//显示扑克牌
System.out.println("为:"+newPuKe.values());
}
/*
* 洗牌
*
*/
public void XiPai(){
System.out.println("--------------开始洗牌------------");
while(!(XuHao.isEmpty())){//判断是否为空
//获取随机数
int rand = random.nextInt(XuHao.size());
//然后获取把xuhao集合的值保存在newxuhao里面
newXuHao.add(XuHao.get(rand));
XuHao.remove(rand);
}
System.out.println("--------------洗牌结束------------");
String pk="[";
int i=0 ;
for(;i<newXuHao.size();i++){
if(i == newXuHao.size()-1)pk+= newPuKe.get(newXuHao.get(i));
else pk+= newPuKe.get(newXuHao.get(i))+", ";
}
pk+="]";
//把字符数组变为字符串
System.out.println("为:"+pk);
}
/*
* 创建玩家
* CreateWanJia()
*/
public void CreateWanJia(){
System.out.println("--------------创建玩家------------");
for(int i = 0; i<WANJIARENSHU; i++){
System.out.println("请输入第"+(i+1)+"位玩家的ID和姓名");
while(true){
try {
System.out.println("请输入ID:");
int id = console.nextInt();
WanJia temp = ampWanJia.get(id);
if(temp!= null){
System.out.println("输入ID已存在!请重新输入");
continue;
}
String name = "";
while(true){
System.out.println("请输入姓名:");
name = console.next();
if(!Test(name)){
System.out.println("输入用户名已存在!请重新输入");
console.nextLine();
continue;
}else{
break;
}
}
WanJia wj = new WanJia(id, name);
ampWanJia.put(id,wj);
WanJiaDuiXiang.add(wj);
break;
}catch(InputMismatchException e) {
System.out.println("输入ID类型只能是整形");
console.nextLine();
}
}
}
//打印玩家
for(WanJia wj:WanJiaDuiXiang){
System.out.println("----欢迎玩家:"+wj.getName()+"参加游戏---");
}
}
/*
* 开始发牌
* FaPai()
*
*/
public void FaPai(){
System.out.println("-----------开始发牌---------");
for(int i=0;i<FAPAISHU;i++){
int n=i%WANJIARENSHU;
WanJiaDuiXiang.get(n).shoupai.add(newXuHao.get(i));
System.out.println("---玩家"+WanJiaDuiXiang.get(n).getName()+"拿牌");
}
System.out.println("----------发牌结束----------");
/*测试展现牌*/
/* for(WanJia wj:WanJiaDuiXiang){
Collections.sort(wj.shoupai);
System.out.print("--玩家:"+wj.getName());
for(Integer sp:wj.shoupai){
System.out.print(newPuKe.get(sp)+" ");
}
System.out.println();
}
*/
}
/*
* 比较玩家牌大小
* Open brand
*/
public void OpenPuKe(){
System.out.println("----------开始游戏----------");
Integer max =0;
String name = "";
int n=0;
for(WanJia wj:WanJiaDuiXiang){
Collections.sort(wj.shoupai);
System.out.println("玩家 :"+wj.getName()+"最大手牌为: "+newPuKe.get(wj.shoupai.get((wj.shoupai.size()-1))));
max = max> wj.shoupai.get((wj.shoupai.size()-1))?max:wj.shoupai.get((wj.shoupai.size()-1));
if(max == wj.shoupai.get((wj.shoupai.size()-1))){
name = wj.getName();
}
}
System.out.println();
System.out.println("--------玩家:"+name+"胜利---------");
}
//显示玩家牌
public void show(){
System.out.println("------------玩家手牌---------");
for(WanJia wj:WanJiaDuiXiang){
System.out.print("--玩家:"+wj.getName());
for(Integer sp:wj.shoupai){
System.out.print(" "+newPuKe.get(sp));
}
System.out.println();
}
}
/*
* 测试
* 输入用户名判断是否存在
*/
public boolean Test(String name){
WanJia wj = new WanJia();
wj.setName(name);
if(WanJiaDuiXiang.contains(wj)){
return false;
}else{
return true;
}
}
public static void main(String[] args) {
YouXi youXi = new YouXi();
youXi.CreatePuKe();
System.out.println();
youXi.XiPai();
System.out.println();
youXi.CreateWanJia();
System.out.println();
youXi.FaPai();
System.out.println();
youXi.OpenPuKe();
System.out.println();
youXi.show();
}
//比较大小
}