ITPub博客

首页 > IT职业 > IT图书 > Java入门第三季-简易扑克牌案例

Java入门第三季-简易扑克牌案例

IT图书 作者:pswyjz 时间:2021-09-09 09:07:24 0 删除 编辑

案例分析:
模拟洗牌发牌游戏
1.创建一副扑克牌
包括四种花色 2-10 JQKA 不考虑大小王
2.创建两名玩家
玩家至少要有ID、姓名、手牌等属性、手牌为扑克牌的集合
3.洗牌
将之前创建的一副扑克牌 打乱顺序
4.发牌
将洗牌之后的扑克牌集合,
从第一张开始,一人一张,每人发两张
5.游戏 *游戏规则
取两人各自手中点数最大的牌进行比较,点数大的赢;
若两人各自的点数最大的牌相等 则比较花色
花色大小的顺序:方块 梅花 红桃 黑桃的顺序
使用知识点:
1:类的抽象,2,集合框架的增加,以及使用Collections工具类
3:比较的方法 实现有多种,這里使用 String类的indexOf根据索引大小判断。
Poker (扑克类)

/**
 * 简单的扑克类
 */
public class Poker {
    private String color;//花色
    private String number;//数字

    public Poker(String color, String number) {
        this.color = color;
       this. number = number;
    }

    @Override
    public String toString() {
        return color+number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}

Player(玩家类)

package com.poker;

import java.util.List;

/**
 * 简单的玩家类
 */
public class Player {
    private String id;
    private String name;
    private List poker;

    public Player(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List getPoker() {
        return poker;
    }

    public void setPoker(List poker) {
        this.poker = poker;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Player player = (Player) o;

        if (id != null ? !id.equals(player.id) : player.id != null) return false;
        return name != null ? name.equals(player.name) : player.name == null;
    }

    @Override
    public int hashCode() {
        int result = id != null ? id.hashCode() : 0;
        result = 31 * result + (name != null ? name.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "Player{" +
                "id='" + id + ''' +
                ", name='" + name + ''' +
                '}';
    }

    public void showPoker(){

        System.out.print("id: "+id+ "name:"+ name +"手持牌为:");
        for (int i=0;i

Compare (零时比较类)

package com.poker;

import java.util.Comparator;

public class Compare implements Comparator {
    @Override
    public int compare(Poker o1, Poker o2) {

//        String[] colors ={"黑桃","红桃","梅花","方块"};
//        String[] numbers ={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

        String colors = "方块 梅花 红桃 黑桃";
        String numbers = "3 4 5 6 7 8 9 10 J Q K A 2";

        System.out.println("牌数: "+o1.getNumber()+" -- " + o2.getNumber());
        System.out.println("牌色: "+o1.getColor()+" -- " + o2.getColor());

       if(  numbers.indexOf(o1.getNumber()) == numbers.indexOf(o2.getNumber())){

           return colors.indexOf(o1.getColor()) - colors.indexOf(o2.getColor());

       }else {

           return numbers.indexOf(o1.getNumber()) - numbers.indexOf(o2.getNumber());
       }

    }
}

PokerTest(游戏主程序)

package com.poker;
import java.util.*;

public class PokerTest {
    public static void main(String[] args) {

        System.out.println("============创建扑克牌===========");
        List pokers = CreatePoker();
        showPoker(pokers);

//        洗牌
        System.out.println("=============开始洗牌===========");
        shuffleTheDeck(pokers);
//        showPoker(pokers);
//        创建玩家:

        System.out.println("=========请输入几名玩家:");

        int playerNum = getNumberByScanner();

        List players =createPlayer(playerNum);
        System.out.println("=====玩家信息=====");
        showPlayer(players);
//        发牌
        System.out.println("=========开始发牌===============");
        dealPoker(players,pokers,2);

//        查看下牌

        players.get(0).showPoker();
        players.get(1).showPoker();
//        比较玩家的牌的方法咯
        comparePoker(players);

    }

    public static int getNumberByScanner(){
        int result = 0;
        Scanner sc = new Scanner(System.in);
        boolean correct = false;
        do {
            correct = false;
            String playerNum = sc.next();
            try {
                result = Integer.parseInt(playerNum);

            } catch (NumberFormatException e) {
//                e.printStackTrace();//错误信息注释掉
                System.out.println("输入错误,请输入数字!");
                correct =true;
            }
        }while (correct);
        return result;
    }

    public static void comparePoker(List players){

        Compare compare = new Compare();
            List apokers = players.get(0).getPoker();
            List bpokers = players.get(1).getPoker();

       int a = compare.compare(apokers.get(0),apokers.get(1));
//玩家手中的大牌
       Poker amax = null;
       Poker bmax = null;

       amax= a players,List pokers,int n){

        List poker1 = new ArrayList();
        List poker2 = new ArrayList();
        Iterator it = pokers.iterator();
        int count = 0;
        while (it.hasNext() && (count players){
        Iterator it = players.iterator();
        while (it.hasNext()){
            System.out.println( it.next().toString());
        }
    }

    /***
     * 创建玩家的方法
     * @param n
     * @return
     */
    public static List createPlayer(int n){

        List players = new ArrayList();
        Scanner sc = new Scanner(System.in);
        for (int i=0;i pokers){
        System.out.println("====开始洗牌===");
        Collections.shuffle(pokers);
        System.out.println("洗牌结束");

    }

    /**创建一副Poker*/
    public static List CreatePoker(){
        String[] colors ={"黑桃","红桃","梅花","方块"};
        String[] numbers ={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        List pokers = new ArrayList();
        for(int i=0;i pokers){
        int count=0;
        for (int i=0;i

运行结果
图片描述

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/755/viewspace-2808225/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-11-21

  • 博文量
    213
  • 访问量
    28344