什么麻将游戏可以三人一起打的

核心提示可以三人一起打的麻将游戏有三人麻将,一般多为襄阳麻将玩法。三人麻将,这种玩法通常不允许吃牌,只能碰或杠。襄阳三人卡五星是襄阳地区最新兴起并流行的游戏,它采用一副麻将牌去掉万子和东南西北风,共84张牌,由三个人来争谁先和牌。广水麻将也为三人麻

可以三人一起打的麻将游戏有三人麻将,一般多为襄阳麻将玩法。

三人麻将,这种玩法通常不允许吃牌,只能碰或杠。

襄阳三人卡五星是襄阳地区最新兴起并流行的游戏,它采用一副麻将牌去掉万子和东南西北风,共84张牌,由三个人来争谁先和牌。

广水麻将也为三人麻将,最早在随州地区兴起,后在广水发扬光大,广水周边县市及鄂西北地区也流行打广水麻将。去掉东南西北风及万字(去掉一色即可,也可拿掉条或者筒牌)。

三人打牌,牌型变化多,和牌速度快是它的特点。

扩展资料:

三人麻将有以下几种玩法规则:

1、使用所有牌

保留所有的麻将牌,摸到最后一张为止,这是比较常见的规则,特点是胡牌容易,但打牌时间和四人麻将相差不多。

2、留底牌

摸牌开始后从牌尾开始计算,保留一定数量的底牌,底牌不可翻开,通常为20到30张,也可能会更多。而部分采用留底牌的规则则会直接增加底牌的数量。

3、去除字牌

没有字一色、混一色、三元四喜等牌型,绿一色难度也提升了很多,和去除二万到八万一样也有剩余张数无法被6整除的问题。

-麻将

三张牌的游戏,C/C++实现

三个人玩扑克牌的时候,最经典的就是斗地主了,具体的玩法和规则如下:

1、首先是叫地主,发牌后留底三张,第一局是拿到红桃3的玩家最先叫地主,后面地主赢了就继续叫地主,输了就轮到下家当地主,或者地主自己放弃也轮到下家当地主。

2、抢到地主后剩下的三张牌就是地主的,其他两个就是农民,地主先出牌,农民后出牌,只要有一个农民出完牌就是农民赢了,地主则要赢了两个农民才算赢。

3、出牌的时候就是大压小,单牌大王最大,然后是小王、2、A、K等,3最小;双牌即对子,两个2最大,两个3最小;三张同样的牌可以带一张单牌或者一对牌。

4、连牌的时候最少五张,只能连到A,2不能连。

5、四张同样的牌就是炸弹,可以压前面的所有牌,两个王一起也是炸弹,是最大的,可以压住四个2。

6、相邻的两个三牌可以连在一起出,叫做飞机,例如333444,压的时候必须用同样类型的牌压住,或者用炸弹。

三人的扑克牌游戏怎么玩

#include <iostream>

#include <asserth>

#include <stdlibh>

#include <timeh>

using namespace std;

typedef enum {heart,diamond,club,spade} Suit;

typedef enum {two,three,four,five,six,seven,eight,nine,ten,jack,queen,king,ace} Facevalue;

typedef enum {uninitialized = -1,zitch=0, onePair, threeOfAKind, straight, straightFlush } PokerHandsRanking;

static char suitName[4]={"03","04","05","06"}; //suit names {heart, diamond, club, spade}

static char cardName[13]={"2","3","4","5","6","7","8",

"9","10","J","Q","K","A"}; //holds strings with card names

static char playerName[4]={"A","B","C","D"}; // 玩家名

static char rankingName[5]={"杂牌","一对","三条","顺","同花顺"};

class Card

