可以三人一起打的麻将游戏有三人麻将,一般多为襄阳麻将玩法。
三人麻将,这种玩法通常不允许吃牌,只能碰或杠。

襄阳三人卡五星是襄阳地区最新兴起并流行的游戏,它采用一副麻将牌去掉万子和东南西北风,共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张是副牌(大王和小王)。


