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.創(chuàng)建一副撲克牌,包含 黑 紅 梅 方 四種 花色,每種花色2-A 13張牌?* 2.創(chuàng)建兩名玩家,至少要有 ID。姓名 手牌 等屬性,手牌為撲克牌的集合?* 3.洗牌, 將之前創(chuàng)造的 撲克牌順序打亂?* 4.發(fā)牌, 每個(gè)玩家 ?2張撲克牌??* 5,游戲 ? 比較玩家手中的撲克牌,取各自手中點(diǎn)數(shù)最大的牌進(jìn)行比較,點(diǎn)數(shù)大的贏?* ? 若兩人各自的點(diǎn)數(shù)最大的牌相等,則在比較花色?*??* */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(){ //建立點(diǎn)數(shù)數(shù)組 String [] dianshuji={"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; //建立花色數(shù)組 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(""); } /* * 洗牌方法:隨機(jī)數(shù) * */ 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("----------洗牌開(kāi)始--------------");// for(puke list:xipailist){// System.out.print("<"+list.huase+list.dianshu+">");// } System.out.println("----------洗牌結(jié)束--------------"); } public void tianjiawanjia(){ int k; System.out.println("----------創(chuàng)建玩家--------------"); do{ k=1; try{ for(int i=0;i<2;i++){ console=new Scanner(System.in); mingzi=new Scanner(System.in); System.out.println("請(qǐng)輸入第"+(i+1)+"位玩家的ID:"); int ID=console.nextInt(); if(ID>2){//控制玩家數(shù) 只能有2個(gè)人 System.out.println("玩家ID超游戲限制人數(shù),請(qǐng)重新輸入"); k=0; continue; } System.out.println("請(qǐng)輸入第"+(i+1)+"位玩家的姓名:"); String MZ=mingzi.next(); wanjia dutu=new wanjia(ID,MZ); wanjiaqun.add(dutu); } }catch(InputMismatchException e){ System.out.println("輸入類(lèi)型錯(cuò)誤,請(qǐng)重新輸入"); 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("----------開(kāi)始發(fā)牌--------------"); for(int i=0;i<2;i++){//兩次發(fā)牌 ? ? ?此處出現(xiàn)異常,當(dāng)列出各位玩家手牌時(shí)發(fā)現(xiàn),每人都有四種牌 ?但沒(méi)找到原因 for(int j=0;j<2;j++){//兩個(gè)賭徒 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(){ ?//此處陳列出的結(jié)果為 ?兩個(gè)人都有四張牌,且相同 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 自動(dòng)生成的方法存根 test ?cv=new test(); cv.addall(); cv.xipai(); cv.tianjiawanjia();? ? ? cv.shoupaiqun(); cv.displayshoupai(); }}? ??
撲克游戲中的問(wèn)題:玩家手中的牌相同,且都為四張,實(shí)際應(yīng)為每人兩張
qq_奔三了_03545151
2016-07-05 18:53:05