{

friend ostream& operator <<(ostream&,Card);

public:

Card(){cardSuit=Suit(0);cardFacevalue=Facevalue(0);} // default constructor

Card(const Card& a){cardSuit=acardSuit;

cardFacevalue=acardFacevalue;} // copy constructor

~Card(){}

void setValue(int a,int b){cardSuit=Suit(a);

cardFacevalue=Facevalue(b);}

//set suit and face value of the card

Card& operator = (const Card& a){cardSuit=acardSuit;

cardFacevalue=acardFacevalue;

return this; };// assignment operator

bool operator<(const Card& a) const{

if( cardFacevalue < acardFacevalue )

return true;

else if( cardFacevalue == acardFacevalue )

return cardSuit < acardSuit;

else

return false;

};// compare operator

bool CompareSuit(const Card& a) const{

return cardSuit == acardSuit;

}

bool CompareFacevalue(const Card& a) const{

return cardFacevalue == acardFacevalue;

}

bool FollowedBy(const Card& a) const{

return acardFacevalue - cardFacevalue == 1;

}

inline int Point() const {

if(cardFacevalue==ace)

return 1;

else

return cardFacevalue + 2; // starts with 2

}

void Swap(Card& a){

Facevalue fv = cardFacevalue;

Suit s = cardSuit;

cardFacevalue = acardFacevalue;

cardSuit = acardSuit;

acardFacevalue=fv;

acardSuit=s;

};

private:

Suit cardSuit;// cards suit

Facevalue cardFacevalue; // cards face value

};

class Deck

{

friend ostream& operator <<(ostream&, Deck);

public:

Deck();

~Deck(){}

void shuffle(); // create the list of cards in random order

Card& deal(){assert(topCard<52);

return cards[topCard++];}// deals the card at topCard and increments topCard

private:

Card cards [52];

int topCard;// top of the deck

};

template <class Type, int sz> //General array template

class Array {

public:

Array(){size=sz; ia=new Type[size];}

~Array() {delete [] ia;}

Type& operator[](int index){ assert(index<size);

return ia[index]; }

protected:

int size; //number of elements in array

Type ia; //pointer to first array element

};

template <int hsz, int pla>

class Game

{

public:

Game(){ players=pla;

handSize=hsz;}; // number of players and number of cards in hand

Game(const Game<hsz,pla>&){ players=pla;

handSize=hsz;};

void deal();

void print(ostream&);

PokerHandsRanking getRanking(int player);

int getPoints(int player);

private:

Deck theDeck; //Deck of cards

int players; //# of players

int handSize; //Size of each hand

Array<Array<Card,hsz>,pla> hands; //Arrays are nested

};

ostream& operator << (ostream& os, Card c ) //card output

{

int cs = int(ccardSuit);

int fv = int(ccardFacevalue);

assert( cs>=0 && cs<4 && fv>=0 && fv<13 );

os<<suitName[cs]<<' '<<cardName[fv];

return os;

};

Deck::Deck() //construct the deck

{

int k = 0;

for (int i = 0; i < 4; ++i)

for (int j = 0; j < 13;++j)

{cards[k++]setValue(i,j);

assert(i<4 && j<13);}

topCard = 0;

}

void Deck::shuffle()

{ //shuffle cards randomly

// randomize();

for(int i = 0; i < 52;++i)

{

int k = rand() %52;

assert(k<52);

if (k!=i)

{Card t = cards[i];cards[i] = cards[k]; cards[k] = t;}

}

}

template <int hsz, int pla> //Deal cards

void Game<hsz,pla>::deal() {

theDeckshuffle();

for(int i=1;i<=players;++i) //loop thru players

{

for(int j=1;j<=handSize;++j) //loop thru hands

{

hands[i-1][j-1]=theDeckdeal();

}

// sort the player's cards

for(int n=0;n<handSize-1;n++)

for(int m=n+1;m < handSize;m++)

{

Card& ca = hands[i-1][n];

Card& cb = hands[i-1][m];

if( ca<cb)

{

caSwap(cb);

}

}

} //deal a card

}

template <int hsz, int pla>

void Game<hsz,pla>::print(ostream& os) {

PokerHandsRanking winrank = uninitialized;

int winpoints(0);

int winner(-1);

bool draw(false);

for(int i=0;i<players;++i) {

cout<<"n玩家 "<<playerName[i]<<endl;

for(int j=0;j<handSize;++j)

cout<<hands[i][j]<<"n";

PokerHandsRanking ranking = getRanking(i);

cout << rankingName[ranking] << endl;

int points = getPoints(i);

cout << "点数: " << points << endl;

if( winrank < ranking )

{

winrank = ranking;

winpoints = points;

winner = i;

}

else if( winrank == ranking )

{

if(winpoints < points)

{

winpoints = points;

winner = i;

}

}

}

if( winner >=0)

cout << "赢家是:"<<playerName[winner]<<endl;

else

cout << "和局"<<endl;

}

template <int hsz, int pla>

