为了账号安全,请及时绑定邮箱和手机立即绑定

我的代码,帮忙看看哪里有待改进?

//Card
import java.util.Arrays;
import java.util.List;

public class Card implements Comparable<Card> {
	private String colour;
	private String point;
	public final static List<String> cardColour = Arrays.asList("方片", "梅花", "红桃", "黑桃");
	public final static List<String> cardPoint = Arrays.asList("2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
			"k", "A");

	public Card() {

	}

	public Card(String colour, String point) {
		this.colour = colour;
		this.point = point;
	}

	public String getColour() {
		return colour;
	}

	public String getPoint() {
		return point;
	}

	// 不然输出的都是地址
	@Override
	public String toString() {
		return "[" + colour + " " + point + "]";
	}

	@Override
	public int compareTo(Card o) {
		if (cardPoint.indexOf(this.point) == cardPoint.indexOf(o.point)) {
			return Integer.valueOf(cardColour.indexOf(this.colour))
					.compareTo(Integer.valueOf(cardColour.indexOf(o.colour)));
		} else {
			return Integer.valueOf(cardPoint.indexOf(this.point))
					.compareTo(Integer.valueOf(cardPoint.indexOf(o.point)));
		}
	}
}
//player
import java.util.ArrayList;
import java.util.List;

public class Player {
	private int id;
	private String name;
	private List<Card> palyCards;

	public Player() {

	}

	public Player(int id, String name) {
		this.id = id;
		this.name = name;
		palyCards = new ArrayList<Card>();
	}

	public int getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public List<Card> getPalyCards() {
		return palyCards;
	}
}
//game
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Game {
	private Scanner scanner = new Scanner(System.in);
	private int playerNum = 2;
	private int cardNum = 2;
	private static List<Card> cardList;
	private static List<Player> playerList;

	private Game() {
		cardList = new ArrayList<Card>();
		playerList = new ArrayList<Player>();
	}

	// 顺序的初始牌
	private void newCard() {
		String[] colourGame = { "黑桃", "红桃", "梅花", "方片" };
		String[] pointGame = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "k", "A" };
		Card newcard;
		for (int i = 0; i < colourGame.length; i++) {
			for (int j = 0; j < pointGame.length; j++) {
				newcard = new Card(colourGame[i], pointGame[j]);
				cardList.add(newcard);
				// System.out.println(newcard.getColour() + newcard.getPoint());
			}
		}
	}

	// 洗牌
	private void Shuffle() {
		System.out.println("--------洗牌--------");
		Collections.shuffle(cardList);
	}

	// 获取玩家
	private void gamePlayer() {
		int num = 0;
		int id = 0;
		while (num < playerNum) {
			try {
				System.out.println("请输入第" + (num + 1) + "个玩家的ID:");
				id = scanner.nextInt();

			} catch (Exception e) {
				scanner.next();
				System.out.println("输入错误,请输入正整数!!");
				continue;
			}
			System.out.println("请输入第" + (num + 1) + "个玩家的姓名:");
			String name;
			name = scanner.next();
			Player player = new Player(id, name);
			playerList.add(player);
			System.out.println("添加了ID:" + player.getId() + "的玩家:" + player.getName());
			num++;
		}
	}

	// 发牌
	private void cardDeal() {
		System.out.println("--------开始发牌--------");
		for (int i = 0; i < cardNum; i++) {
			for (int j = 0; j < playerNum; j++) {
				Card cd = cardList.get(i * playerNum + j);
				playerList.get(j).getPalyCards().add(cd);
				// System.out.println(playerList.get(j).getPalyCards());
			}
		}
		System.out.println("--------发牌结束--------");
	}

	// 游戏进行
	private void play() {
		System.out.println("--------游戏开始--------");
		int winPlayer = 0;
		Card maxCard = playerList.get(0).getPalyCards().get(0);
		for (int i = 0; i < playerNum; i++) {
			Collections.sort(playerList.get(i).getPalyCards());
			Collections.reverse(playerList.get(i).getPalyCards());
			System.out.println("玩家:" + playerList.get(i).getName() + " 的手牌为:" + playerList.get(i).getPalyCards());
			if (maxCard.compareTo(playerList.get(i).getPalyCards().get(0)) < 0) {
				maxCard = playerList.get(i).getPalyCards().get(0);
				winPlayer = i;
			}
		}
		System.out.println("恭喜!!" + "ID:" + playerList.get(winPlayer).getId() + " 的玩家:"
				+ playerList.get(winPlayer).getName() + " 获得胜利!");
		System.out.println("最大的牌为:" + playerList.get(winPlayer).getPalyCards().get(0));
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Game game = new Game();
		game.gamePlayer();
		game.newCard();
		game.Shuffle();
		game.cardDeal();
		game.play();
	}

}


