电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java實現斗地主的發牌功能

瀏覽:118日期:2022-08-09 15:58:29

斗地主是全國范圍內的一種桌面游戲,盡管全國各種類型,但大同小異,今天我們先來實現一下斗地主中的發牌功能,為了程序的可讀性以及可拓展性,此次我們使用面向對象的方法來實現此功能。

首先,斗地主要求有撲克和玩家才能開始游戲,所以這里我們首先要創建一個撲克牌實體類和一個玩家實體類,具體代碼如下:

首先是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中的一個靜態方法實現隨機順序集合*/ Collections.shuffle(list); } /**發牌功能*/ public void FaPai(){ /**每次按順序給每人發一張牌直到51張牌發完*/ 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方法實現排序功能*/ 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
相關文章:
主站蜘蛛池模板: 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 防火窗_耐火窗_防火门厂家_防火卷帘门-重庆三乐门业有限公司 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 农业四情_农业气象站_田间小型气象站_智慧农业气象站-山东风途物联网 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 硅胶布|电磁炉垫片|特氟龙胶带-江苏浩天复合材料有限公司 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 小型单室真空包装机,食品单室真空包装机-百科 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 云南成人高考_云南成考网| 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 上海三信|ph计|酸度计|电导率仪-艾科仪器 | 压力变送器-上海武锐自动化设备有限公司 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 首页_中夏易经起名网| 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 锂离子电池厂家-山东中信迪生电源 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 影像测量仪_三坐标测量机_一键式二次元_全自动影像测量仪-广东妙机精密科技股份有限公司 | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 |