一、创建扑克牌的Class
public class Pok {
public String point;
public String color;
public Pok(String point,String color){
this.color=color;
this.point=point;
}
}
二、创建玩家类
public class Player {
public int id;
public String name;
List<Pok> handCards =new ArrayList<Pok>();
public Player(int id,String name){
this.id =id;
this.name =name;
}
三、比较方法,重写compare方法,自定义扑克牌之间比较大小规则
具体是通过比较点数的大小,四个花色也通过数字来比较大小
import java.util.Comparator;
public class Compare implements Comparator<Pok>{
@Override
public int compare(Pok o1, Pok o2) {
String[] color = {"方块","梅花","红桃","黑桃"};
String[] point=new String[]{"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
int temp1 =0;
int temp2 =0;
for(int i=0;i<point.length;i++){
if(o1.point.equals(point[i])) temp1 +=i*10;
if(o2.point.equals(point[i])) temp2 +=i*10;
}
for(int i=0;i<color.length;i++){
if(o1.color.equals(color[i])) temp1 +=i;
if(o2.color.equals(color[i])) temp2 +=i;
}
if(temp1>temp2) return 1;
if(temp1==temp2)
return 0;
else
return -1;
}
//写个主方法测试下
public static void main(String[] args){
Compare c= new Compare();
Pok p1= new Pok("3","梅花");
Pok p2= new Pok("3","方块");
int a= c.compare(p1, p2);
System.out.println(a);
}}
四、游戏按步骤(方法)开始:
①:创建牌组
②:洗牌:用Collections.shuffle();打乱序列的排序
③:创建两名玩家(从控制台输入时,注意可能出现的异常)
④:给玩家各发两张牌
⑤:对玩家的手牌进行排序,比较最大值即可判断出获胜者!!!
mport java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class GameStart {
String[] color = {"方块","梅花","红桃","黑桃"};
String[] point=new String[]{"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
Scanner input= new Scanner(System.in);
List<Pok> poklist= new ArrayList<Pok>();
List<Player> playerlist= new ArrayList<Player>();
public void pokSet(){
System.out.println("————————————————组建牌组:");
for(int i=0;i<color.length;i++){
for(int j=0;j<point.length;j++){
poklist.add(new Pok(point[j],color[i]));
}
}
int i=0;
for (Pok p : poklist) {
System.out.print(p.color+p.point+" ");
i++;
if(i%13==0)
System.out.println("");
}
}
public void shuffle(){
System.out.println("——————————————————开始洗牌喽:");
Collections.shuffle(poklist);
int i=0;
for (Pok p : poklist) {
System.out.print(p.color+p.point+" ");
i++;
if(i%13==0)
System.out.println("");
}
}
public void playerSet(){
System.out.println("————————————————创建两名玩家:");
for(int i=0;i<2;i++){
System.out.println("请输入玩家ID:");
int id= 0;
try{
id= input.nextInt();
}catch(Exception e){
System.out.println("输错了,欧尼酱!");
input= new Scanner(System.in);
i--;
continue;
}
System.out.println("请输入玩家姓名:");
String name= input.next();
playerlist.add(new Player(id,name));
}input.close();
}
//给俩玩家发牌,即把无序的牌组的前四张 按顺序添加到他们手牌中
public void deal(){
playerlist.get(0).handCards.add(poklist.get(0));
playerlist.get(1).handCards.add(poklist.get(1));
playerlist.get(0).handCards.add(poklist.get(2));
playerlist.get(1).handCards.add(poklist.get(3));
System.out.println("——————————————发牌结束,来看看他俩的手牌吧:");
for(Player p:playerlist){
System.out.println(p.name+":");
for(Pok pk:p.handCards){
System.out.print(pk.color+pk.point+" ");
}
System.out.println("");
}
}
//对玩家的手牌排序,然后比较他们手牌中最大的一张即可
public void sort(){
Collections.sort(playerlist.get(0).handCards,new Compare());
Collections.sort(playerlist.get(1).handCards,new Compare());
//创建一个max序列,存放俩玩家手牌中最大的一张,然后给max排序,判断其第一张是谁的牌即可
List<Pok> max= new ArrayList<Pok>();
max.add(playerlist.get(0).handCards.get(0));
max.add(playerlist.get(1).handCards.get(0));
Collections.sort(max,new Compare());
System.out.println("———————————————对两位玩家手牌进行比较");
if(max.get(0)==playerlist.get(0).handCards.get(0)){
System.out.println("则获胜方为:"+playerlist.get(0).name);
}else{
System.out.println("则获胜方为:"+playerlist.get(1).name);
}
}
public static void main(String[] args){
GameStart game= new GameStart();
game.pokSet();
game.shuffle();
game.playerSet();
game.deal();
game.sort();
}}