import java.util.ArrayList;
import java.util.List;
public class Player {
private String id;
private String name;
List<Poker> handCard = new ArrayList<Poker>();//手牌
public Player(){};
public Player(String id,String name){
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}public class Poker {
/**扑克牌的类
* @param args
*/
private String colour;
private String point;
public Poker(){}
public Poker(String colour, String point){
this.colour = colour;
this.point = point;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public String getPoint() {
return point;
}
public void setPoint(String point) {
this.point = point;
}
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/**
* 比较规则
* @author wujianpei
*
*/
public class Compare implements Comparator<Poker>{
@Override
public int compare(Poker o1, Poker o2) {
List<String> colours = Arrays.asList("方块","梅花","红桃","黑桃");
List<String> points = Arrays.asList("2","3","4","5","6","7","8","9","10","J","Q","K","A");
if(points.indexOf(o1.getPoint())==points.indexOf(o2.getPoint()))
return((Integer)(colours.indexOf(o1.getColour())))
.compareTo
((Integer)(colours.indexOf(o2.getColour())));
else{
return((Integer)(points.indexOf(o1.getPoint())))
.compareTo
((Integer)(points.indexOf(o2.getPoint())));
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class MainTest {
/**两张牌斗大的测试类
* @param args
* 先把poker 和 Player的list创建出来
*/
List<Poker> poker = new ArrayList<Poker>();
List<Player> player = new ArrayList<Player>();
/**
* 1.创建一副扑克
* @param args
*/
public void buildPoker(){
String colours[] = {"方块","梅花","红桃","黑桃"};
String points[] = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
for (int i = 0 ; i<4 ;i++){
for(int j = 0; j<13;j++){
//创建一张新扑克牌
Poker cards = new Poker();
cards.setColour(colours[i]);
cards.setPoint(points[j]);
poker.add(cards);//加入到poker的list中
}
}
System.out.println("------创建扑克牌----------共有"+poker.size()+"张");
}
/**
* 2.洗牌
* @param args
*/
public void washCards(){
Collections.shuffle(poker);
System.out.println("------洗牌------------");
for (Poker p : poker) {
System.out.print(p.getColour()+p.getPoint());
}System.out.println();
}
/**
* 3.创建2个玩家
* @param args
*/
public void addPlayers(){
Scanner console = new Scanner(System.in);
for(int i = 1; i<3;i++){
Player p = new Player();
System.out.println("-----请输入玩家"+i+"的id------");
p.setId(console.next());
System.out.println("-----请输入玩家"+i+"的姓名------");
p.setName(console.next());
player.add(p);
}
// for (Player p : player) {
// System.out.println("成功创建玩家id:"+p.getId()+", 姓名:"+p.getName());
// }
console.close();
}
/**
* 4.发牌
* @param args
*/
public void getcards(){
//拿一张牌出来
for(int i = 0; i<2;i++){
for(int j = 0;j<2;j++){
//poker中拿第一张牌
Poker card = poker.get(0);
//放入Playerj的list里面
Player play = player.get(j);
play.handCard.add(card);
//把第一张牌从pokerlist中移除
poker.remove(card);
// System.out.println("玩家"+(j+1)+"获得第"+(i+1)+"张卡片");
}
}
//打印双方的牌,等下看结果清晰
for(int i =0 ;i<2;i++){
for(int j = 0 ; j<2; j++){
System.out.println("玩家"+(i+1)+"的第"+(j+1)+"张牌是"+player.get(i).handCard.get(j).getColour()
+player.get(i).handCard.get(j).getPoint());
}
}
}
/**
* 5比较大小
* @param args
*/
public void testCompare(){
//先写一个比较规则类
Compare cp = new Compare();
//比较自己手牌大小
for(int i = 0 ; i<2; i++){
Collections.sort(player.get(i).handCard, cp);
System.out.println("玩家"+player.get(i).getName()+"的最大手牌为:"
+player.get(i).handCard.get(1).getColour()+player.get(i).handCard.get(1).getPoint());
}
//比较双方最大的牌
if( cp.compare(player.get(0).handCard.get(0) , player.get(1).handCard.get(1))>0){
System.out.println("玩家"+player.get(0).getName()+"赢了");
}
else{
System.out.println("玩家"+player.get(1).getName()+"赢了");
}
}
public static void main(String[] args) {
MainTest mt = new MainTest();
mt.buildPoker();
mt.washCards();
mt.addPlayers();
mt.getcards();
mt.testCompare();
}
}是我错了,compare方法没看好
//比较自己手牌大小
for(int i = 0 ; i<2; i++){
Collections.sort(player.get(i).handCard, cp);
System.out.println("玩家"+player.get(i).getName()+"的最大手牌为:"
+player.get(i).handCard.get(1).getColour()+player.get(i).handCard.get(1).getPoint());
这里面那个player.get(i).handCard.get(1).getColour()+player.get(i).handCard.get(1).getPoint());是不是有错的啊,你这样比较是不是就写成玩家第二张牌就是最大的。
恩你是对的