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

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

這是我寫好的代碼,希望大家共同進步,哪里有不足的希望大家指點

以下是我寫的代碼,希望和大家共同進步(可以創建多名玩家和給每位玩家發多張牌)

*******************Player.java****************

package bean;

import java.util.ArrayList;

import java.util.List;

public class Player {

private int playerId;

private String playerName;

private List<Poker>playerPokers;

public Player(int playerId,String playerName){

this.playerId=playerId;

this.playerName=playerName;

this.playerPokers=new ArrayList<Poker>();

}

public int getPlayerId() {

return playerId;

}

public void setPlayerId(int playerId) {

this.playerId = playerId;

}

public String getPlayerName() {

return playerName;

}

public void setPlayerName(String playerName) {

this.playerName = playerName;

}

public List<Poker> getPlayerPokers() {

return playerPokers;

}

public void setPlayerPokers(List<Poker> playerPokers) {

this.playerPokers = playerPokers;

}

}

*******************Poker.java****************

package bean;


public class Poker {

private String pokerId;

private String pokerClass;

public Poker(String pokerid,String pokerClass){

this.pokerId=pokerid;

this.pokerClass=pokerClass;

}

public String getPokerId() {

return pokerId;

}

public void setPokerId(String pokerId) {

this.pokerId = pokerId;

}

public String getPokerClass() {

return pokerClass;

}

public void setPokerClass(String pokerClass) {

this.pokerClass = pokerClass;

}

}

*******************PokerGame.java****************

package function;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.HashSet;

import java.util.InputMismatchException;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

import java.util.Set;


import bean.Player;

import bean.Poker;


public class PokerGame {

private List<Poker> pokersList;

private List<Player> playersList;

private List<Poker> eachOtherCompPokers;

private Set<Poker> pokersSet;


// private Scanner input;

public PokerGame() {

this.pokersList = new ArrayList<Poker>();

this.playersList = new ArrayList<Player>();

this.eachOtherCompPokers=new ArrayList<Poker>();

this.pokersSet = new HashSet<Poker>();

// this.input=new Scanner(System.in);

}


/*

* 1.創建撲克牌

*/

public void createPoker() {

List<String> pokerClassStrings = new ArrayList<String>();

String[] pokerClass = { "黑桃", "紅心", "梅花", "方塊" };

pokerClassStrings.addAll(Arrays.asList(pokerClass));


List<String> pokerIdStrings = new ArrayList<String>();

String[] pokerId = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J",

"Q", "K", "A" };

pokerIdStrings.addAll(Arrays.asList(pokerId));


// pokersList=new ArrayList<Poker>();

for (int i = 3; i >= 0; i--) {

String Class = pokerClassStrings.get(i);

for (int j = 0; j < 13; j++) {

String Id = pokerIdStrings.get(j);

Poker poker = new Poker(Id, Class);

pokersList.add(poker);

}

}

}


/*

* 2.展示撲克牌

*/

public String displayPoker() {

String[] string = new String[52];

for (int i = 0; i < string.length; i++) {

String pokerAll = new String(pokersList.get(i).getPokerClass()

+ pokersList.get(i).getPokerId());

string[i] = pokerAll;

}

return Arrays.toString(string);

}


/*

* 3.創建兩名玩家

*/

public void createPlayer() {

for (int i = 0; i < 3; i++) {? //這里可以設置創建的人數

System.out.println("請輸入第" + (i + 1) + "位玩家的ID和姓名:");

while (true) {

try {

Scanner input = new Scanner(System.in);

System.out.println("輸入ID:");

int ID = input.nextInt();

System.out.println("輸入姓名:");

String name = input.next();

Player player = new Player(ID, name);

playersList.add(player);

break;

} catch (InputMismatchException e) {

// TODO Auto-generated catch block

System.out.println("請輸入整數類型的ID!");

}

}

}

for (Player player : playersList) {

System.out.println("-----歡迎玩家:" + player.getPlayerName());

}


}


/*

* 4.洗牌

*/

// public String massPoker(){

// //pokersSet=new HashSet<Poker>();

// //System.out.println(pokersList.size());

// for (Poker pokerBefore : pokersList) {

// pokersSet.add(pokerBefore);

// }

// for (Poker test : pokersSet) {

// String pokerAll=new String(test.getPokerClass()+test.getPokerId());

// System.out.println("撲克為:"+pokerAll);

// }

// int i=0;

// String[]string=new String[52];

// //System.out.println(pokersSet.size());

