如何用Java编写程序实现斗地主发牌功能?

2026-04-30 07:062阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计926个文字,预计阅读时间需要4分钟。

如何用Java编写程序实现斗地主发牌功能?

原文示例:本文字例为大家庭分享了Java实现战地主开发功能的整体代码,供大家参考。具体内容如下:

实现战地主开发功能,包含5张牌,地主与其他两名玩家多三张牌。有一个Card牌类和Player玩家类。

简化版:大家庭分享了Java实现战地主功能的代码,包含5张牌,地主牌数多于其他玩家。包含Card和Player类。

本文实例为大家分享了java实现斗地主发牌功能的具体代码,供大家参考,具体内容如下

实现斗地主发牌功能
共54张牌,地主比其他两名玩家多三张牌。

有一个card牌类和player玩家类,还有一个发牌类用于实现发牌的方法。
为了模拟每个玩家的牌都是随机的,我是这样想的:
1)初始化方法:用于将54张牌存到一个数组里,每张牌都一个唯一的序号。
2) 利用随机数,将每个序号打乱存到一个新数组里。
3)再根据序号取到初始化牌库数组内的牌,存到每个玩家的牌集合内。
附一个在老师指导下写的:斗地主发牌功能,自己还是有些没考虑周到。/_ \

代码如下:

牌类

public class Card { /**花色*/ private String HuaSe; /**点数*/ private String DianShu; /**序号*/ private int XuHao; public Card(String huaSe, String dianShu, int xuHao) { super(); HuaSe = huaSe; DianShu = dianShu; XuHao = xuHao; } public String getHuaSe() { return HuaSe; } public void setHuaSe(String huaSe) { HuaSe = huaSe; } public String getDianShu() { return DianShu; } public void setDianShu(String dianShu) { DianShu = dianShu; } public int getXuHao() { return XuHao; } public void setXuHao(int xuHao) { XuHao = xuHao; } @Override public String toString() { return "[" + HuaSe + DianShu + "]"; } }

玩家类

public class Player { /**玩家id*/ private int id; /**玩家姓名*/ private String name; /**是否是地主*/ private boolean dizhu; /**牌的集合*/ private ArrayList<Card> list; public Player(int id, String name, boolean dizhu) { super(); this.id = id; this.name = name; this.dizhu = dizhu; } 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 isDizhu() { return dizhu; } public void setDizhu(boolean dizhu) { this.dizhu = dizhu; } public ArrayList<Card> getList() { return list; } public void setList(ArrayList<Card> list) { this.list = list; } @Override public String toString() { return name + ", 牌:" + list ; } }

发牌类: 这里还有许多缺陷 :例如地主是需要自己指定而不是随机的,在给每个人发牌时,可以利用remove()方法将已经发过的牌移除,这样可以节省很多重复代码。

public class SendCard { static ArrayList<Card> arrayList = new ArrayList<Card>(); Random r = new Random(); /** * 初始话牌库 */ public void init() { for (int i = 1; i < 14; i++) { arrayList.add(new Card("梅花", Integer.toString(i), i)); arrayList.add(new Card("方块",Integer.toString(i),13 + i)); arrayList.add(new Card("红心", Integer.toString(i), 26 + i)); arrayList.add(new Card("黑桃", Integer.toString(i), 39 + i)); } arrayList.add(new Card("","大王",53)); arrayList.add(new Card("", "小王", 54)); } /** * 发牌(默认p3为地主) * @param p1 * @param p2 * @param p3 */ public void send(Player p1,Player p2,Player p3) { ArrayList<Integer> intList = new ArrayList<Integer>(); intList = fenpei(intList); //给p1发牌 ArrayList<Card> clist = new ArrayList<Card>(); for (int i = 0; i < 17; i++) { clist.add(arrayList.get(intList.get(i))); } p1.setList(clist); //给p2发牌 clist = new ArrayList<Card>(); for (int i = 17; i < 34; i++) { clist.add(arrayList.get(intList.get(i))); } p2.setList(clist); //给p3发牌 clist = new ArrayList<Card>(); for (int i = 34; i < 54; i++) { clist.add(arrayList.get(intList.get(i))); } p3.setList(clist); } /** * 将初始化牌库打乱后存入新数组 * @param list * @return */ public ArrayList<Integer> fenpei(ArrayList<Integer> list) { int index = 0; while (true) { int i = r.nextInt(54); for (Integer integer : list) { if (integer == i) { index = 1; break; } index = 0; } if(index == 0) list.add(i); if(list.size() == 54) break; } return list; } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

如何用Java编写程序实现斗地主发牌功能?

本文共计926个文字,预计阅读时间需要4分钟。

如何用Java编写程序实现斗地主发牌功能?

原文示例:本文字例为大家庭分享了Java实现战地主开发功能的整体代码,供大家参考。具体内容如下:

实现战地主开发功能,包含5张牌,地主与其他两名玩家多三张牌。有一个Card牌类和Player玩家类。

简化版:大家庭分享了Java实现战地主功能的代码,包含5张牌,地主牌数多于其他玩家。包含Card和Player类。

本文实例为大家分享了java实现斗地主发牌功能的具体代码,供大家参考,具体内容如下

实现斗地主发牌功能
共54张牌,地主比其他两名玩家多三张牌。

有一个card牌类和player玩家类,还有一个发牌类用于实现发牌的方法。
为了模拟每个玩家的牌都是随机的,我是这样想的:
1)初始化方法:用于将54张牌存到一个数组里,每张牌都一个唯一的序号。
2) 利用随机数,将每个序号打乱存到一个新数组里。
3)再根据序号取到初始化牌库数组内的牌,存到每个玩家的牌集合内。
附一个在老师指导下写的:斗地主发牌功能,自己还是有些没考虑周到。/_ \

