国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java簡單實(shí)現(xiàn)斗地主發(fā)牌功能

java簡單實(shí)現(xiàn)斗地主發(fā)牌功能

2021-09-18 14:0335937045 Java教程

這篇文章主要為大家詳細(xì)介紹了java簡單實(shí)現(xiàn)斗地主發(fā)牌功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java簡單實(shí)現(xiàn)斗地主發(fā)牌的具體代碼,供大家參考,具體內(nèi)容如下

問題:

參考斗地主的游戲規(guī)則,完成一個(gè)發(fā)牌的功能(54張牌,考慮點(diǎn)數(shù),花色;三名玩家,其中地主比其他玩家多3張牌)
要求實(shí)現(xiàn)以下功能:

1、洗牌
2、發(fā)牌(發(fā)牌按照常規(guī)方式A-B-C-A-B-C-A…,不允許一次性隨機(jī)17張給某個(gè)玩家)
3、玩家手中牌的展示(要求按點(diǎn)數(shù)實(shí)現(xiàn)排序)

分析

運(yùn)用面向?qū)ο蟮某绦蛟O(shè)計(jì)思維分為撲克、玩家和游戲三部分,撲克類屬性有花色,點(diǎn)數(shù),次序;玩家類屬性有玩家id,昵稱,是否地主,牌的集合;游戲過程分為洗牌,隨機(jī)產(chǎn)生地主,發(fā)牌,完成牌的排序,玩家手里的牌展示功能

程序?qū)崿F(xiàn)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
package com.lesson17.homework;
 
/**
 * @author HUC
 *
 */
 
/**撲克類*/
public class Poker {
 
 /** 撲克花色 */
 private String flower;
 /** 撲克點(diǎn)數(shù) */
 private String pointer;
 /** 撲克順序 */
 private int sort;
 
 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;
 }
 
package com.lesson17.homework;
   
public class Player {
 
 /** 玩家id */
 private int id;
 /** 玩家昵稱 */
 private String name;
 /** 玩家拿到的牌 */
 private ArrayList<Poker> pokers = new ArrayList<>();
 /** 玩家是否地主 */
 private boolean boss;
 
 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;
 }
 
package com.lesson17.homework;
 
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++) {
    //生成一張撲克對(duì)象
    Poker p = new Poker(flowers[i], pointers[j], j);
    list.add(p);
   }
  }
  //單獨(dú)將大小王加入集合
  list.add(new Poker("小", "王", 13));
  list.add(new Poker("大", "王", 14));
  
  //初始化玩家
  players = Arrays.asList(
    new Player(1, "劉備"),
    new Player(2, "關(guān)羽"),
    new Player(3, "張飛"));
 }
 
 /**洗牌*/
 public void washPoker(){
  Collections.shuffle(list);
 }
 
 /**隨機(jī)地主*/
 public void pushBoss(){
  Random r = new Random();
  bossIndex = r.nextInt(players.size());
  //設(shè)置被隨機(jī)到的玩家為地主
  players.get(bossIndex).setBoss(true);
 }
 
 
 /**依次發(fā)牌*/
 public void pushPoker(){
  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 i = 51;i < 54 ;i++){
   //將最后剩余的牌(3張)全部給地主
   players.get(bossIndex).getPokers().add(list.get(i));
  }
 }
 
 /**排序*/
 public void sortPoker() {
  Collections.sort(players.get(0).getPokers(), (a,b)->a.getSort()-b.getSort());
  Collections.sort(players.get(1).getPokers(), (a,b)->a.getSort()-b.getSort());
  Collections.sort(players.get(2).getPokers(), (a,b)->a.getSort()-b.getSort());
 }
 
 public void start(){
  //隨機(jī)地主
  pushBoss();
  //洗牌
  washPoker();
  //發(fā)牌
  pushPoker();
  //排序
  sortPoker();
  //展示牌
  for(Player p : players){
   System.out.println(p.getPokers());
  }
 }
 
 public static void main(String[] args) {
  new PokerGame().start();
 }
}

結(jié)果

java簡單實(shí)現(xiàn)斗地主發(fā)牌功能

java簡單實(shí)現(xiàn)斗地主發(fā)牌功能

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/qq_35937045/article/details/97620335

延伸 · 閱讀

精彩推薦
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒有升過級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7472021-02-04
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
主站蜘蛛池模板: а天堂中文官网 | 国产偷窥老熟盗摄视频 | 婷婷综合久久 | 久久99精品久久久久久国产越南 | 日韩精品 电影一区 亚洲 | 中文字幕视频在线 | 中文字幕免费观看 | 国产第一亚洲 | 天天插天天干 | 久久国产免费 | 亚洲一区二区久久 | 中文字幕日韩欧美一区二区三区 | 日韩中文字幕一区二区三区 | 久久久国色 | 国产极品探花 | 欧美精品一二三区 | 精品福利一区二区三区 | 久在线看 | 国产精品久久久久久亚洲调教 | 国产麻豆一区二区三区 | 国产精品久久久999 一区二区三区视频免费在线观看 | 成人av一区二区三区 | 国产精品久久久亚洲 | 亚洲精品www久久久久久广东 | 国产在线中文字幕 | 免费成人av片| 欧美一区二区三区免费视频 | 成人妇女免费播放久久久 | 国产精品自产拍在线观看 | 久久精品国产一区二区三区 | 中文在线中文a | 四虎影视免费看电影 | 久久精品久久久 | 国产黄色影视 | 亚洲精品国产乱码在线看蜜月 | 久久国产精品电影 | 91精品国产欧美一区二区 | 777777777亚洲妇女 | 亚洲一区二区三区蜜桃 | 国产精品久久久久久久美男 | www.久久精品 |