正在回答

2 回答

已修改id重复不检测

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Game {
	private Scanner scanner = new Scanner(System.in);
	private int playerNum = 2;
	private int cardNum = 2;
	private static List<Card> cardList;
	private static List<Player> playerList;

	private Game() {
		cardList = new ArrayList<Card>();
		playerList = new ArrayList<Player>();
	}

	// 顺序的初始牌
	private void newCard() {
		String[] colourGame = { "黑桃", "红桃", "梅花", "方片" };
		String[] pointGame = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "k", "A" };
		Card newcard;
		for (int i = 0; i < colourGame.length; i++) {
			for (int j = 0; j < pointGame.length; j++) {
				newcard = new Card(colourGame[i], pointGame[j]);
				cardList.add(newcard);
				// System.out.println(newcard.getColour() + newcard.getPoint());
			}
		}
	}

	// 洗牌
	private void Shuffle() {
		System.out.println("--------洗牌--------");
		Collections.shuffle(cardList);
	}

	// 获取玩家
	private void gamePlayer() {
		int num = 0;
		int id = 0;
		while (num < playerNum) {
			try {
				System.out.println("请输入第" + (num + 1) + "个玩家的ID:");
				id = scanner.nextInt();
				Player playerID=new Player();
				playerID.setId(id);
				if (!playerList.contains(playerID)) {
					System.out.println("请输入第" + (num + 1) + "个玩家的姓名:");
					String name;
					name = scanner.next();
					Player player = new Player(id, name);
					playerList.add(player);
					System.out.println("添加了ID:" + player.getId() + "的玩家:" + player.getName());
					num++;
				}else {
					System.out.println("您输入的ID已被占用,请重新输入!!");
					continue;
				}

			} catch (Exception e) {
				scanner.next();
				System.out.println("输入错误,请输入正整数!!");
				continue;
			}
		}
	}

	// 发牌
	private void cardDeal() {
		System.out.println("--------开始发牌--------");
		for (int i = 0; i < cardNum; i++) {
			for (int j = 0; j < playerNum; j++) {
				Card cd = cardList.get(i * playerNum + j);
				playerList.get(j).getPalyCards().add(cd);
				// System.out.println(playerList.get(j).getPalyCards());
			}
		}
		System.out.println("--------发牌结束--------");
	}

	// 游戏进行
	private void play() {
		System.out.println("--------游戏开始--------");
		int winPlayer = 0;
		Card maxCard = playerList.get(0).getPalyCards().get(0);
		for (int i = 0; i < playerNum; i++) {
			Collections.sort(playerList.get(i).getPalyCards());
			Collections.reverse(playerList.get(i).getPalyCards());
			System.out.println("玩家:" + playerList.get(i).getName() + " 的手牌为:" + playerList.get(i).getPalyCards());
			if (maxCard.compareTo(playerList.get(i).getPalyCards().get(0)) < 0) {
				maxCard = playerList.get(i).getPalyCards().get(0);
				winPlayer = i;
			}
		}
		System.out.println("恭喜!!" + "ID:" + playerList.get(winPlayer).getId() + " 的玩家:"
				+ playerList.get(winPlayer).getName() + " 获得胜利!");
		System.out.println("最大的牌为:" + playerList.get(winPlayer).getPalyCards().get(0));
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Game game = new Game();
		game.gamePlayer();
		game.newCard();
		game.Shuffle();
		game.cardDeal();
		game.play();
	}

}


0 回复 有任何疑惑可以回复我~
#1

狼女 提问者

哦还有重写了Player的equals()方法和增加了setId方法
2016-06-27 回复 有任何疑惑可以回复我~

同学,咱输入重复的id也不会被检测。还有就是我们输出扑克牌是换行的。和老师的效果不一样啊。

0 回复 有任何疑惑可以回复我~
#1

狼女 提问者

id重复..我修改了 至于你说输出扑克换行...这是 System.out.println(); 和 System.out.print(); 的区别而已吧?
2016-06-27 回复 有任何疑惑可以回复我~
#2

我真的不知道要取什么名字 回复 狼女 提问者

我也是最近在学到的 print println 谢谢你的代码。
2016-06-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我的代码,帮忙看看哪里有待改进?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信