// for (Poker pokerAfter : pokersSet) {

// String pokerAll=new

// String(pokerAfter.getPokerClass()+pokerAfter.getPokerId());

// string[i]=pokerAll;

// i++;

// }

// return Arrays.toString(string);

//

// }


public String massPoker() {

Collections.shuffle(pokersList);//Collections的Shuffle方法可以打亂List列表中的順序

String[] string = new String[52];

for (int i = 0; i < string.length; i++) {

String pokerAll = new String(pokersList.get(i).getPokerClass()

+ pokersList.get(i).getPokerId());

string[i] = pokerAll;

}

return Arrays.toString(string);

}


/*

* 給玩家發牌

*/

// public void deliverPoker() {

// Random random = new Random();

// for (int i = 0; i < 2; i++) {

// int a = random.nextInt(pokersList.size());

// Poker poker = pokersList.get(a);

// playersList.get(0).getPlayerPokers().add(poker);

// pokersList.remove(a);

// System.out.println("----玩家:" + playersList.get(0).getPlayerName()

// + "-拿牌");

// int b = random.nextInt(pokersList.size());

// Poker pokertwo = pokersList.get(b);

// playersList.get(1).getPlayerPokers().add(pokertwo);

// pokersList.remove(b);

// System.out.println("----玩家:" + playersList.get(1).getPlayerName()

// + "-拿牌");

// }

// }

public void deliverPoker() {

Random random = new Random();

for (int i = 0; i < 3; i++) {//這里可以設置給每個人發牌的數量

for (int j = 0; j < playersList.size(); j++) {

int randomNumber=random.nextInt(pokersList.size());

Poker poker=pokersList.get(randomNumber);

playersList.get(j).getPlayerPokers().add(poker);

pokersList.remove(randomNumber);

System.out.println("----玩家:" + playersList.get(j).getPlayerName()

+ "-拿牌");

}

}

// for (Player player : playersList) {

// System.out.println("玩家"+player.getPlayerName()+"的牌有:");

// for (Poker poker :player.getPlayerPokers() ) {

// System.out.println("卡牌:"+poker.getPokerClass()+poker.getPokerId());

// }

// }

}

/*

?* 展示玩家手牌

?*/

// public void displayPlarersPoker() {

// System.out.println("玩家各自的手牌為:");

// for (int i = 0; i < playersList.size(); i++) {

// String[]strings=new String[playersList.get(0).getPlayerPokers().size()];

// for(int j=0;j<playersList.get(0).getPlayerPokers().size();j++){

// String userPoker = playersList.get(i).getPlayerPokers().get(j)

// .getPokerClass()

// + playersList.get(i).getPlayerPokers().get(j).getPokerId();

// strings[j]=userPoker;

// }

// System.out.println(playersList.get(i).getPlayerName() + ":"

// + Arrays.toString(strings));

// }

// }

public void displayPlarersPoker() {

System.out.println("玩家各自的手牌為:");

for (Player player : playersList) {

String[]strings=new String[player.getPlayerPokers().size()];

for (Poker poker :player.getPlayerPokers() ) {

String userPoker=poker.getPokerClass()+poker.getPokerId();

int index =player.getPlayerPokers().indexOf(poker);

strings[index]=userPoker;

}

System.out.println(player.getPlayerName() + ":"

+ Arrays.toString(strings));

}

}

/*

* 判斷自己手牌中的最大撲克是那一張

*/

public void maxSelfPoker(){

int length=playersList.get(0).getPlayerPokers().size();

for (Player player : playersList) {

// System.out.println("玩家:"+player.getPlayerName()+"最大的手牌為:"+player.getPlayerPokers().get(length-1).getPokerClass()+

// player.getPlayerPokers().get(0).getPokerId());

Collections.sort(player.getPlayerPokers(), new PokerComparator());

System.out.println("玩家:"+player.getPlayerName()+"最大的手牌為:"+player.getPlayerPokers().get(length-1).getPokerClass()+

player.getPlayerPokers().get(length-1).getPokerId());

}

}


/*

* 兩者最大的排相互比較

*/

