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

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

本人不才兩天才寫出來,可能理解上有紕漏,還請大神指點

package com.learn51.www;

/**

?* 撲克牌類

?*/

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

import java.util.Map.Entry;

import java.util.Random;

import java.util.Scanner;

import java.util.Set;


public class Puke {

// 定義list接口來存放創建撲克牌默認順序加入

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

// 創建玩家id和名字的映射

HashMap<Integer, Player> map = new HashMap<Integer, Player>();

// 創建玩家名字和發牌的映射

HashMap<String, String[]> map2 = new HashMap<String, String[]>();

/**

* 創建撲克牌

*/

public void createpuke() {

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

// 定義花色和和牌面數字的集合

String str[] = { "紅桃", "黑桃", "方片", "梅花" };

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

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

// 花色和數字通過雙重for循環拼接

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

for (int j = 0; j < str1.length; j++) {

list.add(str[i] + str1[j]);

}

}

System.out.println("——————————————————撲克牌創建成功?。 ?);

System.out.print("創建撲克牌為:" + "[");

// 遍歷所有撲克牌元素

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

if (i < list.size() - 1) {

System.out.print(list.get(i) + ",");

} else if (i == list.size() - 1) {

System.out.println(list.get(i) + "]");

}

}

}

/**

* 洗牌

*/

public void shuffle() {

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

// 通過Collections工具類的shuffle方法打亂順序的撲克牌

Collections.shuffle(list);

System.out.print("打亂順序后的牌為:" + "[");

// 遍歷打亂順序后的撲克牌

for (String shuffles : list) {

System.out.print(shuffles+",");

}

System.out.println("]");

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


}

/**

* 創建玩家

*/

public void createplayer() {

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

// 定義一個count計數?

int count = 0;

while (count < 2) {

Scanner sc = new Scanner(System.in);

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

System.out.println("輸入id");

int id;

try {

id = sc.nextInt();

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

String name = sc.next();

Player player = new Player(id, name);

map.put(id, player);

} catch (Exception e) {

// 當輸入類型錯誤時,拋出異常,并提示重新輸入

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

e.printStackTrace();

continue;

}

// 不加判斷會出現數如創建一個玩家打出一個,和老師給的模板不一致,因此改了下

if (count > 0) {

Set<Entry<Integer, Player>> entrySet = map.entrySet();

for (Entry<Integer, Player> entry : entrySet) {

System.out.println("歡迎玩家," + entry.getValue().name);

}

}

// 計數count當count>3跳出循環

count++;

}

System.out.println("——————————————————創建玩家結束——————————————————");

}

/**

* 發牌

*/

public void Licensing() {

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

Set<Entry<Integer, Player>> entrySet = map.entrySet();

for (Entry<Integer, Player> entry : entrySet) {

Random rn = new Random();

int k = rn.nextInt(52);

int j = rn.nextInt(52);

// 當一副牌不可能出現兩張一樣的牌,因此隨機數不能相等,牌面的內容也不一樣

if (k != j&&!list.get(k).equals(list.get(j))) {

map2.put(entry.getValue().name, new String[]{list.get(k),list.get(j)} );

}

}

// 遍歷每位玩家和手持牌兩張牌

Set<Entry<String, String[]>> entrySet2 = map2.entrySet();

for (Entry<String, String[]> entry : entrySet2) {

System.out.println("玩家:"+entry.getKey()+":拿牌:"+"{"+entry.getValue()[0]+","+entry.getValue()[1]+"}");

}

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

}

/**

* 開始游戲,比較每位玩家手中最大的牌,在比較每位玩家手中的最大牌,決出贏家

*/

public void compare()

{

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

Set<Entry<String, String[]>> entrySet2 = map2.entrySet();

// 遍歷每位玩家手持牌兩張牌,然后用compareto比較,將比較大的牌和玩家進行拼接,存到arrayList集合中

ArrayList<String> arrayList = new ArrayList<String>();

for (Entry<String, String[]> entry : entrySet2) {

String c1=entry.getValue()[0];

String c2=entry.getValue()[1];

int rusult1 = c1.compareTo(c2);

if (rusult1>0) {

System.out.println("玩家:"+entry.getKey()+":最大手牌為:"+c1);

arrayList.add(entry.getKey()+":"+c1);

}else{

System.out.println("玩家:"+entry.getKey()+":最大手牌為:"+c2);

arrayList.add(entry.getKey()+":"+c2);

}

}

// 用split方法將字符串進行分割,取出每位玩家手中的最大牌

String getplayer1card=arrayList.get(0).split(":")[1];

String getplayer2card=arrayList.get(1).split(":")[1];

// 用compareto方法對每位玩家手中最大牌進行比較,取出最大牌

int rusult = getplayer1card.compareTo(getplayer2card);

if (rusult>0) {

System.out.println("玩家:"+arrayList.get(0).split(":")[0]+"獲勝?。。?);

}else{

System.out.println("玩家:"+arrayList.get(1).split(":")[0]+"獲勝?。?!");

}

}

}

package com.learn51.www;

/**

?* 玩家類

?*/


public class Player {


int id;

String name;

public Player(int id, String name) {

super();

this.id = id;

this.name = name;

}

}

package com.learn51.www;

/**

?* 測試發牌游戲

?* @author Administrator

?*

?*/

public class TestCompare {

public static void main(String[] args) {

// 創建對象p

Puke p = new Puke();

// 創建撲克牌

p.createpuke();

// 洗牌

p.shuffle();

// 創建玩家

p.createplayer();

// 創建玩家

p.Licensing();

// 開始游戲,比較每位玩家手中最大的牌,在比較每位玩家手中的最大牌,決出贏家

p.compare();

}

}


正在回答

2 回答

寫的不是很好,大家還請指導

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

挺好的,能自己寫完就挺棒了

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

莫子軒 提問者

多謝鼓勵
2015-06-04 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

本人不才兩天才寫出來,可能理解上有紕漏,還請大神指點

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

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

幫助反饋 APP下載

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

公眾號

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