文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java实现扑克牌程序

2024-04-02 19:55

关注

本文实例为大家分享了Java实现扑克牌程序的具体代码,供大家参考,具体内容如下

思路:

在实现之前,先要想好步骤,思路清晰才不会出错。
要实现一副扑克牌,首先要创建这个类,然后有一副扑克牌,之后进行洗牌,抓牌。

1.定义一个Card类

2.实现这个游戏:

①构造一副扑克牌(52张)这里不包含大小王
②洗牌
③三个人每个人抓五张牌

代码实现及其细节:

1.定义一个Card类

一张牌中包括两个属性:花色和牌面值


public class MyCard {
    public char suit;   //花色
    public String rank; //牌面值

    public MyCard(String rank, char suit) {
        this.suit = suit;
        this.rank = rank;
    }
    public String toString(){
        return String.format("[%s %c]",rank,suit);
    }
}

2.实现这个游戏

写一个CardGame来实现这个扑克牌游戏,其中分为很多细小的分支。

1.买一副牌

前面写了Card来表示一张牌,这里我们买一副牌,就是52个Card放在一起,就组成一个List,所以这里一副牌的类型为List<Card>。


public List<MyCard> buyDeck(){
        //首先将花色和牌面值陈列出来
        //因为牌面值有A,J,Q,K,这里采用的是字符串数组
        //也可以将A,J,Q,K单独处理,剩下的写作一个整型数组
        char[] suits={'♦','♥','♠','♣'};
        String[] ranks={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        //创建52张牌
        List<MyCard> deck=new ArrayList<>(52);
        for(int i=0;i<4;i++){
            for(int j=0;j<13;j++){
                deck.add(new MyCard(ranks[j],suits[i]));
            }
        }
        return deck;
    }

2.洗牌:

使用随机数


//写一个交换函数方便洗牌方法实现
public void swap(List<MyCard> deck,int i,int j){
        MyCard temp=deck.get(i);
        deck.set(i,deck.get(j));
        deck.set(j,temp);
    }

    public void shuffle(List<MyCard> deck){
        //设置随机数
        Random r=new Random();//实例化一个Random类
        for(int j=deck.size()-1;j>0;j--){
            int i=r.nextInt(j);   //随机产生一个大于等于0小于51的整数
            swap(deck,i,j);       //将生成的0-51的随机数与与最后一个数交换实现洗牌
        }
    }

3.主函数:

在这里实现发牌,每人五张牌,三个人轮流抓,将三个人放在一个List当中,三个人中的牌信息为List<Card>,所以hands的类型为List<List<Card>>.


public static void main(String[] args){
        CardGame cg=new CardGame();
        List<MyCard> deck=cg.buyDeck();
        System.out.println("刚买回来的牌:");
        System.out.println(deck);
        cg.shuffle(deck);
        System.out.println("洗完的牌:");
        System.out.println(deck);
        //三人轮流抓牌,一人抓五张
        //将三个玩家放到一个List当中
        List<List<MyCard>> hands=new ArrayList<>(3);
        //三个人手中每个人五张牌
        hands.add(new ArrayList<>(5));
        hands.add(new ArrayList<>(5));
        hands.add(new ArrayList<>(5));
        //ABC三个人抓牌
        for(int i=0;i<5;i++){
            for(int j=0;j<3;j++){
                //从deck里面抓走的
                //抓的时候把最顶上的抓走
                hands.get(j).add(deck.remove(0));;
            }
        }
        System.out.println("剩下的牌:");
        System.out.println("A手中的牌:");
        System.out.println(hands.get(0));
        System.out.println("B手中的牌:");
        System.out.println(hands.get(1));
        System.out.println("C手中的牌:");
        System.out.println(hands.get(2));
    }

输出结果:

后面的没显示全

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