📄 diamond.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 + -