扑克游戏中的问题:玩家手中的牌相同,且都为四张,实际应为每人两张

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();

}


}

    

qq_奔三了_03545151
浏览 1451回答 1
1回答

冲啊

可以参考我写的http://www.imooc.com/article/5223
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java