int Game<hsz,pla>::getPoints(int player) {

int points(0);

for(int j=0;j<handSize;++j)

{

Card& card =hands[player][j];

points+= cardPoint();

}

return points;

}

template <int hsz, int pla>

PokerHandsRanking Game<hsz,pla>::getRanking(int player) {

bool sameSuit(true);

bool isStraight(true);

bool pair(false);

bool triple(false);

for(int j=0;j<handSize;++j)

{

Card& cur =hands[player][j];

if(j) {

Card& prv =hands[player][j-1];

sameSuit &= curCompareSuit( prv );

isStraight &= curFollowedBy( prv );

pair |= curCompareFacevalue( prv);

triple &= curCompareFacevalue( prv);

}

}

PokerHandsRanking ranking = zitch;

// Rank 1: Straight flush

if( sameSuit && isStraight )

{

ranking = straightFlush;

} else if(isStraight){

ranking = straight;

} else if(triple) {

ranking = threeOfAKind;

} else if(pair){

ranking = onePair;

} else {

ranking = zitch;

}

return ranking;

}

//main program for your tests

void main()

{

srand ( (unsigned int)time(NULL) );

char opt;

do{

Game<3,2> g; //declare game

gdeal(); //deal cards from deck

gprint(cout); //display results

cout<<"按任意键发牌;按0退出"<<endl;

//cin >> opt;

opt = getchar();

system("cls");

} while(opt!='0');

}

三张牌比大小的那种拖拉机怎么玩?还有什么叫拖拉机牌?大小顺序是比如炸弹最大接下来是……?感谢高手能

三人打扑克牌!每人放8张牌,小王是14!大王是15!打到最后谁手上的牌对应的球全落袋了,那人就赢!如果你和别人都剩下一张牌,而牌又一样,那谁先打落袋就谁赢。

把扑克牌分成3份,每份5张。然后每人抽取一份。扑克牌分别代表球的号数,1到10就不说了,牌面是J,Q,K的代表11,12,13号球,小鬼代表14,大鬼代表15然后你就按你抽到的牌面的号数打球,因为3人可能有相同的号码的牌面。

所以不能让对方知道你手里牌面。如果抽到大小鬼的话,建议先打大小鬼,这两张牌面是唯一的。打进一个你手里牌面号数的球就翻开那张牌。

如果打进的是你手里没有的牌面号数的球,则需要在剩余的扑克牌里面抽取一张(如果进了2球或者更多的球,而进球中有的号数你手上有,则不需要抽取)可以打传球。最后谁先亮完手上的牌谁就赢。

三个人可以玩的扑克游戏

扑克牌拖拉机,又称双升。不同地区的玩法不太一样。4个玩家,108张(两副牌),采取以每盘获取分数的多少来决定升级级数的游戏方式。

主牌和副牌

1.主牌:每局游戏中,常主、当局级牌、主花色牌都称为主牌。

常主:大王、小王

级牌:游戏从打2开始不断升级,每局当前庄家的级别大小即为当局级牌。例如:庄家开始时的级别为2,则2为本局的级牌,所有级牌都是主牌。如果庄家的级别上升到了K,此时K就成为级牌

主级牌:每局游戏在出牌前,首先会先确定一种花色的级牌为主级牌

主花色:每局游戏中,与当前主级牌花色相同的所有牌都为主花色牌

2.副牌:每局游戏中除主牌外其他所有花色的牌都称为副牌

各牌型之间大小顺序:常主>主级牌>其他级牌>主花色牌>副牌

每种花色中大小顺序:A>K>Q>……>3>2 (当局级牌除外)

除主花色外,其他花色级牌、副牌之间无大小区别。

每轮中相同花色,相同大小的牌以先出为大。

出牌方式

1.单张:任何一张牌均可做为单张出牌。

2.对子:相同花色和大小的两张牌可组成对子。

3.连对(拖拉机):花色相同,大小顺序相邻的对子可组成连对。连对至少由两对组成,最多可由对2一直连到对A。例如:梅花对7、梅花对8、梅花对9可组成梅花三连对。

与当局级牌大小相邻的对子也可组成连对。例如:当轮级牌为6,则梅花对5与梅花对7也可组成连对。

此外,对大王和对小王;对主级牌和对其他级牌;对其他级牌和对主花色A之间也可组成连对。

