斗地主的发牌方式怎样发牌和叫主?


斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实现一下斗地主中的发牌功能,为了程序的可读性以及可拓展性,此次我们使用面向对象的方法来实现此功能。
首先,斗地主要求有扑克和玩家才能开始游戏,所以这里我们首先要创建一个扑克牌实体类和一个玩家实体类,具体代码如下:
首先是Poker类,含点数,花色和排序属性,大小王之后额外添加,这里我们必须实现一个Comparable接口,方便之后进行排序:
public class Poker implements Comparable{
private String flower;
private String pointer;
private int sort;
public Poker() {
}
public Poker(String flower, String pointer, int sort) {
super();
this.flower = flower;
this.pointer = pointer;
this.sort = sort;
}
public String getFlower() {
return flower;
}
public void setFlower(String flower) {
this.flower = flower;
}
public String getPointer() {
return pointer;
}
public void setPointer(String pointer) {
this.pointer = pointer;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
@Override
public String toString() {
return flower +"-" + pointer;
}
@Override
public int compareTo(Poker a) {
return this.getSort() - a.getSort();
}
}
然后就是Player类,这里我们定义属性有id,玩家名字以及玩家手牌和是否地主:
import java.util.ArrayList;
public class Player {
private int id;
private String name;
private ArrayListpokers = new ArrayList<>();
private boolean boss;
public Player() {
}
public Player(int id, String name) {
super();
this.id = id;
this.name = name;
}
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 ArrayListgetPokers() {
return pokers;
}
public void setPokers(ArrayListpokers) {
this.pokers = pokers;
}
public boolean isBoss() {
return boss;
}
public void setBoss(boolean boss) {
this.boss = boss;
}
}
实体类建完之后,我们就要开始实现功能了,首先我们将要实现的功能简单叙述一下,首先我们要求有一副54张的完整牌,然后洗牌(此处我们用Collections里的静态shuffle方法实现),然后开始按洗好的牌发牌51张,发完随机地主,将剩余的三张牌给地主,并将三名玩家的牌均按大小显示出来。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class PokerGame {
/**定义为静态以简化代码量*/
static Listplayers;
static ArrayListlist = new ArrayList<>();
static String[] flowers = {"梅花","黑桃","方块","红桃"};
static String[] pointers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int bossIndex;
static{
for(int i = 0;i < flowers.length;i++){
for(int j = 0;j < pointers.length;j++){
Poker p = new Poker(flowers[i],pointers[j],j);
list.add(p);
}
}
list.add(new Poker("小","王",13));
list.add(new Poker("大","王",14));
players = Arrays.asList(
new Player(1,"胡灿"),
new Player(2,"戴豪杰"),
new Player(3,"马涛")
);
}
/**随机地主*/
public void pushBoss(){
/**随机一个索引,随到的为地主*/
Random r = new Random();
bossIndex = r.nextInt(players.size());
players.get(bossIndex).setBoss(true);
}
/**洗牌功能*/
public void XiPai(){
/**用Collections中的一个静态方法实现随机顺序集合*/
Collections.shuffle(list);
}
/**发牌功能*/
public void FaPai(){
/**每次按顺序给每人发一张牌直到51张牌发完*/
for(int i = 0;i < 51;i+=3){
players.get(0).getPokers().add(list.get(i));
players.get(1).getPokers().add(list.get(i+1));
players.get(2).getPokers().add(list.get(i+2));
}
/**将剩余的三张牌发给地主*/
for(int j = 51;j < 54;j++){
players.get(bossIndex).getPokers().add(list.get(j));
}
}
/**排序功能*/
public void PaiXu(){
/**用Collections的sort方法实现排序功能*/
Collections.sort(players.get(0).getPokers());
Collections.sort(players.get(1).getPokers());
Collections.sort(players.get(2).getPokers());
}
/**开始游戏*/
public void start(){
pushBoss();
XiPai();
FaPai();
PaiXu();
for(Player p:players){
System.out.println(p.getPokers());
}
}
}
下面我们来看看具体实现:
public class Test {
public static void main(String[] args) {
new PokerGame().start();
}
}
结果如下:

1个回答
关注 展开全部咨询记录 · 回答于2023-02-05玩钱的斗地主群怎样玩你好,很高兴为你服务,为你作出如下解答:斗地主是一种经典的棋牌游戏,可以在玩钱的斗地主群中玩。玩法:1.发牌:每人发17张牌,底牌留3张,其余每人发17张牌,每人抓牌时,从底牌中抓一张牌,抓完后,底牌就不再变动。2.叫地主:每人可以叫地主,叫地主的人可以拿到底牌,并且先出牌。3.出牌:每人按照顺序出牌,出牌时,可以出单张、对子、三张、炸弹、顺子、连对、飞机等牌型,出牌时,必须比上家大,否则不能出牌。4.胜负:当一方出完牌后,另一方获胜,游戏结束。出现问题的原因:1.玩家缺乏经验:斗地主是一种技术性游戏,玩家缺乏经验,可能会出现出牌不当的情况,从而影响游戏的进行。2.玩家缺乏耐心:斗地主是一种耐心游戏,玩家缺乏耐心,可能会出现出牌过快的情况,从而影响游戏的进行。解决方法:1.多练习:多练习,多熟悉游戏规则,多熟悉牌型,多熟悉出牌技巧,从而提高玩家的技术水平。2.增加耐心:斗地主是一种耐心游戏,玩家要增加耐心,不要急于出牌,要仔细分析牌型,从而更好地把握游戏的节奏。个人心得小贴士:1.学会分析:斗地主是一种技术性游戏,玩家要学会分析,要仔细分析牌型,能不能再展开讲讲?你好,很高兴为你服务,为你作出如下解答:斗地主是一种经典的棋牌游戏,可以在玩钱的斗地主群中玩。玩法:1.发牌:每人发17张牌,底牌留3张,其余每人发17张牌,每人抓牌时,从底牌中抓一张牌,抓完后,底牌就不再变动。2.叫地主:每人可以叫地主,叫地主的人可以拿到底牌,并且先出牌。3.出牌:每人按照顺序出牌,出牌时,可以出单张、对子、三张、炸弹、顺子、连对、飞机等牌型,出牌时,必须比上家大,否则不能出牌。4.胜负:当一方出完牌后,另一方获胜,游戏结束。出现问题的原因:1.玩家缺乏经验:斗地主是一种技术性游戏,玩家缺乏经验,可能会出现出牌不当的情况,从而影响游戏的进行。2.玩家缺乏耐心:斗地主是一种耐心游戏,玩家缺乏耐心,可能会出现出牌过快的情况,从而影响游戏的进行。解决方法:1.多练习:多练习,多熟悉游戏规则,多熟悉牌型,多熟悉出牌技巧,从而提高玩家的技术水平。2.增加耐心:斗地主是一种耐心游戏,玩家要增加耐心,不要急于出牌,要仔细分析牌型,从而更好地把握游戏的节奏。个人心得小贴士:1.学会分析:斗地主是一种技术性游戏,玩家要学会分析,要仔细分析牌型,已赞过你对这个回答的评价是?评论
收起
下载百度知道APP,抢鲜体验使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。扫描二维码下载
2019-07-27 18:45 来源: 把风筝握手里
原标题:欢乐斗地主叫地主规则 什么时候叫地主合适
欢乐斗地主中叫地主,是否叫地主是一个大问题,这个时候判断叫不叫地主是很重要的。下面小编就给大家分析一下欢乐斗地主叫地主规则,一起来看看吧。
推荐点击:欢乐斗地主癞子玩法介绍 癞子玩法规则详解
叫地主规则:
是否叫地主受至少两大因素的限制,一是牌面得分,二是牌型好坏。牌型的好坏是指牌面顺不顺。例如,有很多顺子,飞机等。那么何谓牌面得分呢?在这里引入一个简单的牌面得分计算法,即大王计4分,小王计3分,二计2分,A计1分,K计0.5分或不计分。
个人推荐一般若牌面得分大于等于7分,就可以考虑叫地主,再根据自己的牌型好坏做最后判断。需要指出,若手上没有大小王则要小心考虑。因为大小王很容易成王炸,毕竟有混蛋爱搞偷袭(惨痛教训)。若想玩出些花样,玩出艺术,则可以虚虚假假。正常情况下,别人不叫地主或者迟缓很长时间才选择,说明牌面实力有问题。若两人都不叫地主,则很有可能他们牌不好。
这时若你的牌也不好,则应该好好考虑了,是他们故意不叫还是大家的牌都实力平均,还有可能是底牌中有大牌。这就要看你的能力,心理素质和经验了。境界太高,本人水平有限,难以望大神的项背,更不会参透天机,只能“空悲切”了。返回搜狐,查看更多
责任编辑:

我要回帖

更多关于 斗地主的发牌方式 的文章

 

随机推荐