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

📄 diamond.cpp

📁 俄罗斯方块,适于sdk初学者参考学习
💻 CPP
字号:
//这里产生的方块并不需要是标准方块,别的希奇古怪的也行哦。
//
#include "stdafx.h"
#include "diamond.h"

diamond::diamond()
{
  
  m_maxsubdiamond=8;
  m_diamond=new subdiamond[m_maxsubdiamond];
  
  srand( (unsigned)time( NULL ) );//**
}

diamond::~diamond()
{
   delete [] m_diamond;
}

diamond &diamond::operator =(const diamond &thediamond)
{
  int i;
	
  if(this==&thediamond)
    return *this;

  for(i=0;i<thediamond.subdiamondval();i++)
  {
    thediamond.diamondinfo(i,m_diamond[i].x,m_diamond[i].y);  
  }
  m_subdiamondval=thediamond.subdiamondval(); 
  m_color=thediamond.diamondcolor();
  return *this;
}

int diamond::diamondinfo(int index,int &x,int &y) const
{
	if(index+1>m_subdiamondval||index<0)
	{
		//MessageBox(NULL,TEXT("diamond越界"),TEXT("WARNING"),0);
        return FALSE;	
	}
    x=m_diamond[index].x;
	y=m_diamond[index].y;
	return TRUE;
}

void diamond::selectdiamond()
{
  int diamondstyle;
  diamondstyle=rand()%8;

  m_subdiamondval=4;     
  switch(diamondstyle)
  {
   case I_STYLE :
	   m_diamond[0].x =0;
	   m_diamond[0].y =0;
       m_diamond[1].x =1;
	   m_diamond[1].y =0;
       m_diamond[2].x =2;
	   m_diamond[2].y =0;
	   m_diamond[3].x =3;
	   m_diamond[3].y =0;
       
	   m_color=I_COLOR;
       break;
   case T_STYLE :
       m_diamond[0].x =1;
	   m_diamond[0].y =0;
       m_diamond[1].x =0;
	   m_diamond[1].y =1;
       m_diamond[2].x =1;
	   m_diamond[2].y =1;
	   m_diamond[3].x =2;
	   m_diamond[3].y =1;
	   
	   m_color=T_COLOR;
	   break;
   case O_STYLE :
	   m_diamond[0].x =0;
	   m_diamond[0].y =0;
       m_diamond[1].x =1;
	   m_diamond[1].y =0;
       m_diamond[2].x =0;
	   m_diamond[2].y =1;
	   m_diamond[3].x =1;
	   m_diamond[3].y =1;
       
	   m_color=O_COLOR;
	   break;
   case LL_STYLE :
	   m_diamond[0].x =0;
	   m_diamond[0].y =0;
       m_diamond[1].x =0;
	   m_diamond[1].y =1;
       m_diamond[2].x =1;
	   m_diamond[2].y =1;
	   m_diamond[3].x =2;
	   m_diamond[3].y =1;

	   m_color=LL_COLOR;
       break;
   case RL_STYLE:
	   m_diamond[0].x =0;
	   m_diamond[0].y =1;
       m_diamond[1].x =1;
	   m_diamond[1].y =1;
       m_diamond[2].x =2;
	   m_diamond[2].y =1;
	   m_diamond[3].x =2;
	   m_diamond[3].y =0;

	   m_color=RL_COLOR;
	   break;
   case LZ_STYLE:
	   m_diamond[0].x =0;
	   m_diamond[0].y =0;
       m_diamond[1].x =1;
	   m_diamond[1].y =0;
       m_diamond[2].x =1;
	   m_diamond[2].y =1;
	   m_diamond[3].x =2;
	   m_diamond[3].y =1;

	   m_color=LZ_COLOR;
	   break;
   case RZ_STYLE:
	   m_diamond[0].x =0;
	   m_diamond[0].y =1;
       m_diamond[1].x =1;
	   m_diamond[1].y =1;
       m_diamond[2].x =1;
	   m_diamond[2].y =0;
	   m_diamond[3].x =2;
	   m_diamond[3].y =0;
       
	   m_color=RZ_COLOR;
	   break;
   case 7:
	   m_subdiamondval=3;
       m_diamond[0].x=0;
	   m_diamond[0].y=1;
       m_diamond[1].x=1;
	   m_diamond[1].y=1;
       m_diamond[2].x=1;
	   m_diamond[2].y=0;
	   
	   m_color=T_COLOR;
	   break;
  }
}

void diamond::movedowndiamond()
{
	int i;
	for(i=0;i<m_subdiamondval;i++)
	{
		m_diamond[i].y++;
	}

}
void diamond::moveleftdiamond()
{
	int i;
	for(i=0;i<m_subdiamondval;i++)
	{
		m_diamond[i].x--;
	}
}

void diamond::moverightdiamond()
{
	int i;
	for(i=0;i<m_subdiamondval;i++)
	{
		m_diamond[i].x++;
	}
}
void diamond::rotatediamond()
{
	int max_x,max_y,min_x;
	int i,temp;
	int start_x,start_y,end_x,end_y;

	max_x=m_diamond[0].x;
	min_x=m_diamond[0].x;
	max_y=m_diamond[0].y; 
    
	for(i=0;i<m_subdiamondval;i++)
	{
		if(m_diamond[i].x >max_x)
			max_x=m_diamond[i].x ;
		if(m_diamond[i].x <min_x)
			min_x=m_diamond[i].x ;
		if(m_diamond[i].y >max_y)
			max_y=m_diamond[i].y ;
	}
    start_x=max_x;
	start_y=max_y;
	end_x=min_x;
	end_y=max_y;

    for(i=0;i<m_subdiamondval;i++)
	{
	  temp=start_x-m_diamond[i].x ;
	  m_diamond[i].x =end_x+(start_y-m_diamond[i].y);
	  m_diamond[i].y=end_y-temp;
	}
}

⌨️ 快捷键说明

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