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

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

Java實現斗地主的發牌功能

瀏覽:119日期: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
相關文章:
主站蜘蛛池模板: 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 至顶网| 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 飞飞影视_热门电影在线观看_影视大全 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | WTB5光栅尺-JIE WILL磁栅尺-B60数显表-常州中崴机电科技有限公司 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | 绿叶|绿叶投资|健康产业_绿叶投资集团有限公司 | 中国在职研究生招生信息网 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 影合社-影视人的内容合作平台| 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 变频器维修公司_plc维修_伺服驱动器维修_工控机维修 - 夫唯科技 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 |