4.甩牌:甩牌是指游戏过程中,若一个玩家手上同种花色的副牌均为当前最大时,即可一起打出。例如:玩家手上牌为梅花10、梅花J、梅花Q各一张,此时外面已打出梅花对A、梅花对K、梅花Q、梅花J、梅花10各一张,该玩家即可将梅花10、梅花J、梅花Q一起打出。

另外,若玩家手中同种花色的副牌中同时有当前最大单张和最大对子(包括连对)时,也可一起打出。例如:玩家手中牌为梅花K一张、梅花对J,此时外面已打出梅花对A、梅花对Q,该玩家即可将梅花K与梅花对J同时打出。

主牌也可进行甩牌,但比较该牌是否为当前最大时,常主和级牌也在比较范围内。

各牌型之间大小顺序:单张、对子、连对三种牌型之间不能比较大小

同种牌型之间大小顺序:常主>主级牌>其他级牌>主花色牌>副牌

每种花色中大小顺序:A>K>Q>……>3>2 (当局级牌除外)

除主花色外,其他花色副牌之间无大小区别。

同等大小的牌以先出为大。

游戏规则

游戏由四人进行,利用两副牌共108张进行游戏。

游戏时,位置相对的玩家为同组(对家),第一局时报主的那方为当前庄家,另一方为捡分方。

第一局游戏结束时,按照当轮游戏结果确定下一局的庄家继续进行游戏。以次类推。

起牌

四个玩家按照逆时针方向依次摸牌,每人每次摸一张,直到最后剩下8张牌为止。

此时每人手上有25张牌,最后剩下的8张做为底牌交由庄家手中进行盖底牌。

报主

1. 抢报:游戏开始的第一局,由四个玩家之间进行抢报确定当局庄家。

第一局四个玩家在起牌过程中,谁先起到任意花色的当前级牌(默认时为2)附带一个张王(大王只能报红色主牌(红杏和方片)小王只能报黑色主牌(黑桃和梅花))并亮出,即成为该局的庄家,和自己的对家成为当前的主打方。另一方则成为捡分方。

此花色即成为该局的主花色。(抢报规则仅限于第一局游戏时)

2. 正常报主:第一局过后,在此后每局游戏的起牌过程中,只有庄家玩家均可随时亮出任意花色的该局级牌+相应的一张王牌,此时该花色即成为该局的主花色。只有当庄家双方都叫不起主牌时(没有配套的王与级牌),则对家玩家可以叫主牌,此时换庄家。

3. 无人报主:第一局过后,当每局游戏起牌过程结束时,若还没有人报主,此时则从底牌中抽取任意一张牌的花色作为该局的主花色。若第三张为常主则该局游戏为无主。玩家中有人能与此张牌配对的一方为庄家。

4. 常主不可进行报主。当对家玩家中有人手里的牌少于15分,则可“暴动”,即重新洗牌摸牌。此时庄家不变。

盖底牌

当起牌过程和报主结束后,该局的庄家拿起剩下的8张底牌和自己手上的25张牌组合在一起进行整理,然后再选取8张进行盖底牌。盖底牌过程中,底牌只有当前盖底牌的玩家可见。底牌在游戏出牌过程中不可更换,待一局游戏结束后才可亮出给所有玩家查看。

反主

反主是指每局报主结束后,开始出牌之前,除当时报主的玩家外,其他玩家若手上有相同花色的对级牌加相应颜色的一张王或对王,可亮出进行反主。此时主级牌变为该玩家亮出的花色级牌,主花色也随之改变。若反主时亮出的为对常主,则该局游戏中没有主花色,只有常主和当局级牌为主牌。这种情况叫做无主(此时各花色级牌大小一致)。报主玩家也可参与反主,但必须在有其他玩家先进行反主的前提下。如果报主后没有其他玩家进行反主,则报主玩家也无权反主。

1. 反主反打:游戏第一局时,反主需要在报主玩家(当前庄家)拿底牌之前进行。此时反主后,反主玩家变成当前庄家,自己一方则变成主打方。第一局当庄家盖底牌后,不可再进行反主。(反主反打规则仅限于第一局游戏时)

2. 反主炒底:除游戏第一局外,反主可在庄家盖底牌后,开始出牌之前按庄家逆时针方向依次进行。此时反主,除主级牌和主花色发生变化外,反主玩家还可拿起庄家盖的底牌和自己手上的牌进行配合整理,然后再进行盖底牌。反主玩家盖的底牌其他玩家都无权进行查看。此时庄家不变。

