作業(yè)提交!請大佬指出優(yōu)化之處
public class Test {
private List<PuKe> pukes? ?= new ArrayList();
private List<Player> plays = new ArrayList();
private Random? ? ?random? = new Random();
private Scanner? ? scanner = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test = new Test();
test.createPuKe();
test.shuffleCards();
test.createPlay();
test.Licensing();
}
//創(chuàng)建撲克
private void createPuKe() {
System.out.println("-----------創(chuàng)建撲克。。。。 -----------");
String[] key = {"?","?","?","?"};
String[] value = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
for (int i = 0; i < key.length; i++) {
for (int j = 0; j < value.length; j++) {
pukes.add(new PuKe(key[i],value[j]));
}
}
System.out.println("------------創(chuàng)建撲克成功------------");
System.out.println("為"+Arrays.toString(pukes.toArray(new PuKe[pukes.size()])));
}
//洗牌?
private void shuffleCards() {
System.out.println("-----------開始洗牌。。。。-----------");
for (int i = 0; i < 5; i++) {//洗牌五次
for (int j = 0; j < 52; j++) {
int endIndex = random.nextInt(52 - j) + j;//隨機交換位置的角標
PuKe start? ?= pukes.get(j);
PuKe end? ? ?= pukes.get(endIndex);
//兩者交換位置
pukes.set(j,end);
pukes.set(endIndex,start);
}
}
System.out.println("--------------洗牌結束-------------");
System.out.println("-------------洗牌后順序------------");
System.out.println("為"+Arrays.toString(pukes.toArray(new PuKe[pukes.size()])));
}
//創(chuàng)建玩家
private void createPlay() {
System.out.println("-------------創(chuàng)建玩家 -------------");
for (int i = 0; i < 2; i++) {//循環(huán)創(chuàng)建兩位玩家
Player player = new Player();
System.out.println("請輸入第"+(i+1)+"位玩家的ID和姓名:");
System.out.println("輸入ID:");
player.setId(scanner.next());
System.out.println("輸入姓名:");
player.setName(scanner.next());
plays.add(player);
}
for (Player player : plays) {
System.out.println("-----歡迎玩家:"+player.getName());
}
}
//發(fā)牌并比較大小
private void Licensing() {
System.out.println("-----------開始發(fā)牌。。。。-----------");
int pukeSize = pukes.size();
for (int i = 0; i < 2; i++) {//發(fā)牌為兩輪
for (Player player : plays) {//每輪每家一張牌
System.out.println("-----玩家:"+player.getName()+"--拿牌");
PuKe puke = pukes.get(random.nextInt(pukeSize));
player.setPuKe(puke);
pukes.remove(puke);
pukeSize--;//發(fā)完一張牌就少一張
}
}
System.out.println("--------------發(fā)牌結束-------------");
System.out.println("玩家各自的手牌為:");
ArrayList<PuKe> maxPuKe = new ArrayList();//創(chuàng)建兩玩家最大牌的集合
for (Player player : plays) {
System.out.println(player.getName()+":"+Arrays.toString(player.getPlayPuKeList().toArray(new PuKe[player.getPlayPuKeList().size()])));
//排序
Collections.sort(player.getPlayPuKeList());
//排序之后打印
// System.out.println(player.getName()+":"+Arrays.toString(player.getPlayPuKeList().toArray(new PuKe[player.getPlayPuKeList().size()])));
//將最大的牌存儲
maxPuKe.add(player.getPlayPuKeList().get(1));
}
//兩玩家的大牌間的比較
Collections.sort(maxPuKe);
for (Player player : plays) {
if(player.getPlayPuKeList().contains(maxPuKe.get(1))) {
System.out.println("玩家"+player.getName()+"獲勝");
}
}
}
}
public class Player {
private String name;
private String id;
private List<PuKe> playPuKe = new ArrayList<>();
public void setPuKe(PuKe pk) {
playPuKe.add(pk);
}
public List<PuKe> getPlayPuKeList(){
return playPuKe;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
public class PuKe implements Comparable<PuKe>{
private String key;
private String value;
String[] KEY = {"?","?","?","?"};
String[] VALUE = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
public PuKe() {
super();
}
public PuKe(String key, String value) {
super();
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return key+value;
}
@Override
public int compareTo(PuKe o) {
List<String> keys = Arrays.asList(KEY);
List<String> values = Arrays.asList(VALUE);
if(values.indexOf(this.value) == values.indexOf(o.getValue())) {//value相等就需要判斷key
if(keys.indexOf(this.key) == keys.indexOf(o.getKey())) {
return 0;
}else {
return keys.indexOf(this.key) - keys.indexOf(o.getKey());
}
}else {
return values.indexOf(this.value) - values.indexOf(o.getValue());
}
}
}
2018-12-12
ArrayList后面你好像忘了寫泛型了......