亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我的代碼,幫忙看看哪里有待改進?

//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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號