public void eachOtherComparePoker() {

int length = playersList.get(0).getPlayerPokers().size();// 的出每個玩家的撲克列表屬性中有多少張牌

//List<Poker> eachOtherCompPokers = new ArrayList<Poker>();

for (Player player : playersList) {

eachOtherCompPokers.add(player.getPlayerPokers().get(length - 1));

}

// for (Poker pokertest : eachOtherCompPokers) {

// System.out.println("該列表元素有:" + pokertest.getPokerClass()

// + pokertest.getPokerId());

// }

Collections.sort(eachOtherCompPokers, new PokerComparator());

// for (Poker pokertest : eachOtherCompPokers) {

// System.out.println("該列表元素有:" + pokertest.getPokerClass()

// + pokertest.getPokerId());

// }

int playerNumber=playersList.size();

System.out.println("結果:經過比較最大的牌為:"+eachOtherCompPokers.get(playerNumber-1).getPokerClass()

+eachOtherCompPokers.get(playerNumber-1).getPokerId());

}

/*

* 通過最大的牌是誰的來判斷贏家

*/

public void judgeWinner(){

int playerNumber=playersList.size();

for (Player player : playersList) {

if(player.getPlayerPokers().contains(eachOtherCompPokers.get(playerNumber-1))){

System.out.println("-------------------玩家:"+player.getPlayerName()+"獲勝!-------------");

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

PokerGame pGame = new PokerGame();

System.out.println("------------------創建撲克牌-------------------");

pGame.createPoker();

System.out.println("----------------創建撲克牌成功-----------------");

System.out.println("為:" + pGame.displayPoker());

System.out.println("-------------------開始洗牌...-------------------");

System.out.println("-------------------洗牌結束!--------------------");

System.out.println("為:" + pGame.massPoker());

System.out.println("-------------------創建玩家...-------------------");

pGame.createPlayer();

System.out.println("-------------------開始發牌...-------------------");

pGame.deliverPoker();

System.out.println("-------------------發牌結束!--------------------");

pGame.displayPlarersPoker();

System.out.println("-------------------開始游戲!--------------------");

pGame.maxSelfPoker();

pGame.eachOtherComparePoker();

pGame.judgeWinner();


}

}

*******************PokerComparator.java****************

package function;


import java.util.Comparator;


import bean.Poker;


public class PokerComparator implements Comparator<Poker> {


@Override

public int compare(Poker o1, Poker o2) {

// TODO Auto-generated method stub

String pokerClass="方塊,梅花,紅心,黑桃";

String PokerID="3,4,5,6,7,8,9,10,J,Q,K,A,2";

int userOneClassIndex=pokerClass.indexOf(o1.getPokerClass());

int userOneIDIndex=PokerID.indexOf(o1.getPokerId());

int userTwoClassIndex=pokerClass.indexOf(o2.getPokerClass());

int userTwoIDIndex=PokerID.indexOf(o2.getPokerId());

if(userOneIDIndex==userTwoIDIndex){

if (userOneClassIndex>userTwoClassIndex)?

return 1;

else

return -1;

}else if (userOneIDIndex>userTwoIDIndex)?

return 1;

else?

return -1;

}


}

都是學過的知識,反復的使用 ,一起加油。

正在回答

3 回答

public void createPlayer() {

for (int i = 0; i < 3; i++) { // 這里可以設置創建的人數

System.out.println("請輸入第" + (i + 1) + "位玩家的ID和姓名:");

while (true) {

try {

boolean flag = true;

while (flag) {

System.out.println("請輸入第" + (i + 1) + "位玩家的ID:");

input = new Scanner(System.in);

ID = input.nextInt();

if (playersList.size() == 0) {

flag = false;

break;

}

for (int i1 = 0; i1 < playersList.size(); i1++) {

if (ID == playersList.get(i1).getPlayerId()) {

System.out.println("ID重復,請重新輸入");

flag = true;

break;

} else

flag = false;

}

}

System.out.println("輸入姓名:");

String name = input.next();

playersList.add(new Player(ID, name));

break;

} catch (InputMismatchException e) {

System.out.println("請輸入整數類型的ID!");

}

}

}

for (Player player1 : playersList) {

System.out.println("-----歡迎玩家:" + player1.getPlayerName());

}


}


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

神影天初

用一個flag控制外層循環也可以吧,其它內循環出錯的地方直接返回continue,重新從最外層循環開始。正確輸出就直接改flag為false,徹底結束循環。
2018-08-12 回復 有任何疑惑可以回復我~

你注釋里寫想創建兩名玩家,但是你i<3,這就是三名玩家了。

0 回復 有任何疑惑可以回復我~

玩家ID相同情況,沒有處理

2 回復 有任何疑惑可以回復我~
#1

慕田峪6247734 提問者

嗯嗯,是我遺漏了,謝謝
2018-08-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這是我寫好的代碼,希望大家共同進步,哪里有不足的希望大家指點

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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