交作業,老師再見
package PlayPokerGame;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
public class Initial {
? ? List <PokerCard> PokerCardList=new <PokerCard>ArrayList();//初始化撲克牌
? ? List <PokerCard> PlayerOnePokerCard=new <PokerCard>ArrayList(); //玩家一的手牌
? ? List <PokerCard> PlayerTwoPokerCard=new <PokerCard>ArrayList(); //玩家二的手牌
? ? Player playerOne;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //玩家一
? ? Player playerTwo; //玩家二
public void createPokerCard() {
System.out.println("----------創建撲克牌...----------");
String SuitString[]=new String[] {"方片","梅花","紅桃","黑桃"};
String SizeString[]=new String[] {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
for (int i=0;i<SuitString.length;i++) {? //將所有撲克牌按順序添加到List中
for(int j=0;j<SizeString.length;j++) {
PokerCardList.add(new PokerCard(SuitString[i],SizeString[j]));
}
}
System.out.print("----------創建撲克牌成功!----------\n為:");
for(PokerCard pokercard:PokerCardList) {
System.out.print(pokercard.getSuit()+pokercard.getSize()+",");
}
System.out.println();
}
public void shufflePokerCard() {
System.out.println("----------開始洗牌...----------");
Collections.shuffle(PokerCardList);
System.out.println("----------洗牌結束!----------");
}
public void createPlayers() {
System.out.println("----------創建玩家...----------");//創建第一位玩家
System.out.println("請輸入第1位玩家的ID和姓名");
try {
inputPlayerOne();
} catch (inputException e) {
System.out.println(e.getMessage());
createPlayers();
}
System.out.println("請輸入第2位玩家的ID和姓名"); ? //創建第二位玩家
try {
inputPlayerTwo();
} catch (inputException e) {
System.out.println(e.getMessage());
createPlayers();
}
System.out.println("---歡迎玩家:"+playerOne.getName());
System.out.println("---歡迎玩家:"+playerTwo.getName());
}
public void inputPlayerOne() throws inputException { //輸入玩家1信息
Scanner scannerPlayerOne=new Scanner(System.in);
System.out.println("輸入ID:");
String PlayerOneID=scannerPlayerOne.next();
if(isNumeric(PlayerOneID)==false) {
throw new inputException();
}
System.out.println("輸入姓名:");
String PlayerOneName=scannerPlayerOne.next();
playerOne=new Player(PlayerOneID,PlayerOneName);
}
public void inputPlayerTwo() throws inputException { //輸入玩家2信息
Scanner scannerPlayerTwo=new Scanner(System.in);
System.out.println("輸入ID:");
String PlayerTwoID=scannerPlayerTwo.next();
if(isNumeric(PlayerTwoID)==false) {
throw new inputException();
}
System.out.println("輸入姓名:");
String PlayerTwoName=scannerPlayerTwo.next();
playerTwo=new Player(PlayerTwoID,PlayerTwoName);
}
public void deal() {
Random random=new Random();
System.out.println("----------開始發牌...----------");
System.out.println("----玩家:"+playerOne.getName()+"-拿牌");
PlayerOnePokerCard.add(PokerCardList.remove(random.nextInt(PokerCardList.size()-1)));
System.out.println("----玩家:"+playerTwo.getName()+"-拿牌");
PlayerTwoPokerCard.add(PokerCardList.remove(random.nextInt(PokerCardList.size()-1)));
System.out.println("----玩家:"+playerOne.getName()+"-拿牌");
PlayerOnePokerCard.add(PokerCardList.remove(random.nextInt(PokerCardList.size()-1)));
System.out.println("----玩家:"+playerTwo.getName()+"-拿牌");
PlayerTwoPokerCard.add(PokerCardList.remove(random.nextInt(PokerCardList.size()-1)));
System.out.println("----------發牌結束!----------");
}
public void startGame() {
System.out.println("----------開始游戲!----------");
String SuitString[]=new String[] {"方片","梅花","紅桃","黑桃"};
String SizeString[]=new String[] {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
PokerCard PlayerOneMax;? //第一位玩家最大的手牌
PokerCard PlayerTwoMax;? //第二位玩家最大的手牌
if(PlayerOnePokerCard.get(0).getSize()==PlayerOnePokerCard.get(1).getSize()) {//計算第一位玩家哪張手牌最大
System.out.println(1);
int countPlayerOne1=0;
int countPlayerOne2=0;
for(int x=0;x<4;x++) {
if(SuitString[x]==PlayerOnePokerCard.get(0).getSuit()) {
countPlayerOne1=x;
break;
}
}
for(int y=0;y<4;y++) {
if(SuitString[y]==PlayerOnePokerCard.get(1).getSuit()) {
countPlayerOne2=y;
break;
}
}
if(countPlayerOne1>countPlayerOne2) {
PlayerOneMax=PlayerOnePokerCard.get(0);
}
else {
PlayerOneMax=PlayerOnePokerCard.get(1);
}
}
else {
int countPlayerOne3=0;
int countPlayerOne4=0;
for(int x=0;x<13;x++) {
if(SizeString[x]==PlayerOnePokerCard.get(0).getSize()) {
countPlayerOne3=x;
break;
}
}
for(int y=0;y<13;y++) {
if(SizeString[y]==PlayerOnePokerCard.get(1).getSize()) {
countPlayerOne4=y;
break;
}
}
if(countPlayerOne3>countPlayerOne4) {
PlayerOneMax=PlayerOnePokerCard.get(0);
}
else {
PlayerOneMax=PlayerOnePokerCard.get(1);
}
}
if(PlayerOnePokerCard.get(0).getSize()==PlayerOnePokerCard.get(1).getSize()) {//計算第二位玩家哪張手牌最大
int countPlayerTwo1=0;
int countPlayerTwo2=0;
for(int x=0;x<4;x++) {
if(SuitString[x]==PlayerTwoPokerCard.get(0).getSuit()) {
countPlayerTwo1=x;
break;
}
}
for(int y=0;y<4;y++) {
if(SuitString[y]==PlayerTwoPokerCard.get(1).getSuit()) {
countPlayerTwo2=y;
break;
}
}
if(countPlayerTwo1>countPlayerTwo2) {
PlayerTwoMax=PlayerTwoPokerCard.get(0);
}
else {
PlayerTwoMax=PlayerTwoPokerCard.get(1);
}
}
else {
int countPlayerTwo3=0;
int countPlayerTwo4=0;
for(int x=0;x<13;x++) {
if(SizeString[x]==PlayerTwoPokerCard.get(0).getSize()) {
countPlayerTwo3=x;
break;
}
}
for(int y=0;y<13;y++) {
if(SizeString[y]==PlayerTwoPokerCard.get(1).getSize()) {
countPlayerTwo4=y;
break;
}
}
if(countPlayerTwo3>countPlayerTwo4) {
PlayerTwoMax=PlayerTwoPokerCard.get(0);
}
else {
PlayerTwoMax=PlayerTwoPokerCard.get(1);
}
}
System.out.println("玩家:"+playerOne.getName()+"最大的手牌為:"+PlayerOneMax.getSuit()+PlayerOneMax.getSize());
System.out.println("玩家:"+playerTwo.getName()+"最大的手牌為:"+PlayerTwoMax.getSuit()+PlayerTwoMax.getSize());
if(compare(PlayerOneMax,PlayerTwoMax)) {? ? ? ? ? //玩家1和玩家2比較手牌大小
System.out.println("----------玩家:"+playerOne.getName()+"獲勝!----------");
}
else {
System.out.println("----------玩家:"+playerTwo.getName()+"獲勝!----------");
}
}
public boolean compare(PokerCard pokercard1,PokerCard pokercard2) { //撲克牌比較大小的函數,如果pokercard1>pokercard2,返回True
String SuitString[]=new String[] {"方片","梅花","紅桃","黑桃"};
String SizeString[]=new String[] {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
if(pokercard1.getSize()==pokercard2.getSize()){? //如果大小size一樣,就比較花色suit誰大
int countPlayerOne1=0;
int countPlayerTwo1=0;
for(int x=0;x<4;x++) {
if(SuitString[x]==pokercard1.getSuit()) {
countPlayerOne1=x;
break;
}
}
for(int y=0;y<4;y++) {
if(SuitString[y]==pokercard2.getSuit()) {
countPlayerTwo1=y;
break;
}
}
return countPlayerOne1>countPlayerTwo1;
}
else {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//如果大小size不一樣,就比較大小size即可
int countPlayerOne2=0;
int countPlayerTwo2=0;
for(int x=0;x<13;x++) {
if(SizeString[x]==pokercard1.getSize()) {
countPlayerOne2=x;
break;
}
}
for(int y=0;y<13;y++) {
if(SizeString[y]==pokercard2.getSize()) {
countPlayerTwo2=y;
break; }
}
return countPlayerOne2>countPlayerTwo2;
}
}
public static boolean isNumeric(String str){? //判斷字符串是否是一個正整數
? ? for(int i=str.length();--i>=0;){
? ? ? ? int chr=str.charAt(i);
? ? ? ? if(chr<48 || chr>57)
? ? ? ? ? ? return false;
? ? }
? ?return true;
}?
public void showPlayerPokerCard() {
System.out.println("玩家各自的手牌為:");
System.out.print(playerOne.getName()+":");
for(PokerCard pokercard:PlayerOnePokerCard) {
System.out.print(pokercard.getSuit()+pokercard.getSize()+" ");
}
System.out.println();
System.out.print(playerTwo.getName()+":");
for(PokerCard pokercard:PlayerTwoPokerCard) {
System.out.print(pokercard.getSuit()+pokercard.getSize()+" ");
}
}
public static void main(String[] args) {
Initial initial =new Initial();
initial.createPokerCard();? //創建撲克牌
initial.shufflePokerCard(); //洗牌,打亂撲克牌的順序
initial.createPlayers();? ? //創建玩家
initial.deal();? ? ? ? ? ? //給玩家發牌
initial.startGame();? ? ? ? //開始游戲
initial.showPlayerPokerCard(); //展示兩位玩家的手牌
}
}
package PlayPokerGame;
public class inputException extends Exception{
inputException(){
super("請輸入整數類型的ID!");
}
}
package PlayPokerGame;
public class Player {
String ID;
String name;
public Player(String ID,String name) {
this.ID=ID;
this.name=name;
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package PlayPokerGame;
public class PokerCard {
String suit;? ?//撲克牌的花色
String size; //撲克牌的大小
public PokerCard(String suit,String size){//含參構造器
this.suit=suit;
this.size=size;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
}