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();
}
}
冲啊
相关分类