【java】最简单的洗发牌游戏

来源:互联网 发布:fc游戏编程 编辑:程序博客网 时间:2024/04/28 13:06

慕课网-Java入门第三季

                                                                                                                                             ——第七章 简易扑克牌游戏

游戏要求:

1.创建一副扑克牌:

   包括四种花色:黑桃、红桃、梅花、方片

   13种点数:2—10,J,Q,K,A

2.创建两名玩家:

   玩家有ID、姓名,手牌为扑克牌集合

3.洗牌:

   将之前创建的扑克牌顺序打乱

4.发牌:

   将洗牌之后的扑克牌集合,从第一张开始,发给两位玩家,按照一人一张的方式,每人两张

5.游戏:

   取两人手中点数最大的牌进行比较,点数大的赢,相同点数按黑红梅方花色比较


1.创建PuKe泛型:

package com.vaniot;public class PuKe {public String style;public String num;    public PuKe(String style,String num){    this.style=style;    this.num=num;    }/** * @param args */    public PuKe(){        }}

2.创建Players泛型:

package com.vaniot;import java.util.HashSet;import java.util.Set;public class Players {    public int id;    public String name;    public Set pu;/** * @param args */    public Players(int id,String name){    this.id=id;    this.name=name;    this.pu=new HashSet();    }}

3.洗牌、发牌、比较:

package com.vaniot;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.Scanner;public class Give {String[] style={"黑桃","红桃","梅花","方片"};String[] num={"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; public List PuKeAll;public List PeopleTwo;List PuKeList=new ArrayList();    public Give(){    this.PuKeAll=new ArrayList<>();    this.PeopleTwo=new ArrayList<>();    }    public void pukeAdd(){    for(int j=0;j<4;j++){    for(int i=0;i<13;i++){    PuKe pk=new PuKe(style[j],num[i]);    PuKeAll.add(pk);    }    }    }    public void showAll(){    System.out.println("原始牌序:");    for(int i=0;i<52;i++){        PuKe temp=(PuKe) PuKeAll.get(i);        System.out.print(temp.style+temp.num+",");    }    System.out.println();    }    public void xiPai(){    List integerList=new ArrayList();    Random random=new Random();    int k;    for(int i=0;i<52;i++){    do{    k=random.nextInt(52);    }while(integerList.contains(k));    integerList.add(k);    PuKe pkk=(PuKe) PuKeAll.get(k);    PuKeList.add(pkk);//洗牌,重新放位置    }        System.out.println("洗牌后:");    for(int i=0;i<52;i++){            PuKe temp=(PuKe) PuKeList.get(i);            System.out.print(temp.style+temp.num+",");        }    System.out.println();    }    public void showTwoPeople(){    System.out.println("请输入第1位玩家的ID和姓名:");        System.out.print("输入ID:");        Scanner console1=new Scanner(System.in);        int id1=console1.nextInt();        System.out.print("输入姓名:");        String name1=console1.next();        Players p1=new Players(id1,name1);        PeopleTwo.add(p1);        System.out.println("请输入第2位玩家的ID和姓名:");        System.out.print("输入ID:");        Scanner console2=new Scanner(System.in);        int id2=console2.nextInt();        System.out.print("输入姓名:");        String name2=console2.next();        Players p2=new Players(id2,name2);        PeopleTwo.add(p2);    System.out.println("欢迎玩家"+p1.id+":"+p1.name);    System.out.println("欢迎玩家"+p2.id+":"+p2.name);      //发牌:洗牌后的前4张牌    System.out.println("玩家"+p1.name+"拿牌:"+PuKeList.get(0).style+PuKeList.get(0).num);    System.out.println("玩家"+p2.name+"拿牌:"+PuKeList.get(1).style+PuKeList.get(1).num);    System.out.println("玩家"+p1.name+"拿牌:"+PuKeList.get(2).style+PuKeList.get(2).num);    System.out.println("玩家"+p2.name+"拿牌:"+PuKeList.get(3).style+PuKeList.get(3).num);    }    public void compareTwo(){    //分别比较两人手中两张中最大的        List pkc1=new ArrayList();        List pkc2=new ArrayList();        //玩家1中最大的    String pn11=PuKeList.get(0).num;    String pn12=PuKeList.get(2).num;    String ps11=PuKeList.get(0).style;    String ps12=PuKeList.get(2).style;        if(compareAll(pn11,ps11,pn12,ps12)){        pkc1.add(PuKeList.get(0));        }        else{        pkc1.add(PuKeList.get(2));        }        System.out.println("玩家1出:"+pkc1.get(0).style+pkc1.get(0).num);        //玩家2中最大的        String pn21=PuKeList.get(1).num;    String pn22=PuKeList.get(3).num;    String ps21=PuKeList.get(1).style;    String ps22=PuKeList.get(3).style;        if(compareAll(pn21,ps21,pn22,ps22)){        pkc2.add(PuKeList.get(1));        }        else{        pkc2.add(PuKeList.get(3));        }        System.out.println("玩家2出:"+pkc2.get(0).style+pkc2.get(0).num);        //两个人中最大的        if(compareAll(pkc1.get(0).num,pkc1.get(0).style,pkc2.get(0).num,pkc2.get(0).style)){        System.out.println("-----玩家1获胜-----");        }        else{        System.out.println("-----玩家2获胜-----");        }    }    public boolean compareAll(String num1,String style1,String num2,String style2){    int k1=0,k2=0,s1=0,s2=0;    for(int i=0;i<13;i++){    if(num1.equals(num[i])){    k1=i;    break;    }    else continue;    }    for(int i=0;i<13;i++){    if(num2.equals(num[i])){    k2=i;    break;    }    else continue;    }        if(k1>k2){        return true;        }        else if(k1s2){        return true;        }        else{        return false;        }        }    }/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubGive give=new Give();give.pukeAdd();give.showAll();give.xiPai();give.showTwoPeople();give.compareTwo();}}

0 0