java實現(xiàn)撲克牌牌面小程序
更新時間:2020年11月23日 11:02:13 作者:天子笑,分你一壇!
這篇文章主要為大家詳細介紹了java實現(xiàn)撲克牌牌面小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現(xiàn)撲克牌牌面小程序的具體代碼,供大家參考,具體內(nèi)容如下
本周分享一個撲克牌牌面小程序如下:
package com.softeem.lmg.one2.work1; import java.util.Objects; /**首先是牌面類 * 5、參考斗地主的游戲規(guī)則,完成一個發(fā)牌的功能(54張牌,考慮點數(shù),花色;三名玩家,其中地主比其他玩家多3張牌) * @author admin */ public class Card { /**牌面值*/ private String name; /**花色*/ private String flower; /**大小點數(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<>(); /**聲明隨機數(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("請輸入玩家1名稱"); String name1=sc.nextLine(); System.out.println("請輸入玩家2名稱"); String name2=sc.nextLine(); System.out.println("請輸入玩家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); } /**隨機地主*/ 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); } } }
最后控制臺結(jié)果:
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
Springboot集成Quartz實現(xiàn)定時任務(wù)代碼實例
這篇文章主要介紹了Springboot集成Quartz實現(xiàn)定時任務(wù)代碼實例,任務(wù)是有可能并發(fā)執(zhí)行的,若Scheduler直接使用Job,就會存在對同一個Job實例并發(fā)訪問的問題,而JobDetail?&?Job方式,Scheduler都會根據(jù)JobDetail創(chuàng)建一個新的Job實例,這樣就可以規(guī)避并發(fā)訪問問題2023-09-09springboot項目mysql-connector-java默認版本如何查看
這篇文章主要介紹了springboot項目mysql-connector-java默認版本如何查看問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11java 過濾器模式(Filter/Criteria Pattern)詳細介紹
這篇文章主要介紹了java 過濾器模式(Filter/Criteria Pattern)詳細介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10