问答详情
源自:7-1 简易扑克牌游戏

卡牌是这样写的吗

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();
	}

}


提问者:邬俭培 2016-04-05 22:54

个回答

  • 慕移动9181930
    2022-03-24 06:43:20

    虽然我已经照敲了一遍了不过上传了还是很棒&nbsp;

  • linfu2013
    2016-04-15 20:25:43

    是我错了,compare方法没看好

  • linfu2013
    2016-04-15 19:55:10

    //比较自己手牌大小

            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());是不是有错的啊,你这样比较是不是就写成玩家第二张牌就是最大的。

  • suyanggg
    2016-04-09 15:47:00

    恩你是对的