⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 扑克牌游戏.cpp

📁 扑克牌游戏,我自己开发的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		m_cardarray[index].showcard();				// 输出每一张牌
		newline++;								    // 行数加一
		index++;
	}
}
void Deck::SendDeck1()                        // 把牌分发给四个玩家(删牌后的)
{
	Playing_Card wan[3][13];                 //定义一个二维数组表示四个玩家
	int p,t;
	int w1=0,w2=0,w3=0,w4=0;
	cout<<"玩家1的牌:"<<endl;
	for(p=0,t=0;t<52;p++,t+=4)               // 为各玩家发牌并输出            
	{
		
		wan[0][p]=m_cardarray[t];            //玩家1的牌
		wan[0][p].showcard();                //输出玩家1的牌
		w1+=m_cardarray[t].getvalue();
	}
	cout<<endl;
	cout<<"玩家2的牌:"<<endl;                
    for(p=0,t=1;t<52;p++,t+=4)
	{
		
	    wan[0][p]=m_cardarray[t];            //玩家2的牌
		wan[0][p].showcard();                //输出玩家2的牌
        w2+=m_cardarray[t].getvalue();
	}
	cout<<endl;
	cout<<"玩家3的牌:"<<endl;                
	for(p=0,t=2;t<52;p++,t+=4)
	{
		
		wan[0][p]=m_cardarray[t];            //玩家3的牌
		wan[0][p].showcard();                //输出玩家3的牌
		w3+=m_cardarray[t].getvalue();
	}
	cout<<endl;
	cout<<"玩家4的牌:"<<endl;
	for(p=0,t=3;t<52;p++,t+=4)
	{
		
		wan[0][p]=m_cardarray[t];            //玩家4的牌
		wan[0][p].showcard();                //输出玩家4的牌
		w4+=m_cardarray[t].getvalue();
	}
	char r;
    cout<<endl<<"要输出各玩家的总点数吗?要按Y不要按N。"; 
		cin>>r;
		r=toupper(r);
		if(r=='Y')                    //输出四个玩家的总点数
		{
			cout<<"玩家1的总点数:"<<w1<<endl;
		  	cout<<"玩家2的总点数:"<<w2<<endl;
	        cout<<"玩家3的总点数:"<<w3<<endl;
	        cout<<"玩家4的总点数:"<<w4<<endl;
		}
		else cout<<endl;

}
void Deck::SendDeck2()                        // 把牌分发给四个玩家(不删牌的)
{
	Playing_Card wan[3][13];                 //定义一个二维数组表示四个玩家
	int p,t;
	int w1=0,w2=0,w3=0,w4=0;
	cout<<"玩家1的牌:"<<endl;
	for(p=0,t=0;t<54;p++,t+=4)              // 为各玩家发牌并输出              
	{
		
		wan[0][p]=m_cardarray[t];            //玩家1的牌
		wan[0][p].showcard();                //输出玩家1的牌
		w1+=m_cardarray[t].getvalue();
	}
	cout<<endl;
	cout<<"玩家2的牌:"<<endl;                
    for(p=0,t=1;t<54;p++,t+=4)
	{
		
	    wan[0][p]=m_cardarray[t];            //玩家2的牌
		wan[0][p].showcard();                //输出玩家2的牌
        w2+=m_cardarray[t].getvalue();
	}
	cout<<endl;
	cout<<"玩家3的牌:"<<endl;                
	for(p=0,t=2;t<54;p++,t+=4)
	{
		
		wan[0][p]=m_cardarray[t];            //玩家3的牌
		wan[0][p].showcard();                //输出玩家3的牌
		w3+=m_cardarray[t].getvalue();
	}
	cout<<endl;
	cout<<"玩家4的牌:"<<endl;
	for(p=0,t=3;t<54;p++,t+=4)
	{
		
		wan[0][p]=m_cardarray[t];            //玩家4的牌
		wan[0][p].showcard();                //输出玩家4的牌
		w4+=m_cardarray[t].getvalue();
	}
	char r;
    cout<<endl<<"要输出各玩家的总点数吗?要按Y不要按N。"; 
		cin>>r;
		r=toupper(r);
		if(r=='Y')                    //输出四个玩家的点数
		{
			cout<<"玩家1的总点数:"<<w1<<endl;
		  	cout<<"玩家2的总点数:"<<w2<<endl;
	        cout<<"玩家3的总点数:"<<w3<<endl;
	        cout<<"玩家4的总点数:"<<w4<<endl;
		}
		else cout<<endl;

}

int getRandInt(int min, int max)             //随机抽取一个整数并返回这个数
{
	int numToReturn;
	numToReturn = rand();
	numToReturn = numToReturn % (max - min + 1) + min;
   	return numToReturn;
}

