用java實(shí)現(xiàn)斗地主發(fā)牌過程
本文實(shí)例為大家分享了java實(shí)現(xiàn)斗地主發(fā)牌過程的具體代碼,供大家參考,具體內(nèi)容如下
一、牌類實(shí)現(xiàn)
定義牌的相關(guān)屬性,點(diǎn)數(shù)、花色、大小
package com.softeem.lesson18.doudizhu;
import java.util.Objects;
public class Card {
//牌面值
private String name;
//花色
private String flower;
//點(diǎn)數(shù)
private int num;
public Card() {
// TODO Auto-generated constructor stub
}
public Card(String name, String flower, int num) {
super();
this.name = name;
this.flower = flower;
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFlower() {
return flower;
}
public void setFlower(String flower) {
this.flower = flower;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
if(Objects.nonNull(flower)) {
return name+"-"+num+"-"+flower;
}
return name+"-"+num;
}
}
二、玩家類
玩家類中定義了萬家的相關(guān)屬性,名字,ID,還定義了一個(gè)牌類數(shù)組,將每位玩家的牌加入到數(shù)組中。
package com.softeem.lesson18.doudizhu;
import java.util.ArrayList;
public class Player {
private int id;
private String name;
private boolean boss;
private ArrayList<Card> cards = new ArrayList<>();
public Player() {
}
public Player(int id, String name, boolean boss, ArrayList<Card> cards) {
super();
this.id = id;
this.name = name;
this.boss = boss;
this.cards = cards;
}
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 boolean isBoss() {
return boss;
}
public void setBoss(boolean boss) {
this.boss = boss;
}
public ArrayList<Card> getCards() {
return cards;
}
public void setCards(ArrayList<Card> cards) {
this.cards = cards;
}
@Override
public String toString() {
return name+(boss?"(地主)" : "") + cards;
}
}
三、功能類
功能類中實(shí)現(xiàn)了牌的分發(fā),每人17張牌,然后地主多三張牌的實(shí)現(xiàn),以及對(duì)玩家進(jìn)行隨機(jī)分配地主等功能。
package com.softeem.lesson18.doudizhu;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class GameManage {
private static ArrayList<Card> all = new ArrayList<>();
private static String [] names = {"3","4","5","6","7","8","9","10","J","Q","K","A","2","Queen","King"};
private static String [] flowers = {"紅桃","黑桃","方塊","梅花"};
private ArrayList<Player> players = new ArrayList<Player>();
private static Random randomGen = new Random();
static {
//初始化所有牌
int i = 0;
for(; i < names.length - 2;i++) {
for(int j = 0;j < flowers.length;j++) {
Card c = new Card(names[i],flowers[j],i);
all.add(c);
}
}
//加入大小王
all.add(new Card(names[names.length - 2],null,i++));
all.add(new Card(names[names.length - 1],null,i++));
}
public void addPlayer() {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入第一個(gè)玩家的名字:");
String name1 = sc.nextLine();
System.out.println("請(qǐng)輸入第二個(gè)玩家的名字:");
String name2 = sc.nextLine();
System.out.println("請(qǐng)輸入第三個(gè)玩家的名字:");
String name3 = sc.nextLine();
Player p1 = new Player();
p1.setId(1);
p1.setName(name1);
Player p2 = new Player();
p2.setId(2);
p2.setName(name2);
Player p3 = new Player();
p3.setId(3);
p3.setName(name3);
players.add(p1);
players.add(p2);
players.add(p3);
}
public void randomBoss() {
//添加玩家
addPlayer();
//隨機(jī)地址索引
int i = randomGen.nextInt(players.size());
players.get(i).setBoss(true);
}
public void sendCard() {
randomBoss();
//對(duì)玩家遍歷
for(Player p : players) {
//先為每一位玩家隨機(jī)發(fā)17張牌
for(int i = 0;i <17;i++) {
int cardIndex = randomGen.nextInt(all.size());
Card card = all.get(cardIndex);
//將牌加入到玩家的牌容器中
p.getCards().add(card);
//從牌組中移除已經(jīng)發(fā)出去的牌
all.remove(card);
}
}
//最后三張牌給地主
for(Player p : players) {
if(p.isBoss()) {
p.getCards().addAll(all);
}
}
for(Player p : players) {
System.out.println(p);
}
}
public static void main(String[] args) {
new GameManage().sendCard();
}
}
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解
在應(yīng)用程序的開發(fā)過程中,性能調(diào)優(yōu)是一個(gè)重要的環(huán)節(jié),在SpringBoot應(yīng)用程序中,我們可以使用YourKit來進(jìn)行性能調(diào)優(yōu),YourKit是一款非常強(qiáng)大的Java性能調(diào)優(yōu)工具,在本文中,我們將介紹如何在 SpringBoot應(yīng)用程序中使用YourKit進(jìn)行性能調(diào)優(yōu)2023-06-06
java BASE64Encoder詳細(xì)介紹及簡單實(shí)例
這篇文章主要介紹了java BASE64Encoder詳細(xì)介紹及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-01-01