代码如下:

牌类

public class Card { /**花色*/ private String HuaSe; /**点数*/ private String DianShu; /**序号*/ private int XuHao; public Card(String huaSe, String dianShu, int xuHao) { super(); HuaSe = huaSe; DianShu = dianShu; XuHao = xuHao; } public String getHuaSe() { return HuaSe; } public void setHuaSe(String huaSe) { HuaSe = huaSe; } public String getDianShu() { return DianShu; } public void setDianShu(String dianShu) { DianShu = dianShu; } public int getXuHao() { return XuHao; } public void setXuHao(int xuHao) { XuHao = xuHao; } @Override public String toString() { return "[" + HuaSe + DianShu + "]"; } }

玩家类

public class Player { /**玩家id*/ private int id; /**玩家姓名*/ private String name; /**是否是地主*/ private boolean dizhu; /**牌的集合*/ private ArrayList<Card> list; public Player(int id, String name, boolean dizhu) { super(); this.id = id; this.name = name; this.dizhu = dizhu; } 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 isDizhu() { return dizhu; } public void setDizhu(boolean dizhu) { this.dizhu = dizhu; } public ArrayList<Card> getList() { return list; } public void setList(ArrayList<Card> list) { this.list = list; } @Override public String toString() { return name + ", 牌:" + list ; } }

发牌类: 这里还有许多缺陷 :例如地主是需要自己指定而不是随机的,在给每个人发牌时,可以利用remove()方法将已经发过的牌移除,这样可以节省很多重复代码。

public class SendCard { static ArrayList<Card> arrayList = new ArrayList<Card>(); Random r = new Random(); /** * 初始话牌库 */ public void init() { for (int i = 1; i < 14; i++) { arrayList.add(new Card("梅花", Integer.toString(i), i)); arrayList.add(new Card("方块",Integer.toString(i),13 + i)); arrayList.add(new Card("红心", Integer.toString(i), 26 + i)); arrayList.add(new Card("黑桃", Integer.toString(i), 39 + i)); } arrayList.add(new Card("","大王",53)); arrayList.add(new Card("", "小王", 54)); } /** * 发牌(默认p3为地主) * @param p1 * @param p2 * @param p3 */ public void send(Player p1,Player p2,Player p3) { ArrayList<Integer> intList = new ArrayList<Integer>(); intList = fenpei(intList); //给p1发牌 ArrayList<Card> clist = new ArrayList<Card>(); for (int i = 0; i < 17; i++) { clist.add(arrayList.get(intList.get(i))); } p1.setList(clist); //给p2发牌 clist = new ArrayList<Card>(); for (int i = 17; i < 34; i++) { clist.add(arrayList.get(intList.get(i))); } p2.setList(clist); //给p3发牌 clist = new ArrayList<Card>(); for (int i = 34; i < 54; i++) { clist.add(arrayList.get(intList.get(i))); } p3.setList(clist); } /** * 将初始化牌库打乱后存入新数组 * @param list * @return */ public ArrayList<Integer> fenpei(ArrayList<Integer> list) { int index = 0; while (true) { int i = r.nextInt(54); for (Integer integer : list) { if (integer == i) { index = 1; break; } index = 0; } if(index == 0) list.add(i); if(list.size() == 54) break; } return list; } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

如何用Java编写程序实现斗地主发牌功能?