//运行示例:-----------创建扑克牌-------------
-----------创建成功---------------
-----------显示扑克牌--------------
[黑桃:A 黑桃:2 黑桃:3 黑桃:4 黑桃:5 黑桃:6 黑桃:7 黑桃:8 黑桃:9 黑桃:10 黑桃:J 黑桃:Q 黑桃:K 梅花:A 梅花:2 梅花:3 梅花:4 梅花:5 梅花:6 梅花:7 梅花:8 梅花:9 梅花:10 梅花:J 梅花:Q 梅花:K 红桃:A 红桃:2 红桃:3 红桃:4 红桃:5 红桃:6 红桃:7 红桃:8 红桃:9 红桃:10 红桃:J 红桃:Q 红桃:K 方片:A 方片:2 方片:3 方片:4 方片:5 方片:6 方片:7 方片:8 方片:9 方片:10 方片:J 方片:Q 方片:K ]
--------------创建玩家-------------
请输入第1名玩家信息:
请输入玩家ID
01
请输入玩家姓名:
tom
请输入第2名玩家信息:
请输入玩家ID
02
请输入玩家姓名:
ken
-----------------欢迎玩家tom!---------------
-----------------欢迎玩家ken!---------------
--------------开始游戏--------------
--------------开始洗牌--------------
--------------开始发牌--------------
玩家tom拿牌
玩家ken拿牌
玩家tom拿牌
玩家ken拿牌
--------------发牌结束--------------
玩家tom最大的手牌为:黑桃9
玩家ken最大的手牌为:方片8
玩家tom获胜!
-------------------游戏结束----------------
玩家tom的手牌为:[梅花 5黑桃 9]
玩家ken的手牌为:[方片 8方片 2]
-----------------------代码如下-------------------------------
//卡片类
public class cards {
String colour;//花色
String cr;//字符
public cards(String colour,String cr){
this.colour=colour;
this.cr=cr;
}
}
//玩家类
public class player {
int id;//玩家id
String name;//玩家姓名
public player(int id,String name){
this.id=id;
this.name=name;
}
public player(){}
}
//测试游戏类
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class game {
static Random r=new Random();
Scanner sc=new Scanner(System.in);
static String[] n=new String[2];//存放玩家姓名
public static List<cards>cardToSelect;//存放卡片
public static List<cards>hands;//存放玩家1卡片
public static List<cards>hands1;//存放玩家2卡片
public List<String>colourToSelect=new ArrayList<String>();//存放花色集合
public List<String>crToSelect=new ArrayList<String>();//存放点数集合
String[] colour={"黑桃","梅花","红桃","方片"};
String[] cr={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
//在花色集合和点数集合中添加元素
public void T(){
colourToSelect.addAll(Arrays.asList(colour));
crToSelect.addAll(Arrays.asList(cr));
}
public game(){
this.cardToSelect=new ArrayList<cards>();
this.hands=new ArrayList<cards>();
this.hands1=new ArrayList<cards>();
}
//创建扑克牌
public void testAdd(){
for(int i=0;i<colour.length;i++){
for(int j=0;j<cr.length;j++){
cardToSelect.add(new cards(colour[i],cr[j]));
}
}
}
//显示扑克牌
public void show(){
StringBuilder sb=new StringBuilder();
for(cards c:cardToSelect){
sb.append(c.colour+":"+c.cr+" ");
}
System.out.println("["+sb+"]");
}
//开始洗牌
public void testShuffle(){
testAdd();
Collections.shuffle(cardToSelect);
}
//创建玩家
public void createplayer(){
for(int i=0;i<2;i++){
player p=new player();
System.out.println("请输入第"+(i+1)+"名玩家信息:");
while(true){
try{
System.out.println("请输入玩家ID");
int id=sc.nextInt();
p.id=id;
break;
}catch(InputMismatchException e){
System.out.println("输入类型错误!");
continue;
}
}
System.out.println("请输入玩家姓名:");
String name=sc.next();
p.name=name;
n[i]=name;
}
System.out.println("-----------------欢迎玩家"+n[0]+"!---------------");
System.out.println("-----------------欢迎玩家"+n[1]+"!---------------");
}
//比较大小
public cards testcompare(cards C1,cards C2){
T();
//根据索引位置的数据比较大小
Integer a=crToSelect.indexOf(C1.cr);
Integer b=crToSelect.indexOf(C2.cr);
int k=a.compareTo(b);
if(k==0){
Integer c=colourToSelect.indexOf(C1.colour);
Integer d=colourToSelect.indexOf(C2.colour);
int e=c.compareTo(d);
if(e==0)return C1;
else if(e<0)return C1;
else return C2;
}else if(k>0)return C1;
else return C2;
}
public static void main(String[] args) {
game g=new game();
System.out.println("-----------创建扑克牌-------------");
g.testAdd();
System.out.println("-----------创建成功---------------");
System.out.println("-----------显示扑克牌--------------");
g.show();
System.out.println("--------------创建玩家-------------");
g.createplayer();
System.out.println("--------------开始游戏--------------");
System.out.println("--------------开始洗牌--------------");
g.testShuffle();
System.out.println("--------------开始发牌--------------");
//g.T();
System.out.println("玩家"+n[0]+"拿牌");
cards c=cardToSelect.get(r.nextInt(52));//玩家1第一张手牌
hands.add(c);//加入玩家1手牌集合
cardToSelect.remove(c);
System.out.println("玩家"+n[1]+"拿牌");
cards f=cardToSelect.get(r.nextInt(51));//玩家2第一张手牌
hands1.add(f);//加入玩家2手牌集合
cardToSelect.remove(f);
System.out.println("玩家"+n[0]+"拿牌");
cards c1=cardToSelect.get(r.nextInt(50));//玩家1第2张手牌
hands.add(c1);//加入玩家1手牌集合
cardToSelect.remove(c1);
System.out.println("玩家"+n[1]+"拿牌");
cards f1=cardToSelect.get(r.nextInt(49));//玩家2第2张手牌
hands1.add(f1);//加入玩家2手牌集合
cardToSelect.remove(f1);
System.out.println("--------------发牌结束--------------");
cards y=g.testcompare(c, c1);//求玩家1最大手牌
System.out.println("玩家"+n[0]+"最大的手牌为:"+y.colour+y.cr);
cards y1=g.testcompare(f, f1);//求玩家2最大手牌
System.out.println("玩家"+n[1]+"最大的手牌为:"+y1.colour+y1.cr);
cards w=g.testcompare(y, y1);//玩家最大手牌相比获胜手牌
if(w.equals(y)){System.out.println("玩家"+n[0]+"获胜!");}
else if(w.equals(y1)){System.out.println("玩家"+n[1]+"获胜!");}
else{System.out.println("平局!继续努力。。");}
System.out.println("-------------------游戏结束----------------");
System.out.print("玩家"+n[0]+"的手牌为:[");
for(cards l:hands){
System.out.print(l.colour+" "+l.cr+"");
}
System.out.print("]");
System.out.println("");
System.out.print("玩家"+n[1]+"的手牌为:[");
for(cards u:hands1){
System.out.print(u.colour+" "+u.cr+"");
}
System.out.print("]");
}
}