VC++写的斗地主(VC6.0编译通过)

Home / C++ MrLee 2015-12-31 3080

斗地主是流行于湖北武汉、汉阳一带的一种扑克游戏。游戏需由3个玩家进行,用一副54张牌(连鬼牌),其中一方为地主,其余两家为另一方,双方对战,先出完牌的一方获胜。 斗地主 斗地主 (5张) 斗地主起源于湖北武汉汉阳一带,是职业扑克专家严军和他的同伴们根据当地流行的扑克玩法“跑得快”改编的。当初有一群“跑得快”痴迷者,经常在人数不足的情况下玩三个人的“跑得快”,起初并不叫斗地主,他们圈内的人叫“二打一”。最初的“二打一”总共54张牌,每个玩家发18张牌,不留三张底牌,只是一个玩家从另外的两个玩家手里各随机抽取一张牌,被抽牌的玩家共同协作对付抽牌的玩家,这样慢慢演变成了“斗地主”。斗地主首先命名的牌型是飞机,然后是火箭,1995年,“二打一”正式命名为“斗地主”。如今已风靡整个中国,并流行于互联网上。斗地主、德克萨斯扑克及百家乐是世界上三种最流行的扑克游戏。

QQ截图20151231151837


代码都在一个类里面,太代。只放出局部
////////////////////////////////////////////////////////////////////////////////
// 显示桌面
////////////////////////////////////////////////////////////////////////////////
void CDddzDlg::ShowDesktop()
{
	//if(CheckIfOver())
			
	if(g_nShowStart == 0)//开始
	{
	AddToMemDC(IDB_BITMAP_bg,0,0,g_nScreenX,g_nScreenY);//背景
	//MessageBox( "背景!" , "" , MB_OK);
	}
	showfenshu();
	if(g_nShowStart == 1)//开始
	{
		AddToMemDC(IDB_BITMAP_start,650,HEIGHT-100,g_nScreenX,g_nScreenY);
	//	MessageBox( "开始!" , "" , MB_OK);
	}
	if(g_nShow3f == 1&&g_nTurnGetLord ==2)//3分
	{
		AddToMemDC(IDB_BITMAP_3f,340,400,g_nScreenX,g_nScreenY);
      
	}
    if(g_nShow3f == 0)//3分
	{
        for(int j=1;j<45;j++)
        AddToMemDC(IDB_BITMAP_time, 55+j*3, 10,g_nScreenX,g_nScreenY);
	
	}
	if(g_nShowNotGet == 1&&g_nTurnGetLord ==2)//不叫
	{
		AddToMemDC(IDB_BITMAP_bj,410,400,g_nScreenX,g_nScreenY);
	//	MessageBox( "ShowNotGet!" , "" , MB_OK);
	}
    if(g_nCanNotOut == 1)//2出的不对
	{
		AddToMemDC(IDB_BITMAP_no,280,360,g_nScreenX,g_nScreenY);
	}
	
    if(g_nShowNotOut == 1)//2不出
	{
		AddToMemDC(IDB_BITMAP_notout,380,400,g_nScreenX,g_nScreenY);
        AddToMemDC(IDB_BITMAP_ts,450,400,g_nScreenX,g_nScreenY);
	}	
	if(g_nPlayer1NotGet == 1)//1不叫
	{
		AddToMemDC(IDB_BITMAP_bj2,200,300,g_nScreenX,g_nScreenY);
	}
	if(g_nPlayer3NotGet == 1)//3不叫
	{
		AddToMemDC(IDB_BITMAP_bj2,550,300,g_nScreenX,g_nScreenY);
	}
	if(g_nPlayer1NotOut == 1)//1不出
	{
		AddToMemDC(IDB_BITMAP_bc,200,280,g_nScreenX,g_nScreenY);
	}
	if(g_nPlayer3NotOut == 1)//3不出
	{
		AddToMemDC(IDB_BITMAP_bc,550,280,g_nScreenX,g_nScreenY);
	}
	switch(g_nWhoIsLord)//地主
	{
	case 1:	{AddToMemDC(IDB_BITMAP_lord,20,280,g_nScreenX,g_nScreenY);}break;
	case 2: {AddToMemDC(IDB_BITMAP_lord,375,620,g_nScreenX,g_nScreenY);}break;//552
	case 3: {AddToMemDC(IDB_BITMAP_lord,740,280,g_nScreenX,g_nScreenY);}break;
		}
}
//显示player牌
void CDddzDlg::ShowPai()
{
	if(CheckIfOver())
	{
	 OutAll(&player1);
	 OutAll(&player3);
	}
			//显示player1
	CardX = 75 ; 
	g_nCardHeight = 96;
	CardY = (HEIGHT-ADD*(CardNum(player1 , 0)-1)-g_nCardHeight)/2 -60; 
	g_nCardX1 = 195 ; 
	g_nCardY1 = (HEIGHT-ADD*(CardNum(player1 , 2)-1)-g_nCardHeight)/2 - 100 ; //30
     
	for(int i = 0 ; i < 20 ; i++)
	{
		switch (player1.statics[i])
		{
			case 5:
				LoadCard(2 , &CardX , &CardY , 0, ADD) ;
				break ; 
			case 2:
				LoadCard(player1.card[i] , &g_nCardX1 , &g_nCardY1 , 0,ADD) ; 
				break ; 
		}
	}
	//显示player2
		CardX = (WIDTH-ADD*(CardNum(player2 , 0)-1)-g_nCardWidth)/2 -120; //10
       //CardX =100;
		CardY = 500 ; //460
		g_nCardX1 = (WIDTH-ADD*(CardNum(player2 , 2)-1)-g_nCardWidth)/2 -120; //
       
		g_nCardY1 = 250 ; //250
		for(i = 0 ; i < 20 ; i++)
		{
			switch (player2.statics[i])
			{
				case 5:
					LoadCard(player2.card[i] , &CardX , &CardY , ADD,0) ; 
					break ; 
				case 1://向上弹
					{
					CardY -= ADD ; 
					LoadCard(player2.card[i] , &CardX , &CardY , ADD,0) ; 
					CardY += ADD ; 
					}
					break ; 
				case 2:
					LoadCard(player2.card[i] , &g_nCardX1 , &g_nCardY1 , ADD,0) ; 
					break ; 
			}
		}
	//显示player3
		CardX = 645 ; 
		g_nCardHeight = 96;
		CardY = (HEIGHT-ADD*(CardNum(player3 , 0)-1)-g_nCardHeight)/2 -60;
		//CardY =100;
		g_nCardX1 = 530 ; 
		g_nCardY1 = (HEIGHT-ADD*(CardNum(player3 , 2)-1)-g_nCardHeight)/2 - 100; // 
       // g_nCardY1=120;
		for(i = 0 ; i < 20 ; i++)
		{
			switch (player3.statics[i])
			{
				case 5:
					LoadCard( 2 , &CardX , &CardY , 0,ADD) ; 
					break ; 
				case 2:
					LoadCard(player3.card[i] , &g_nCardX1 , &g_nCardY1 , 0,ADD) ; 
					break ; 
			}
		}
	//显示另三张
		CardX = 218 ; 
		CardY = 10 ; 
		int nTemp = 75;
		if(g_nShowStart != 1)
		{
			if(g_nWhoIsLord != 0)
			{					
				for(i = 0 ; i < 3 ; i++)
				{
					LoadCard( player4.card[i] , &CardX , &CardY , nTemp,0) ; 
				}
			}
			else
			{
				for(i = 0 ; i < 3 ; i++)
				{
					LoadCard( 2 , &CardX , &CardY , nTemp,0) ; 
				}
			}
		}
	
}
////////////////////////////////////////////////////////////////////////////////
// 计算出点在了哪张牌上
////////////////////////////////////////////////////////////////////////////////
void CDddzDlg::SelectCard(int x , int y)
{
	int xTemp = x-(WIDTH-204-ADD*(CardNum(player2 , 0)-1)-g_nCardWidth)/2 +20; 
	if(y<600 && y>480)//560.440
	{
		if((xTemp/ADD) < CardNum(player2 , 0))
		{
			if(player2.statics[xTemp/ADD-1] == 5)
			{
				player2.statics[xTemp/ADD-1] = 1 ; 
			}
			else
			{
				if(player2.statics[xTemp/ADD-1] == 1)
				{
					player2.statics[xTemp/ADD-1] = 5 ; 
				}
			}
		}
		else
		{
			if((xTemp/ADD) < CardNum(player2 , 0)+4)
			{
				if(player2.statics[CardNum(player2 , 0)-1] == 5)
				{
					player2.statics[CardNum(player2 , 0)-1] = 1 ; 
				}
				else
				{
					if(player2.statics[CardNum(player2 , 0)-1] == 1)
					{
						player2.statics[CardNum(player2 , 0)-1] = 5 ; 
					}
				}
			}
		}
	InvalidateRect(NULL,0);	
	}
		
}

项目地址:ddz

本文链接:https://www.it72.com/7436.htm

推荐阅读
最新回复 (0)
返回