我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java如何实现斗地主的发牌功能

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java如何实现斗地主的发牌功能

这篇文章主要介绍了Java如何实现斗地主的发牌功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实现一下斗地主中的发牌功能,为了程序的可读性以及可拓展性,此次我们使用面向对象的方法来实现此功能。

首先,斗地主要求有扑克和玩家才能开始游戏,所以这里我们首先要创建一个扑克牌实体类和一个玩家实体类,具体代码如下:

首先是Poker类,含点数,花色和排序属性,大小王之后额外添加,这里我们必须实现一个Comparable接口,方便之后进行排序:

public class Poker implements Comparable<Poker>{ private String flower; private String pointer; private int sort;  public Poker() { } public Poker(String flower, String pointer, int sort) {  super();  this.flower = flower;  this.pointer = pointer;  this.sort = sort; } public String getFlower() {  return flower; } public void setFlower(String flower) {  this.flower = flower; } public String getPointer() {  return pointer; } public void setPointer(String pointer) {  this.pointer = pointer; } public int getSort() {  return sort; } public void setSort(int sort) {  this.sort = sort; } @Override public String toString() {  return flower +"-" + pointer; } @Override public int compareTo(Poker a) {  return this.getSort() - a.getSort(); } }

然后就是Player类,这里我们定义属性有id,玩家名字以及玩家手牌和是否地主:

import java.util.ArrayList;public class Player { private int id; private String name; private ArrayList<Poker> pokers = new ArrayList<>(); private boolean boss; public Player() { } public Player(int id, String name) {  super();  this.id = id;  this.name = name; } public int getId() {  return id; } public void setId(int id) {  this.id = id; } public String getName() {  return name; } public void setName(String name) {  this.name = name; } public ArrayList<Poker> getPokers() {  return pokers; } public void setPokers(ArrayList<Poker> pokers) {  this.pokers = pokers; } public boolean isBoss() {  return boss; } public void setBoss(boolean boss) {  this.boss = boss; }}

实体类建完之后,我们就要开始实现功能了,首先我们将要实现的功能简单叙述一下,首先我们要求有一副54张的完整牌,然后洗牌(此处我们用Collections里的静态shuffle方法实现),然后开始按洗好的牌发牌51张,发完随机地主,将剩余的三张牌给地主,并将三名玩家的牌均按大小显示出来。

import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import java.util.Random;public class PokerGame {  static List<Player> players; static ArrayList<Poker> list = new ArrayList<>(); static String[] flowers = {"梅花","黑桃","方块","红桃"}; static String[] pointers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; int bossIndex;  static{  for(int i = 0;i < flowers.length;i++){   for(int j = 0;j < pointers.length;j++){    Poker p = new Poker(flowers[i],pointers[j],j);    list.add(p);   }  }  list.add(new Poker("小","王",13));  list.add(new Poker("大","王",14));    players = Arrays.asList(    new Player(1,"胡灿"),    new Player(2,"戴豪杰"),    new Player(3,"马涛")    ); }    public void pushBoss(){    Random r = new Random();  bossIndex = r.nextInt(players.size());  players.get(bossIndex).setBoss(true); }   public void XiPai(){    Collections.shuffle(list); }   public void FaPai(){    for(int i = 0;i < 51;i+=3){   players.get(0).getPokers().add(list.get(i));    players.get(1).getPokers().add(list.get(i+1));    players.get(2).getPokers().add(list.get(i+2));   }    for(int j = 51;j < 54;j++){   players.get(bossIndex).getPokers().add(list.get(j));  } }   public void PaiXu(){    Collections.sort(players.get(0).getPokers());  Collections.sort(players.get(1).getPokers());  Collections.sort(players.get(2).getPokers()); }   public void start(){  pushBoss();  XiPai();  FaPai();  PaiXu();  for(Player p:players){   System.out.println(p.getPokers());  } }}

下面我们来看看具体实现:

public class Test { public static void main(String[] args) {  new PokerGame().start(); } }

结果如下:

Java如何实现斗地主的发牌功能

感谢你能够认真阅读完这篇文章,希望小编分享的“Java如何实现斗地主的发牌功能”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

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

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

Java如何实现斗地主的发牌功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java如何实现斗地主的发牌功能

这篇文章主要介绍了Java如何实现斗地主的发牌功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实
2023-06-20

java如何实现斗地主发牌功能

这篇文章给大家分享的是有关java如何实现斗地主发牌功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下问题:参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,花色;三名玩家,其中地主比其他
2023-06-20

Java如何实现斗地主洗牌发牌系统

这篇文章主要为大家展示了“Java如何实现斗地主洗牌发牌系统”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何实现斗地主洗牌发牌系统”这篇文章吧。一、斗地主1.前言相信每位看过《赌神》的
2023-06-29

Java中如何实现斗地主游戏

这篇文章给大家分享的是有关Java中如何实现斗地主游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。题目要求:通过自制54张扑克牌,发给3人,留下3张底牌,分别显示不同人的手牌与底牌达到斗地主的游戏需求算法思想:
2023-06-20

如何实现java命令行版的斗地主

本篇内容介绍了“如何实现java命令行版的斗地主”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、前言相信大家都玩过斗地主游戏,或在现实中
2023-06-16

Java实现简易的洗牌和发牌功能

本文主要介绍了Java实现简易的洗牌和发牌功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-15

java实现控制台斗地主的方法

小编给大家分享一下java实现控制台斗地主的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,
2023-06-14

Java怎么实现简易的洗牌和发牌功能

这篇“Java怎么实现简易的洗牌和发牌功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java怎么实现简易的洗牌和发牌功能
2023-07-06

如何在java中使用ArrayList实现一个斗地主游戏

本篇文章为大家展示了如何在java中使用ArrayList实现一个斗地主游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 准备牌每张扑克牌牌由花色和数字两部分组成。可以使用花色集合与数字集合嵌
2023-06-06

java IP归属地功能如何实现

这篇文章主要介绍“java IP归属地功能如何实现”,在日常操作中,相信很多人在java IP归属地功能如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java IP归属地功能如何实现”的疑惑有所帮助!
2023-07-02

.Net Core中如何使用SignalR实现斗地主游戏

本篇内容主要讲解“.Net Core中如何使用SignalR实现斗地主游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“.Net Core中如何使用SignalR实现斗地主游戏”吧!直接上干货,
2023-06-26

Java高级应用之斗地主游戏的实现示例

小编给大家分享一下Java高级应用之斗地主游戏的实现示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!斗地主综合案例,供大家参考,具体内容如下运用HashMap、
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录