void Deck::DeckShuff( int times)   //洗牌,times为洗牌次数
{
	int x, split;                          //split是分开成两部分的位置,如上部分、下部分
	Center_Text("   洗牌");                //输出洗牌
	cout << endl;                          
	for(x=0;x<=times;x++)							// 重复洗牌
	{	
		split = getRandInt(20,35);					// 取20-50间的随机数
		Deck topdeck;								// 建两副新的牌
		Deck bottomdeck;
		int i;
		int bottomdeckindex = 1;
		int topdeckindex = 1;
		for(i=0;i<=split - 1;)	                   // 把牌移到上部					
		{
			topdeck.m_cardarray[topdeckindex] = this->m_cardarray[i];
			topdeckindex++;	
			i++;
		}
		for(i=(split);i< 54;)					  // 把剩余的牌移到下部分
		{
			bottomdeck.m_cardarray[bottomdeckindex] = this->m_cardarray[i];
			bottomdeckindex++;
			i++;
		}
		int deckoutindex = 0;				// 置指针为空
		int numcardstomovetop;
		int numcardstomovebottom;
		int j;
		int h = 0;
			bottomdeckindex = 54 - split;		// 指针指向最底部的牌
		topdeckindex =split;				// 指针指向最上部的牌
		while(deckoutindex <= 53)
		{
			numcardstomovetop = getRandInt(2,7); // 从上部分抽取的张数,是2-7之间的随机数
            numcardstomovebottom = getRandInt(2,7);	// 从下部分抽取的张数,是2-7之间的随机数
			for(j=0;j <=numcardstomovebottom;j++)	     //	 从下部分移到新的牌	
			{
				if(bottomdeckindex > 0)				// 确定牌有效
				{
			 this->m_cardarray[deckoutindex] = bottomdeck.m_cardarray[bottomdeckindex];
					deckoutindex++;
					bottomdeckindex--;
				}
				for(h=0;h<=numcardstomovetop;h++)	                // 从上部分移到新的牌
				{				
					if((topdeckindex > 0) && (deckoutindex <=54)) // 确定牌有效以及位置
					{				
						this->m_cardarray[deckoutindex]=topdeck.m_cardarray[topdeckindex];
						deckoutindex++;
						topdeckindex--;
					}
				}
			}
		}
	}	
	this->m_lastdelt = -1;					// 返回一副洗好的扑克牌
}

void prog_close()                          //停止程序,显示信息
{
	cout << endl << endl;
	cout << " 按回车结束。" << endl;      // 输出提醒信息	
	cout << endl << endl;
	Get_Key();                            // 输入字符并取字符								
	cin.get();
}

void Deck::Remove_Card()            // 任意删去一张牌
{
	int m;
	m=getRandInt(0,53);             //取随机数(从0到53)
	while(m<53){
	m_cardarray[m]=m_cardarray[m+1];	//删去一张牌后重新附值
	m++;
	}
}
void Deck::showremainingDeck()         // 显示删去一张牌后剩下的牌
{
	int index = m_lastdelt + 1;
	int newline = 0;	
	Center_Text("牌从头到尾排列");     // 输出信息
	cout << endl;
	while(index<53)
	{
		if(newline % 11 == 0) cout << endl;         // 每11张牌后换行
		m_cardarray[index].showcard();				// 显示每张牌
		newline++;							
		index++;
	}
}
void Deck::showleftdeck()                          //删去已发的牌后并显示剩下的牌
{
	int index = m_lastdelt+1;
	int newline = 0;	
	Center_Text("扑克牌从头到尾排列");             // 输出提醒信息
	cout << endl;
	while(index<=53)
	{
		if(newline % 11 == 0) cout << endl;         // 每11张牌后换行
		m_cardarray[index].showcard();				// 显示剩下的牌
		newline++;							
		index++;
	}
}
void Deck::Deal_One()                         //发一张牌
{
    
    if(m_lastdelt != 53)						
	{
		m_lastdelt++;
		cout.width(5);                       //输出空格
		switch(m_lastdelt%4){
		case 0: cout <<"  发牌 玩家1的牌:";break;
		case 1: cout <<"  发牌 玩家2的牌:";break;
		case 2: cout <<"  发牌 玩家3的牌:";break;
		case 3: cout <<"  发牌 玩家4的牌:";break;
		default:break;
		};
		m_cardarray[m_lastdelt].showcard();  //显示这张牌
	}
	else
	{
			cout << "出错!";     //输出错误信息
			prog_close();         //终止程序
	}
}											

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -