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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

撲克游戲中的問題:玩家手中的牌相同,且都為四張,實際應為每人兩張

撲克游戲中的問題:玩家手中的牌相同,且都為四張,實際應為每人兩張

qq_奔三了_03545151 2016-07-05 18:53:05
package com.imooc.pukeyouxi;import java.util.ArrayList;import java.util.List;public class puke { public String huase; public String dianshu; public puke(String huase,String dianshu){ this.huase=huase; this.dianshu=dianshu; } public puke(){ } @Override public String toString() { return ?huase +dianshu; }}public class wanjia { public int id; public String name; public static Set<puke>shoupai; public wanjia(int id,String name){ this.id=id; this.name=name; wanjia.shoupai=new HashSet<puke>();//哈希set }}package com.imooc.pukeyouxi;import java.util.ArrayList;import java.util.InputMismatchException;import java.util.List;import java.util.Random;import java.util.Scanner;/*撲克游戲?* 1.創建一副撲克牌,包含 黑 紅 梅 方 四種 花色,每種花色2-A 13張牌?* 2.創建兩名玩家,至少要有 ID。姓名 手牌 等屬性,手牌為撲克牌的集合?* 3.洗牌, 將之前創造的 撲克牌順序打亂?* 4.發牌, 每個玩家 ?2張撲克牌??* 5,游戲 ? 比較玩家手中的撲克牌,取各自手中點數最大的牌進行比較,點數大的贏?* ? 若兩人各自的點數最大的牌相等,則在比較花色?*??* */public class test { //建立玩家手牌 public static List<wanjia>wanjiaqun; private Scanner console; private Scanner mingzi; public wanjia dutu; public List<puke> pukelist=new ArrayList<puke>(); public List<puke> xipailist=new ArrayList<puke>(); public test(){ wanjiaqun =new ArrayList<wanjia>(); } //添加撲克 public void addall(){ //建立點數數組 String [] dianshuji={"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; //建立花色數組 String [] huaseji={"方塊","梅花","紅桃","黑桃"}; for(int i=0;i<huaseji.length;i++){ for(int j=0;j<dianshuji.length;j++){ puke cr1=new puke(huaseji[i],dianshuji[j]); pukelist.add(cr1); } } System.out.println("--------------撲克拆包成功:-----------"); System.out.println("目前所有撲克牌為:"); for(puke list:pukelist){ System.out.print("<"+list.huase+list.dianshu+">"); } System.out.println(""); } /* * 洗牌方法:隨機數 * */ public void xipai(){ Integer k; puke p; for(int i=0;i<52;i++){ do{ Random random=new Random() ; k=random.nextInt(52); p=pukelist.get(k); }while(xipailist.contains(p)); xipailist.add(p); } System.out.println("----------洗牌開始--------------");// for(puke list:xipailist){// System.out.print("<"+list.huase+list.dianshu+">");// } System.out.println("----------洗牌結束--------------"); } public void tianjiawanjia(){ int k; System.out.println("----------創建玩家--------------"); do{ k=1; try{ for(int i=0;i<2;i++){ console=new Scanner(System.in); mingzi=new Scanner(System.in); System.out.println("請輸入第"+(i+1)+"位玩家的ID:"); int ID=console.nextInt(); if(ID>2){//控制玩家數 只能有2個人 System.out.println("玩家ID超游戲限制人數,請重新輸入"); k=0; continue; } System.out.println("請輸入第"+(i+1)+"位玩家的姓名:"); String MZ=mingzi.next(); wanjia dutu=new wanjia(ID,MZ); wanjiaqun.add(dutu); } }catch(InputMismatchException e){ System.out.println("輸入類型錯誤,請重新輸入"); k=0; } }while(k==0); System.out.println("歡迎玩家:"+wanjiaqun.get(0).name); System.out.println("歡迎玩家:"+wanjiaqun.get(1).name); } //為兩位玩家分配獲得的手牌 public void shoupaiqun(){ int m=0; puke p; System.out.println("----------開始發牌--------------"); for(int i=0;i<2;i++){//兩次發牌 ? ? ?此處出現異常,當列出各位玩家手牌時發現,每人都有四種牌 ?但沒找到原因 for(int j=0;j<2;j++){//兩個賭徒 dutu=wanjiaqun.get(j); System.out.println("玩家:"+dutu.name+"拿牌"); p=new puke(xipailist.get(m).huase,xipailist.get(m).dianshu); wanjiaqun.get(j).shoupai.add(p); m++; } } ? } public void displayshoupai(){ ?//此處陳列出的結果為 ?兩個人都有四張牌,且相同 for(int i=0;i<2;i++){ System.out.println("玩家:"+wanjiaqun.get(i).name+wanjiaqun.get(i).shoupai); } } public static void main(String[] args) { // TODO 自動生成的方法存根 test ?cv=new test(); cv.addall(); cv.xipai(); cv.tianjiawanjia();? ? ? cv.shoupaiqun(); cv.displayshoupai(); }}? ??
查看完整描述

1 回答

?
沖啊

TA貢獻15條經驗 獲得超3個贊

可以參考我寫的http://www.xianlaiwan.cn/article/5223

查看完整回答
反對 回復 2016-07-08
  • 1 回答
  • 1 關注
  • 1535 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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