3. 每一局均可多次进行反主。但反主顺序须按照大王>小王>对级牌的次序进行。进行多次反主时,每次反主的玩家均有拿底牌和盖底牌的资格。

4. 定主:当玩家进行报主时,可将这对级牌同相应王一起亮出。此时,若其他玩家再进行反主,则必须无主才可。

出牌

反主和盖底牌结束后,由庄家开始,按照逆时针方向依次出牌。每轮出牌完毕后,按照每个玩家牌的大小,决定第二轮由谁先出牌。

1. 单张:每轮先出牌玩家打出一种花色的副牌单张时,其他玩家必须也跟出该花色的单牌,在没有该花色副牌时可出其他花色副牌代替或用主牌单张杀。

2. 对子:每轮先出牌玩家打出一种花色的副牌对子时,其他玩家必须也跟出该花色的对子,在没有该花色对子时必须跟出该花色单张,没有该花色牌时可选择出其他花色副牌代替或用主牌对子杀,但若是两张主牌单张是无法杀掉对子的。

3. 连对:每轮先出牌玩家打出一种花色的副牌连对时,其他玩家必须也跟出该花色的连对,在没有连对的情况下必须跟该花色的对子,没有对子的情况下跟该花色单张,依次类推(出牌数量总和需和连对牌数一致)。若用主牌杀连对时,主牌也必须是相同对数的连对才可。

4. 甩牌:每轮先出牌玩家打出一种花色的副牌甩牌时,其他玩家必须也跟出该花色的牌,没有该花色副牌时可出其他花色副牌代替或用主牌杀(出牌数量总和需和甩牌数量一致)。若玩家甩牌中包含对子或连对,用主牌杀时也必须包含相应数量的牌型才可。 若玩家甩牌失败,则强制性出导致甩牌失败牌型中的最小牌,并扣除当前房间底金的1/2。

5. 吊主:每轮先出牌玩家出主牌时,其他玩家也必须跟主牌,在没有主牌的情况下可出任何一种花色的副牌。

得分

在游戏过程中,每种花色(包括主花色和级牌)的5、10、K都称为分牌,其中5对应为5分,10和K对应为10分。

每轮出牌结束后,若该轮中有分牌出现,则根据该轮每家牌的大小来确定分牌的归属。其中,捡分方所得的分牌集中在一起进行累计,最后捡分方所得全部分牌的总和即为该局的总得分。

总得分:总分=面上分(捡分方在出牌过程中的得分)+扣底得分(捡分方扣底所得的分数)

扣底

出牌进行到最后时,若对家的牌大,则有权得到底牌中的所有分数。根据最后一轮中牌型的不同,所得的分数倍数也有所不同。

单张扣底:底牌分数×2

对子扣底:底牌分数×4

连对扣底:底牌分数×4×连对对数

甩牌扣底:按照甩牌中最大的牌型计算

若甩牌时有两对或者两个连对时,仅按照一对或者连对数最多的连对计算,不进行累加。

升级

每局游戏结束后,根据捡分方总得分的多少来判定由哪方升级。

具体升级情况如下:

0分(大光) 主打方升3级

5—35分(小光) 主打方升2级

40—75分 主打方升1级

80—115分 换庄(主打方下台,捡分方上台)

大于120分 捡分方升1级

大于160分 捡分方升2级

大于200分 捡分方升3级

大于240分 捡分方升4级

大于280分 捡分方升5级

大于320分(封顶) 捡分方升6级(封顶)

当一方升级超过A后,则再次循环到2开始继续升级。

轮庄:每局游戏结束后,若主打方升级,由该局庄家的对家成为下局庄家。

若捡分方上台或者升级,则由该局庄家的下家成为下局庄家。

三个人可以玩的扑克游戏:斗地主、十三张、德克萨斯、锄大地、跑得快。

扑克(英文:Poker),代指两种含义:一是指纸牌(playingcards);二是泛指以用纸牌这种游戏道具来玩的游戏,称为扑克游戏,如德州扑克。一副扑克牌有54张牌,其中52张是正牌,另2张是副牌(大王和小王)。

 
友情链接
鄂ICP备19019357号-22