欢乐斗地主打不开经典出牌怎么打 玩法介绍

斗地主玩法多种多样,你都玩过哪几个?|斗地主|玩法|欢乐_新浪网
斗地主玩法多种多样,你都玩过哪几个?
斗地主玩法多种多样,你都玩过哪几个?
大家好,我是千年雀牌。首先感谢关注我的朋友们,今天跟大家一起分享讨论下斗地主都有哪些玩法。做为一款全国普及化最高的棋牌游戏,斗地主可以说上到99,下到刚会跑。极大的丰富了我们的业余生活,那么斗地主一共有哪些玩法呢?玩法一:斗地主(经典斗地主)经典斗地主也是我们最常玩的斗地主此玩法,基本上全国上下通吃。斗地主全国赛等各种大型比赛基本上都是采用的这种玩法。玩法二:欢乐斗地主欢乐斗地主此玩法也是深受广大牌友的喜爱,特点是可明牌,可加倍,可抢地主,底牌中的特定牌型有加倍效果。名副其实的欢乐斗!玩法三:赖子斗地主赖子斗地主此玩法是起源于湖北的一种斗地主变形玩法,增加了“赖子”可以顶替除了王以外的任何牌,这种玩法炸弹较多,对于记牌的难度也相应增加,也是让王炸(火箭)最无奈的一种玩法。双王也有无奈时玩法四:闪电斗地主
特别声明:以上文章内容仅代表作者本人观点,不代表新浪看点观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与新浪看点联系。斗地主出牌规则
验证出牌是否符合规则时,牌必须是排好序的
首先Card类,//卡牌大小 int cardV//卡牌序号:0-53 boolean isC
public class Card {
//卡牌大小
int cardV//卡牌序号:0-53
boolean isC
//A 1 14 27 40
//2 2 15 28 41
public Card(int cardValue) {
this.cardValue = cardV
this.isChoose =
//A值为 13
//小2值为 49
//大小王值为52,53;
if (cardValue == 0 || cardValue == 13 || cardValue == 26 || cardValue == 39) {
this.value = 13;
} else if (cardValue == 1 || cardValue == 14 || cardValue == 27 || cardValue == 40) {
this.value = 49;
} else if (cardValue == 52 || cardValue == 53) {
this.value = cardV
this.value = cardValue % 13;
public int getValue() {
public void setValue(int value) {
this.value =
public int getCardValue() {
return cardV
public void setCardValue(int cardValue) {
this.cardValue = cardV
public boolean isChoose() {
return isC
public void setChoose(boolean isChoose) {
this.isChoose = isC
出牌规则类
import java.util.ArrayL
import java.util.C
import java.util.L
import java.util.R
import java.util.C
public class Rule {
int a[] = new int[54];
Random rand = new Random();
List&Card& localCard = new ArrayList&Card&();
List&Card& leftCard = new ArrayList&Card&();
List&Card& rightCard = new ArrayList&Card&();
List&Card& lastThreeCard = new ArrayList&Card&();
* @param 测试纸牌算法
* 纸牌已排序
public static void main(String[] args) {
Rule r = new Rule();
public void test() {
createCardList();
System.out.println("start sort lists");
sortListByCardValue(localCard);
sortListByCardValue(leftCard);
sortListByCardValue(rightCard);
sortListByCardValue(lastThreeCard);
sortList(localCard);
sortList(leftCard);
sortList(rightCard);
sortList(lastThreeCard);
printCardList(localCard);
printCardList(leftCard);
printCardList(rightCard);
printCardList(lastThreeCard);
public void createCardList() {
for (int i = 0; i& 54; i++) {
for (int i = 0; i& 54; i++) {
int r = rand.nextInt(54);
temp = a[i];
a[i] = a[r];
for (int i = 0; i& 17; i++) {
Card c = new Card(a[i]);
localCard.add(c);
for (int i = 0; i& 17; i++) {
Card c = new Card(a[i+17]);
leftCard.add(c);
for (int i = 0; i& 17; i++) {
Card c = new Card(a[i+34]);
rightCard.add(c);
for (int i = 0; i& 3; i++) {
Card c = new Card(a[i+51]);
lastThreeCard.add(c);
public void sortList(List&Card& list) {
Comparator&Card& c = new Comparator&Card&() {
public int compare(Card c1, Card c2) {
if(c1.value & c2.value) return 1;
else if(c1.value == c2.value) return 0;
else return -1;
Collections.sort(list, c);
public void sortListByCardValue(List&Card& list) {
Comparator&Card& c = new Comparator&Card&() {
public int compare(Card c1, Card c2) {
if(c1.cardValue & c2.cardValue) return 1;
else if(c1.cardValue == c2.cardValue) return 0;
else return -1;
Collections.sort(list, c);
public void printCardList(List&Card& list) {
System.out.printf("%2d: ",list.size());
for (Card c : list) {
int value = c.
if(value == 10) {
System.out.printf(" J ");
} else if(value == 11) {
System.out.printf(" Q ");
} else if(value == 12) {
System.out.printf(" K ");
} else if(value == 13) {
System.out.printf(" A ");
} else if(value == 49) {
System.out.printf(" 2 ");
} else if(value == 52) {
System.out.printf("小王");
} else if(value == 53) {
System.out.printf("大王");
System.out.printf("%2d ", c.value + 1);
System.out.println(" ");
public void print(List&Card& list) {
for (int i = 0; i& list.size(); i++) {
Card c = list.get(i);
System.out.print(c.value+" ");
System.out.println(" ");
for (int i = 0; i& list.size(); i++) {
Card c = list.get(i);
System.out.print(c.cardValue+" ");
System.out.println(" ");
//判断是否相同,num为个数
public Boolean isSame(List&Card& cardList) {
for(int i = 1; i & cardList.size() ; i++) {
p = cardList.get(i-1).
q = cardList.get(i).
if(q != p)
//判断是否连对,num为连对个数
public Boolean isLiandui(List&Card& cardList) {
//0 1 2 3 4 5 6 7 8 9
//1 3 5 7 9
for(int i = 1; i & cardList.size(); i = i + 2) {
p = cardList.get(i-1).
q = cardList.get(i).
if(q != p)
if (i == (cardList.size() - 1)) {
else if (q != (cardList.get(i+1).value - 1)) {
//是否为顺子
public Boolean isShunZi(List&Card& cardList) {
int num = cardList.size();
if(num & 5)
for(int i = 1; i & i++) {
p = cardList.get(i-1).
q = cardList.get(i).
if(p != q-1)
//是否为王炸
public Boolean isWangZha(List&Card& cardList) {
if(cardList.get(0).value == 52 && cardList.get(1).value == 53)
//是否为炸弹
public Boolean isBoom(List&Card& cardList) {
int num = cardList.size();
for(int i = 1; i & i++) {
p = cardList.get(i-1).
q = cardList.get(i).
if (p!=q) {
//判断是否为3带
public Boolean isSanDai(List&Card& cardList) {
int num = cardList.size();
for(int i = 1; i & num-1; i++) {
p = cardList.get(i-1).
q = cardList.get(i).
k = cardList.get(i+1).
if (p==q && q==k) {
* 先找出所有的三张,
* 三张个数大于等于2,
* 如果剩下的牌张数为0,打出,
* 如果剩下牌数等于三张个数 ,打出,
* 如果剩下牌数等于三张个数两倍,打出,
* 其他不符合规则
public Boolean isFeiji(List&Card& cardList) {
List&Card& threelist = new ArrayList&Card&();
List&Card& otherlist = new ArrayList&Card&(cardList);
Card c1, c2, c3;
int num = cardList.size();
for(int i = 0; i & num-2; i++) {
c1 = cardList.get(i);
c2 = cardList.get(i+1);
c3 = cardList.get(i+2);
if (c1.value == c2.value &&
c2.value == c3.value) {
threelist.add(c1);
threelist.add(c2);
threelist.add(c3);
otherlist.remove(c1);
otherlist.remove(c2);
otherlist.remove(c3);
i = i + 2;
int numOfThree = threelist.size() / 3;
int numOfOtherList = otherlist.size();
if (numOfThree & 2) {
if (numOfOtherList == 0 || numOfThree == numOfOtherList) {
if ((numOfOtherList / 2) == numOfThree) {
for(int i = 1; i & numOfOtherL i += 2) {
int p = otherlist.get(i-1).
int q = otherlist.get(i).
if(q != p)
cardList.removeAll(cardList);
for(Card c : threelist) {
cardList.add(c);
for(Card c : otherlist) {
cardList.add(c);
threelist.removeAll(threelist);
otherlist.removeAll(otherlist);
//单个O,对子O,三带O,连对O,顺子O,飞机,炸弹O,王炸O
AI类还在完善
import java.util.ArrayL
import java.util.C
import java.util.C
import java.util.L
import java.util.R
public class AI {
int a[] = new int[54];
Random rand = new Random();
List&Card& localCard = new ArrayList&Card&();
List&Card& leftCard = new ArrayList&Card&();
List&Card& rightCard = new ArrayList&Card&();
List&Card& lastThreeCard = new ArrayList&Card&();
* @param 测试纸牌算法
* 纸牌已排序
public static void main(String[] args) {
AI ai = new AI();
ai.test();
public void test() {
createCardList();
System.out.println("start sort lists");
sortListByCardValue(localCard);
sortListByCardValue(leftCard);
sortListByCardValue(rightCard);
sortListByCardValue(lastThreeCard);
sortList(localCard);
sortList(leftCard);
sortList(rightCard);
sortList(lastThreeCard);
printCardList(localCard);
printCardList(leftCard);
printCardList(rightCard);
printCardList(lastThreeCard);
Card card = new Card(13);
System.out.println(card.value+", "+ card.cardValue);
if (findSingle(localCard, card)) {
System.out.println("yes");
System.out.println("no");
for (Card c : localCard) {
if (c.isChoose) {
System.out.println(c.value+" "+ c.cardValue);
public void createCardList() {
for (int i = 0; i& 54; i++) {
for (int i = 0; i& 54; i++) {
int r = rand.nextInt(54);
temp = a[i];
a[i] = a[r];
for (int i = 0; i& 17; i++) {
Card c = new Card(a[i]);
localCard.add(c);
for (int i = 0; i& 17; i++) {
Card c = new Card(a[i+17]);
leftCard.add(c);
for (int i = 0; i& 17; i++) {
Card c = new Card(a[i+34]);
rightCard.add(c);
for (int i = 0; i& 3; i++) {
Card c = new Card(a[i+51]);
lastThreeCard.add(c);
public void sortList(List&Card& list) {
Comparator&Card& c = new Comparator&Card&() {
public int compare(Card c1, Card c2) {
if(c1.value & c2.value) return 1;
else if(c1.value == c2.value) return 0;
else return -1;
Collections.sort(list, c);
public void sortListByCardValue(List&Card& list) {
Comparator&Card& c = new Comparator&Card&() {
public int compare(Card c1, Card c2) {
if(c1.cardValue & c2.cardValue) return 1;
else if(c1.cardValue == c2.cardValue) return 0;
else return -1;
Collections.sort(list, c);
public void printCardList(List&Card& list) {
System.out.printf("%2d: ",list.size());
for (Card c : list) {
int value = c.
if(value == 10) {
System.out.printf(" J ");
} else if(value == 11) {
System.out.printf(" Q ");
} else if(value == 12) {
System.out.printf(" K ");
} else if(value == 13) {
System.out.printf(" A ");
} else if(value == 49) {
System.out.printf(" 2 ");
} else if(value == 52) {
System.out.printf("小王");
} else if(value == 53) {
System.out.printf("大王");
System.out.printf("%2d ", c.value + 1);
System.out.println(" ");
public void print(List&Card& list) {
for (int i = 0; i& list.size(); i++) {
Card c = list.get(i);
System.out.print(c.value+" ");
System.out.println(" ");
for (int i = 0; i& list.size(); i++) {
Card c = list.get(i);
System.out.print(c.cardValue+" ");
System.out.println(" ");
public void fenPai(List&Card& carList) {
//单个O,对子O,三带O,连对O,顺子O,飞机,炸弹O,王炸O
public boolean findSingle(List&Card& cardList, Card card) {
Card c1, c2;
int num = cardList.size();
for (int i = 0; i & i++) {
c1 = cardList.get(i);
boolean isSingle =
for (int j = i+1; j & i+4; j++) {
if (j &= num) {
c2 = cardList.get(j);
if (c1.cardValue == c2.value) {
isSingle =
isSingle =
if (card.value & c1.value && isSingle) {
if (card.value & 49 && c1.value & 49)
c1.isChoose =
public void findDuizi(List&Card& cardList) {
//找出三带,num为带的张数,0 1 2
public void findSanDai(List&Card& cardList, int num) {
public void findLianDui(List&Card& cardList) {
public void findShunZi(List&Card& cardList) {
public void findFeiJi(List&Card& cardList) {
public void findBoom(List&Card& cardList) {
public void findWangzha(List&Card& cardList) {
//判断是否相同,num为个数
public Boolean isSame(List&Card& cardList) {
for(int i = 1; i & cardList.size() ; i++) {
p = cardList.get(i-1).
q = cardList.get(i).
if(q != p)
//判断是否连对,num为连对个数
public Boolean isLiandui(List&Card& cardList) {
//0 1 2 3 4 5 6 7 8 9
//1 3 5 7 9
for(int i = 1; i & cardList.size(); i = i + 2) {
p = cardList.get(i-1).
q = cardList.get(i).
if(q != p)
if (i == (cardList.size() - 1)) {
else if (q != (cardList.get(i+1).value - 1)) {
//是否为顺子
public Boolean isShunZi(List&Card& cardList) {
int num = cardList.size();
if(num & 5)
for(int i = 1; i & i++) {
p = cardList.get(i-1).
q = cardList.get(i).
if(p != q-1)
//是否为王炸
public Boolean isWangZha(List&Card& cardList) {
if(cardList.get(0).value == 52 && cardList.get(1).value == 53)
//是否为炸弹
public Boolean isBoom(List&Card& cardList) {
int num = cardList.size();
for(int i = 1; i & i++) {
p = cardList.get(i-1).
q = cardList.get(i).
if (p!=q) {
//判断是否为3带
public Boolean isSanDai(List&Card& cardList) {
int num = cardList.size();
for(int i = 1; i & num-1; i++) {
p = cardList.get(i-1).
q = cardList.get(i).
k = cardList.get(i+1).
if (p==q && q==k) {
* 先找出所有的三张,
* 三张个数大于等于2,
* 如果剩下的牌张数为0,打出,
* 如果剩下牌数等于三张个数 ,打出,
* 如果剩下牌数等于三张个数两倍,打出,
* 其他不符合规则
public Boolean isFeiji(List&Card& cardList) {
List&Card& threelist = new ArrayList&Card&();
List&Card& otherlist = new ArrayList&Card&(cardList);
Card c1, c2, c3;
int num = cardList.size();
for(int i = 0; i & num-2; i++) {
c1 = cardList.get(i);
c2 = cardList.get(i+1);
c3 = cardList.get(i+2);
if (c1.value == c2.value &&
c2.value == c3.value) {
threelist.add(c1);
threelist.add(c2);
threelist.add(c3);
otherlist.remove(c1);
otherlist.remove(c2);
otherlist.remove(c3);
i = i + 2;
int numOfThree = threelist.size() / 3;
int numOfOtherList = otherlist.size();
if (numOfThree & 2) {
if (numOfOtherList == 0 || numOfThree == numOfOtherList) {
if ((numOfOtherList / 2) == numOfThree) {
for(int i = 1; i & numOfOtherL i += 2) {
int p = otherlist.get(i-1).
int q = otherlist.get(i).
if(q != p)
cardList.removeAll(cardList);
for(Card c : threelist) {
cardList.add(c);
for(Card c : otherlist) {
cardList.add(c);
threelist.removeAll(threelist);
otherlist.removeAll(otherlist);
没有更多推荐了,斗地主的游戏规则是什么?_百度知道
斗地主的游戏规则是什么?
三个人的扑克牌游戏,三人随机一名地主,两个农民,2对1的模式,谁牌先出完哪方获胜。斗地主起源于湖北十堰房县一带,现已流行于全国。斗地主玩法简单,娱乐性强,老少皆宜。据传在万恶的旧社会,地主横行乡里,无恶不做,人们为了发泄对地主的痛恨,常常在一天的劳作之后,一家人关起门来“斗地主”。该游戏由三人玩一副牌,地主为一方,其余两家为另一方,双方对战,先出完手中牌的一方胜。
采纳率:100%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。微信欢乐斗地主出牌方式详细介绍
互联网 & 发布时间: 08:57:28 & 作者:佚名 &
微信欢乐斗地主怎么出牌,和以前的qq欢乐斗地主出牌方式是一样的吗?下边小编来为玩家介绍微信版的qq欢乐斗地主的出牌方式
微信欢乐斗地主怎么出牌,和以前的qq欢乐斗地主出牌方式是一样的吗?下边小编来为玩家介绍微信版的qq欢乐斗地主的出牌方式!
微信欢乐斗地主怎么出牌
1、火箭:即双王、最大的牌。
2、炸弹:四张同数值牌(如四个9)。
3、单牌:单个牌。
4、对牌:数值相同的两张牌。
5、三张牌:数值相同的三张牌(如三个 J )。
6、三带一:数值相同的三张牌 + 一张单牌或一对牌。例如: 333+6 或 444+99。
7、单顺:五张或更多的连续单牌(如:56789 或 8910JQK )。不包括 2 点和双王。
8、双顺:三对或更多的连续对牌(如: 334455 、 JJ )。不包括 2 点和双王。
9、三顺:二个或更多的连续三张牌(如: 333444 、
)。不包括 2 点和双王。
10、飞机带翅膀:三顺+同数量的单牌(或同数量的对牌)。
11、四带二:四张牌+两手牌。(注意:四带二不是炸弹)。
大家感兴趣的内容
12345678910
最近更新的内容

我要回帖

更多关于 欢乐斗地主不洗牌玩法 的文章

 

随机推荐