91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何實現斗地主發牌系統

發布時間:2020-08-01 10:50:47 來源:億速云 閱讀:126 作者:小豬 欄目:編程語言

這篇文章主要講解了java如何實現斗地主發牌系統,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

玩家類

package com.softeem.example;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * 玩家類
 * 
 */
public class Player {
 
 private String name; //名字
 private boolean landowner; //是否地主
 private List<Card> cards = new ArrayList<>(); //手中的所有牌
 
 public Player() {
 // TODO Auto-generated constructor stub
 }
 
 public Player(String name) {
 super();
 this.name = name;
 }
 
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public boolean isLandowner() {
 return landowner;
 }
 public void setLandowner(boolean landowner) {
 this.landowner = landowner;
 }
 public List<Card> getCards() {
 return cards;
 }
 public void setCards(List<Card> cards) {
 this.cards = cards;
 }
 
 @Override
 public String toString() {
 return name+"-是否地主:"+landowner+"->"+cards;
 }
 
 
 
}

牌類

package com.softeem.example;
 
/**
 * 牌類
 * 
 */
public class Card implements Comparable<Card>{
 
 private int num;//點數 
 private String name;//牌面
 private String flower;//花色
 
 public Card() {
 // TODO Auto-generated constructor stub
 }
 
 public Card(int num, String name, String flower) {
 super();
 this.num = num;
 this.name = name;
 this.flower = flower;
 }
 
 public int getNum() {
 return num;
 }
 public void setNum(int num) {
 this.num = num;
 }
 public String getFlower() {
 return flower;
 }
 public void setFlower(String flower) {
 this.flower = flower;
 }
 
 public String getName() {
 return name;
 }
 
 public void setName(String name) {
 this.name = name;
 }
 
 @Override
 public int compareTo(Card c) {
 return this.num - c.num;
 }
 
 @Override
 public String toString() {
 return name+"-"+flower+"-"+num;
 }
 
 
}
package com.softeem.example;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
 
public class PokerGame {
 
 static List<Card> list = new ArrayList<>(); //所有牌集合
 static List<Player> players = new ArrayList<>(); //玩家集合
 static int position; //初始化當前發牌的位置
 static String[] flowers = {"紅桃","方片","梅花","黑桃"};
 static String[] names = {"3","4","5","6","7","8","9","10","J","Q","K","A","2","小王","大王"};
 
 /**
 * 初始化所有牌面和玩家
 */
 static{
 int i = 0;
 //遍歷所有的牌面值(除大小王:大小王無花色)
 for (; i < names.length - 2; i++) {
 for (int j = 0; j < flowers.length; j++) {
 list.add(new Card(i, names[i], flowers[j]));
 }
 }
 list.add(new Card(i++, names[names.length-2], null));
 list.add(new Card(i++, names[names.length-1], null));
 
 
 }
 
 /**
 * 初始化玩家
 */
 public void initPlayer(){
 players.clear();
 players.add(new Player("蓋倫"));
 players.add(new Player("艾希"));
 players.add(new Player("瑪爾扎哈"));
 }
 
 /**
 * 洗牌
 */
 public void shuffle(){
 //索引重置
 position = 0;
 Collections.shuffle(list);
 Collections.shuffle(list);
 Collections.shuffle(list); 
 start();
 }
 
 /**
 * 發牌
 */
 public void sendCards(){
 //準備玩家
 initPlayer();
 //隨機地主(索引)
 int index = new Random().nextInt(players.size());
 //設置為地主
 players.get(index).setLandowner(true);
 Card now = null;
 while(position < list.size() - 3){
 //獲取最上面的一張牌
 now = list.get(position);
 if(position % 3 == 0){
 players.get(0).getCards().add(now);
 }else if(position % 3 == 1){
 players.get(1).getCards().add(now);
 }else{
 players.get(2).getCards().add(now);
 }
 position++;
 }
 //獲取集合中的最后三張牌
 List<Card> last = list.subList(list.size()-3, list.size());
 //將最后三張牌給地主
 players.get(index).getCards().addAll(last);
 //顯示
 show();
 
 }
 
 /**
 * 顯示發牌結果
 */
 public void show(){
 //排序
 Collections.sort(players.get(0).getCards());
 Collections.sort(players.get(1).getCards());
 Collections.sort(players.get(2).getCards());
 players.stream().forEach(p->System.out.println(p));
 start();
 }
 
 
 public void start(){
 System.out.println("***********歡樂斗地主***********");
 System.out.println("***********【1】洗牌***********");
 System.out.println("***********【2】發牌***********");
 Scanner sc = new Scanner(System.in);
 
 String i = sc.nextLine();
 if(!i.matches("^\\d{1}$")){
 System.out.println("請輸入正確的指令!");
 start();
 return;
 }
 switch(i){
 case "1":
 shuffle();
 break;
 case "2":
 sendCards();
 break;
 default:
 System.out.println("指令不正確");
 start();
 break;
 }
 }
 
 public static void main(String[] args) {
 
 new PokerGame().start();
 }
 
}

看完上述內容,是不是對java如何實現斗地主發牌系統有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南漳县| 榕江县| 府谷县| 高碑店市| 安顺市| 大姚县| 临湘市| 沅陵县| 灌云县| 师宗县| 和平县| 中卫市| 浠水县| 沙湾县| 招远市| 惠东县| 苗栗市| 南和县| 通河县| 双辽市| 慈溪市| 常山县| 衢州市| 盘锦市| 阳泉市| 乐都县| 静宁县| 盐亭县| 沙坪坝区| 琼结县| 郑州市| 闽清县| 双辽市| 七台河市| 图片| 毕节市| 安义县| 镶黄旗| 电白县| 昌吉市| 黄石市|