java實(shí)現(xiàn)撲克牌牌面小程序
本文實(shí)例為大家分享了java實(shí)現(xiàn)撲克牌牌面小程序的具體代碼,供大家參考,具體內(nèi)容如下
本周分享一個(gè)撲克牌牌面小程序如下:
package com.softeem.lmg.one2.work1;
import java.util.Objects;
/**首先是牌面類
* 5、參考斗地主的游戲規(guī)則,完成一個(gè)發(fā)牌的功能(54張牌,考慮點(diǎn)數(shù),花色;三名玩家,其中地主比其他玩家多3張牌)
* @author admin
*/
public class Card {
/**牌面值*/
private String name;
/**花色*/
private String flower;
/**大小點(diǎn)數(shù)*/
private int num;
public Card() {
}
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;
}
public String toString() {
if(Objects.nonNull(flower)){
return name+"-"+num+"-"+flower;
}
return name+"-"+num;
}
}
package com.softeem.lmg.one2.work1;
import java.util.ArrayList;
/**其次是玩家類*/
public class Player {
/**玩家ID*/
private int pid;
/**玩家姓名*/
private String pname;
/**是否是地主*/
private boolean boss;
/**牌集合*/
private ArrayList<Card> cards =new ArrayList<>();
public Player() {
}
public Player(int pid, String pname, boolean boss, ArrayList<Card> cards) {
super();
this.pid = pid;
this.pname = pname;
this.boss = boss;
this.cards = cards;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
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;
}
public String toString() {
return pname+(boss ? "(地主)" : "")+":"+cards;
}
}
package com.softeem.lmg.one2.work1;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/**
*最后是管理類
*/
public class GameManager {
/**聲明所有牌的集合*/
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<>();
/**聲明隨機(jī)數(shù)生成器*/
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(){
Scanner sc=new Scanner(System.in);
System.out.println("請(qǐng)輸入玩家1名稱");
String name1=sc.nextLine();
System.out.println("請(qǐng)輸入玩家2名稱");
String name2=sc.nextLine();
System.out.println("請(qǐng)輸入玩家3名稱");
String name3=sc.nextLine();
Player p1=new Player();
p1.setPid(1);
p1.setPname(name1);
Player p2=new Player();
p2.setPid(2);
p2.setPname(name2);
Player p3=new Player();
p3.setPid(3);
p3.setPname(name3);
/**將三名玩家分別加入集合*/
players.add(p1);
players.add(p2);
players.add(p3);
}
/**隨機(jī)地主*/
public void randomBoss(){
addPlayer();
int i=randomGen.nextInt(players.size());
players.get(i).setBoss(true);
}
/**發(fā)牌*/
public ArrayList<Player> sendCard(){
randomBoss();
for (Player p : players) {
for (int i = 0; i < 17; i++) {
int cardIndex=randomGen.nextInt(all.size());
Card card=all.get(cardIndex);
p.getCards().add(card);
all.remove(card);
}
}
/**最后三張牌都給到地主*/
for (Player p : players) {
if(p.isBoss()){
p.getCards().addAll(all);
}
}
return players;
}
public static void main(String[] args) {
ArrayList<Player> players=new GameManager().sendCard();
for (Player pl : players) {
System.out.println(pl);
}
}
}
最后控制臺(tái)結(jié)果:

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java實(shí)現(xiàn)簡(jiǎn)易撲克牌游戲的完整實(shí)例
- java實(shí)現(xiàn)簡(jiǎn)單撲克牌游戲
- java實(shí)現(xiàn)撲克牌分發(fā)功能
- java實(shí)現(xiàn)撲克牌發(fā)牌器
- java實(shí)現(xiàn)簡(jiǎn)易撲克牌游戲
- 使用java對(duì)一副撲克牌建模
- Java實(shí)現(xiàn)撲克牌洗牌和發(fā)牌
- java用撲克牌計(jì)算24點(diǎn)
- Java撲克牌速算24的方法
- Java基礎(chǔ)高級(jí)綜合練習(xí)題撲克牌的創(chuàng)建
- Java模擬撲克牌洗牌實(shí)現(xiàn)生成52張撲克的方法示例
- JAVA collection集合之撲克牌游戲?qū)嵗?/a>
- Java實(shí)戰(zhàn)練習(xí)之撲克牌魔術(shù)
相關(guān)文章
Springboot集成Quartz實(shí)現(xiàn)定時(shí)任務(wù)代碼實(shí)例
這篇文章主要介紹了Springboot集成Quartz實(shí)現(xiàn)定時(shí)任務(wù)代碼實(shí)例,任務(wù)是有可能并發(fā)執(zhí)行的,若Scheduler直接使用Job,就會(huì)存在對(duì)同一個(gè)Job實(shí)例并發(fā)訪問的問題,而JobDetail?&?Job方式,Scheduler都會(huì)根據(jù)JobDetail創(chuàng)建一個(gè)新的Job實(shí)例,這樣就可以規(guī)避并發(fā)訪問問題2023-09-09
springboot項(xiàng)目mysql-connector-java默認(rèn)版本如何查看
這篇文章主要介紹了springboot項(xiàng)目mysql-connector-java默認(rèn)版本如何查看問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹
這篇文章主要介紹了java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10
Java中的MapStruct實(shí)現(xiàn)詳解
這篇文章主要介紹了Java中的MapStruct實(shí)現(xiàn)詳解,MapStruct 是一個(gè)代碼生成器,它基于約定優(yōu)先于配置的方法大大簡(jiǎn)化了 JavaBean 類型之間映射的實(shí)現(xiàn),生成的映射代碼使用普通方法調(diào)用,需要的朋友可以參考下2023-11-11
SpringBoot?緩存預(yù)熱的實(shí)現(xiàn)

