发光的蜜蜂
2016-04-29 17:32
package com.liuyang; import java.util.ArrayList; import java.util.List; public class Card { public String ID; public String Name; public List<poker> pokerCard; public Card(){ } public Card(String ID,String Name){ this.ID=ID; this.Name=Name; this.pokerCard =new ArrayList<poker>(); } public String getID() { return ID; } public String getName() { return Name; } public List<poker> getPokerCard() { return pokerCard; } }
package com.liuyang; import java.util.Arrays; import java.util.List; public class poker implements Comparable<poker>{ public String value;//扑克牌面值 public String color;//扑克牌花色 public poker(String value,String color){ this.value=value; this.color=color; } public poker() { // TODO 自动生成的构造函数存根 } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } @Override public int compareTo(poker o) { // TODO 自动生成的方法存根 List<String> valueBase = Arrays.asList("K","Q","J","10","9","8","7","6","5","4","3","2","A"); List<String> colorBase = Arrays.asList("黑桃","红桃","梅花","方片"); if(valueBase.indexOf(this.value) == valueBase.indexOf(o.value)) return Integer.valueOf(colorBase.indexOf(this.color)).compareTo(Integer.valueOf(colorBase.indexOf(o.getColor()))); else return Integer.valueOf(valueBase.indexOf(this.value)).compareTo(Integer.valueOf(valueBase.indexOf(o.getValue()))); } }
package com.liuyang; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.Set; public class Test { public List<poker> pokerTo; private int COLORNUM = 13; public int CARDNUM = 52; public Map<String,Card> cardS; public Test(){ this.cardS=new HashMap<String, Card>(); pokerTo=new ArrayList<poker>(); } public static void main(String[] args) { // TODO 自动生成的方法存根 Test t=new Test(); System.out.println("----------创建扑克牌-----------"); t.PokerDeal(); //创建扑克; System.out.println("----------扑克牌创建成功---------"); System.out.print("扑克含有:"); t.testPoker(); //输出扑克所包含牌; System.out.println(); System.out.println("-----------开始洗牌-------------"); t.pokerWash(); //打乱扑克顺序; System.out.println("-----------洗牌结束-------------"); System.out.println("-----------创建玩家-------------"); t.TestIDName(); //创建玩家输入玩家ID,Name; System.out.println("-----------开始发牌-------------"); t.pokerDeal(); //将扑克发到玩家手中; System.out.println("-----------发牌结束-------------"); System.out.println("-----------游戏开始-------------"); t.TestPokerUp(); //输出玩家手中扑克; t.pokerSort(); //比较玩家手中扑克大小; } public void PokerDeal(){ String valueB[]= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; String colorB[]= {"黑桃","红桃","梅花","方片"}; for (int j = 0; j < CARDNUM/COLORNUM;j++) { for (int i = 0; i < COLORNUM; i++) { poker pokers=new poker(valueB[i],colorB[j]);//向pokers临时对象中保存poker牌组数据; pokerTo.add(pokers); //添加到pokerTo中; } } } public void testPoker(){ int size=pokerTo.size(); //用size对pokerTo进行输出 for (int i = 0; i < size; i++) { poker cr = (poker)pokerTo.get(i); //调用pokerTo中的poker数据,保存在临时对象cr中; System.out.print(cr.color+cr.value+","); } } public void pokerWash(){ Collections.shuffle(pokerTo); //用Collections.shuffle()语句把顺序打乱; } public void TestIDName() { Scanner to=new Scanner(System.in); int i=0; //需要更改游戏参与人数只需要更改while中i的最大值 while (i<2) { System.out.println("请输入第"+(i+1)+"位玩家ID和姓名"); System.out.print("输入ID:"); String ID=to.next(); Card ca=cardS.get(ID); if(ca==null){ //确认card中是否有该学生ID; System.out.print("请输入学生姓名:"); String Name=to.next(); Card stu=new Card(ID, Name); cardS.put(ID, stu); i++; }else { System.out.println("输入有误"); }continue; } for (String a : cardS.keySet()) { //用fore循环输出玩家信息 System.out.println("----欢迎玩家:"+cardS.get(a).ID+" "+cardS.get(a).Name); } } public void pokerDeal(){ //发牌 poker poker; for (int i = 0; i < 2; i++) { //需要更改玩家手牌数量,只需要更改i最大值; Set<String> key=cardS.keySet(); for (String a : key) { poker = pokerTo.get(0); //取出poker中的第一张牌 pokerTo.remove(0); //把poker中的第一张牌删除 System.out.println(cardS.get(a).Name+"拿牌"); cardS.get(a).getPokerCard().add(poker); //将取出的牌交给玩家 } } } public void pokerSort(){ poker b = null; //创建放牌的临时变量 Card d=null; //创建放玩家信息的临时变量 for (String a : cardS.keySet()) { Collections.sort(cardS.get(a).pokerCard); //通过collections.sort对玩家手牌进行排序; List<com.liuyang.poker> s=cardS.get(a).getPokerCard(); poker ss=s.get(0); //将玩家排序后最大的牌放入临时变量中 System.out.println("玩家"+cardS.get(a).Name+"最大手牌为:"+ss.color+ss.value); if(b==null||ss.compareTo(b)<0){ b=ss; d=cardS.get(a); //存放牌最大的玩家的手牌和信息 } } System.out.println("第"+d.ID+"名玩家"+d.Name+"获胜,最大手牌为"+b.value+b.color); //输出 } public void TestPokerUp(){ //通过双for循环输出玩家手中的牌 for (String a : cardS.keySet()) { System.out.println(cardS.get(a).Name+"手牌为"); for (poker poker2 : cardS.get(a).getPokerCard()) { System.out.print(poker2.color+poker2.value); System.out.println(""); } } } }
重写的equals方法好像有问题喔
大神好厉害!!!大神是帅逼!!!
能问下,在重写的compaqreTo()方法中,list中为什么能用indexOf()方法查找到this.value的位置吗?不是特别理解
非常不错
Java入门第三季
409788 学习 · 4340 问题
相似问题