終于完成作業了
package com.pokergame;
import java.util.ArrayList;
public class Player {
public int id;
public String name;
public ArrayList<Card> cards;
public Player(int id, String name) {
this.id = id;
this.name = name;
this.cards = new ArrayList<Card>();
}
}
package com.pokergame;
public class Card implements Comparable<Card> {
public String type;
public String value;
public Card(String type, String value){
this.type = type;
this.value = value;
}
public int eqType(){
? ? ? ? int flower = 0;
? ?switch(type){
? ? ? ? case "黑桃": flower = 4;break;
? ? ? ? case "紅桃": flower = 3;break;
? ? ? ? case "梅花": flower = 2;break;
? ? ? ? case "方片": flower = 1;break;
? ?} ? ? ??
? ? ? ? return flower;
? ? }
@Override
public int compareTo(Card o) {
int flag = this.value.compareTo(o.value);
if ( flag == 0) {
return this.eqType() - o.eqType();
} else {
return flag;
}
}
}
package com.pokergame;
import java.util.ArrayList;
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;
public class PlayGame {
public ArrayList<Card> pokers = new ArrayList<Card>();
public ArrayList<Card> newpokers = new ArrayList<Card>();
public ArrayList<Player> players = new ArrayList<Player>();
public final static String[] type = {"方片","梅花","紅桃","黑桃"};
public final static String[] size = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
//創建撲克牌
public ArrayList<Card> createPokerSet(){
System.out.println("創建撲克牌...");
for ( String i : type ){
for ( String j : size ){
pokers.add(new Card(i, j));
System.out.print(i+j+",");
}
}
System.out.println("\n撲克牌創建完成!共有"+pokers.size()+"張牌。");
return pokers;
}
//創建玩家
public void createPlayer(int playernum){
for (int i = 1; i <= playernum; i++){
System.out.println("請輸入第"+i+"位玩家的ID和姓名:");
int id = 0;
String name = "";
while (true){
try {
//scanner對象發生異常之后必須重置才可使用,故必須放在循環內,否則循環將變成死循環
Scanner input = new Scanner(System.in);
System.out.println("輸入ID:");
id = input.nextInt();
System.out.println("輸入姓名:");
name = input.next();
break;
} catch (InputMismatchException e) {
System.out.println("請輸入整數類型的ID!");
}
}
players.add(new Player(id, name));
}
for (Player player : players){
System.out.println("----歡迎玩家:"+player.name);
}
}
//洗牌,打亂撲克牌的順序
public void shuffle(){
Random random = new Random();
for ( int i = 0; i < pokers.size(); i++){
Card e = pokers.get(random.nextInt(pokers.size()));
newpokers.add(e);
}
}
//給玩家發牌
public void getCards(int cardsnum){
System.out.println("----------開始發牌----------");
int idx = 0;
for (int i = 1; i <= cardsnum; i++){
for (Player player : players) {
System.out.println("----玩家:"+player.name+"-拿牌");
// System.out.println(newpokers.get(idx).type+newpokers.get(idx).value);
player.cards.add(newpokers.get(idx));
idx++;
}
}
System.out.println("----------發牌結束----------");
}
public void show(ArrayList<Card> cards){
for (Card card:cards){
System.out.print(card.type+card.value+",");
}
System.out.println();
}
? ?
public void play(){
System.out.println("----------開始游戲----------");
ArrayList<Card> mc = new ArrayList<Card>();
//選出每個玩家手上的最大牌
for (Player player:players) {
Collections.sort(player.cards);
int num = player.cards.size();
System.out.println("玩家:"+player.name+"最大的手牌為:"+player.cards.get(num-1).type+player.cards.get(num-1).value);
mc.add(player.cards.get(num-1));
}
//選出最大牌,宣布贏家
Collections.sort(mc);
Card max = mc.get(mc.size()-1);
for (Player player:players) {
if (player.cards.contains(max)) {
System.out.println("----------玩家"+player.name+"獲勝----------");
}
}
System.out.println("玩家各自手牌為:");
for (Player player:players){
System.out.print(player.name+":");
show(player.cards);
}
}
public static void main(String[] args) {
PlayGame pg = new PlayGame();
pg.createPokerSet();
pg.createPlayer(2);
pg.shuffle();
pg.getCards(2);
pg.play();
}
}