📄 fangkuaidlg.cpp
字号:
SetDlgItemText(IDC_PAUSE,TEXT("继续"));
GameState=PAUSED;
myDraw();
}
else if(GameState==PAUSED)
{
GameState=RUNNING;
SetDlgItemText(IDC_PAUSE,TEXT("暂停"));
}
}
int CFangkuaiDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
return 0;
}
void CFangkuaiDlg::OnStaticNum()
{
// TODO: Add your control notification handler code here
}
void CFangkuaiDlg::OnGameOver()
{
// TODO: Add your control notification handler code here
TCHAR m_strValue[20];
if(GameState==STOP)
Exit();
else
Stop();
_itow(0,m_strValue,10);
SetDlgItemText(IDC_STATIC_NUM,m_strValue);
SetDlgItemText(IDC_LEVEL_NUM,m_strValue);
CDC*dc=GetDC();
dc->FillSolidRect(120,30,70,40,RGB(0,0,160));
return;
}
void CFangkuaiDlg::DrawNextBrick()
{
CDC*dc=GetDC();
int i;
if(GameState==RUNNING)
{
switch(Number[1])
{
case 1:
CFangkuaiDlg::CurrentBrick[0].x=0;
CFangkuaiDlg::CurrentBrick[0].y=3;
CFangkuaiDlg::CurrentBrick[1].x=0;
CFangkuaiDlg::CurrentBrick[1].y=4;
CFangkuaiDlg::CurrentBrick[2].x=0;
CFangkuaiDlg::CurrentBrick[2].y=5;
CFangkuaiDlg::CurrentBrick[3].x=0;
CFangkuaiDlg::CurrentBrick[3].y=6;
CFangkuaiDlg::CurrentBrick[4].x=1;
break;
case 2:
CFangkuaiDlg::CurrentBrick[0].x=0;
CFangkuaiDlg::CurrentBrick[0].y=4;
CFangkuaiDlg::CurrentBrick[1].x=0;
CFangkuaiDlg::CurrentBrick[1].y=5;
CFangkuaiDlg::CurrentBrick[2].x=1;
CFangkuaiDlg::CurrentBrick[2].y=5;
CFangkuaiDlg::CurrentBrick[3].x=1;
CFangkuaiDlg::CurrentBrick[3].y=6;
CFangkuaiDlg::CurrentBrick[4].x=2;
break;
case 3:
CFangkuaiDlg::CurrentBrick[0].x=1;
CFangkuaiDlg::CurrentBrick[0].y=4;
CFangkuaiDlg::CurrentBrick[1].x=1;
CFangkuaiDlg::CurrentBrick[1].y=5;
CFangkuaiDlg::CurrentBrick[2].x=0;
CFangkuaiDlg::CurrentBrick[2].y=5;
CFangkuaiDlg::CurrentBrick[3].x=0;
CFangkuaiDlg::CurrentBrick[3].y=6;
CFangkuaiDlg::CurrentBrick[4].x=3;
break;
case 4:
CFangkuaiDlg::CurrentBrick[0].x=0;
CFangkuaiDlg::CurrentBrick[0].y=4;
CFangkuaiDlg::CurrentBrick[1].x=0;
CFangkuaiDlg::CurrentBrick[1].y=5;
CFangkuaiDlg::CurrentBrick[2].x=0;
CFangkuaiDlg::CurrentBrick[2].y=6;
CFangkuaiDlg::CurrentBrick[3].x=1;
CFangkuaiDlg::CurrentBrick[3].y=6;
CFangkuaiDlg::CurrentBrick[4].x=4;
break;
case 5:
CFangkuaiDlg::CurrentBrick[0].x=1;
CFangkuaiDlg::CurrentBrick[0].y=4;
CFangkuaiDlg::CurrentBrick[1].x=1;
CFangkuaiDlg::CurrentBrick[1].y=5;
CFangkuaiDlg::CurrentBrick[2].x=1;
CFangkuaiDlg::CurrentBrick[2].y=6;
CFangkuaiDlg::CurrentBrick[3].x=0;
CFangkuaiDlg::CurrentBrick[3].y=6;
CFangkuaiDlg::CurrentBrick[4].x=5;
break;
case 6:
CFangkuaiDlg::CurrentBrick[0].x=0;
CFangkuaiDlg::CurrentBrick[0].y=5;
CFangkuaiDlg::CurrentBrick[1].x=1;
CFangkuaiDlg::CurrentBrick[1].y=5;
CFangkuaiDlg::CurrentBrick[2].x=1;
CFangkuaiDlg::CurrentBrick[2].y=6;
CFangkuaiDlg::CurrentBrick[3].x=1;
CFangkuaiDlg::CurrentBrick[3].y=4;
CFangkuaiDlg::CurrentBrick[4].x=6;
break;
case 0:
CFangkuaiDlg::CurrentBrick[0].x=0;
CFangkuaiDlg::CurrentBrick[0].y=4;
CFangkuaiDlg::CurrentBrick[1].x=0;
CFangkuaiDlg::CurrentBrick[1].y=5;
CFangkuaiDlg::CurrentBrick[2].x=1;
CFangkuaiDlg::CurrentBrick[2].y=4;
CFangkuaiDlg::CurrentBrick[3].x=1;
CFangkuaiDlg::CurrentBrick[3].y=5;
CFangkuaiDlg::CurrentBrick[4].x=0;
break;
}
dc->FillSolidRect(120,30,70,40,RGB(0,0,160));
for(i=0;i<4;i++)
{
dc->FillSolidRect(110+CFangkuaiDlg::CurrentBrick[i].y*CFangkuaiDlg::WIDTHOFBRICKS,40+CFangkuaiDlg::CurrentBrick[i].x*CFangkuaiDlg::HEIGHTOFBRICKS,CFangkuaiDlg::WIDTHOFBRICKS,CFangkuaiDlg::HEIGHTOFBRICKS,RGB(255,100,100));
}
}
}
void CFangkuaiDlg::GenerateABrick()
{
Angle=0;
switch(Number[0])
{
case 1:
CurrentBrick[0].x=0;
CurrentBrick[0].y=3;
CurrentBrick[1].x=0;
CurrentBrick[1].y=4;
CurrentBrick[2].x=0;
CurrentBrick[2].y=5;
CurrentBrick[3].x=0;
CurrentBrick[3].y=6;
CurrentBrick[4].x=1;
break;
case 2:
CurrentBrick[0].x=0;
CurrentBrick[0].y=4;
CurrentBrick[1].x=0;
CurrentBrick[1].y=5;
CurrentBrick[2].x=1;
CurrentBrick[2].y=5;
CurrentBrick[3].x=1;
CurrentBrick[3].y=6;
CurrentBrick[4].x=2;
break;
case 3:
CurrentBrick[0].x=1;
CurrentBrick[0].y=4;
CurrentBrick[1].x=1;
CurrentBrick[1].y=5;
CurrentBrick[2].x=0;
CurrentBrick[2].y=5;
CurrentBrick[3].x=0;
CurrentBrick[3].y=6;
CurrentBrick[4].x=3;
break;
case 4:
CurrentBrick[0].x=0;
CurrentBrick[0].y=4;
CurrentBrick[1].x=0;
CurrentBrick[1].y=5;
CurrentBrick[2].x=0;
CurrentBrick[2].y=6;
CurrentBrick[3].x=1;
CurrentBrick[3].y=6;
CurrentBrick[4].x=4;
break;
case 5:
CurrentBrick[0].x=1;
CurrentBrick[0].y=4;
CurrentBrick[1].x=1;
CurrentBrick[1].y=5;
CurrentBrick[2].x=1;
CurrentBrick[2].y=6;
CurrentBrick[3].x=0;
CurrentBrick[3].y=6;
CurrentBrick[4].x=5;
break;
case 6:
CurrentBrick[0].x=0;
CurrentBrick[0].y=5;
CurrentBrick[1].x=1;
CurrentBrick[1].y=5;
CurrentBrick[2].x=1;
CurrentBrick[2].y=6;
CurrentBrick[3].x=1;
CurrentBrick[3].y=4;
CurrentBrick[4].x=6;
break;
case 0:
CurrentBrick[0].x=0;
CurrentBrick[0].y=4;
CurrentBrick[1].x=0;
CurrentBrick[1].y=5;
CurrentBrick[2].x=1;
CurrentBrick[2].y=4;
CurrentBrick[3].x=1;
CurrentBrick[3].y=5;
CurrentBrick[4].x=0;
break;
}
BrickAtBottom=FALSE;
RefreshBricks();
myDraw();
}
void CFangkuaiDlg::RotateBrick(void)
{
int i,j;
int IndexOfCenter=0;
Brick CenterBrick;
Brick TempBrick[4];
CenterBrick.y=0;
CenterBrick.x=0;
if(CurrentBrick[4].x==0)return;
for(i=0;i<4;i++)
{
TempBrick[i].x=CurrentBrick[i].x;
TempBrick[i].y=CurrentBrick[i].y;
}
switch(CurrentBrick[4].x)
{
case 1:
switch(Angle)
{
case 0:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x+1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x+2;
CurrentBrick[3].y=CurrentBrick[1].y;
break;
case 1:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y+1;
CurrentBrick[3].x=CurrentBrick[1].x;
CurrentBrick[3].y=CurrentBrick[1].y+2;
break;
case 2:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x+1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x+2;
CurrentBrick[3].y=CurrentBrick[1].y;
break;
case 3:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y+1;
CurrentBrick[3].x=CurrentBrick[1].x;
CurrentBrick[3].y=CurrentBrick[1].y+2;
break;
}
break;
case 2:
switch(Angle)
{
case 0:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y-1;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y-1;
break;
case 1:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x+1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
case 2:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y-1;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y-1;
break;
case 3:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x+1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
}
break;
case 3:
switch(Angle)
{
case 0:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y+1;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
case 1:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x-1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x-1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
case 2:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y+1;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
case 3:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x-1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x-1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
}
break;
case 4:
switch(Angle)
{
case 0:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x+1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y-1;
break;
case 1:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y+1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y-1;
CurrentBrick[3].x=CurrentBrick[1].x-1;
CurrentBrick[3].y=CurrentBrick[1].y-1;
break;
case 2:
CurrentBrick[0].x=CurrentBrick[1].x+1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x-1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x-1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
case 3:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y+1;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
}
break;
case 5:
switch(Angle)
{
case 0:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x+1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
case 1:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y+1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y-1;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y-1;
break;
case 2:
CurrentBrick[0].x=CurrentBrick[1].x+1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x-1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x-1;
CurrentBrick[3].y=CurrentBrick[1].y-1;
break;
case 3:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y+1;
CurrentBrick[3].x=CurrentBrick[1].x-1;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
}
break;
case 6:
switch(Angle)
{
case 0:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y+1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x+1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x-1;
CurrentBrick[3].y=CurrentBrick[1].y;
break;
case 1:
CurrentBrick[0].x=CurrentBrick[1].x+1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y-1;
CurrentBrick[3].x=CurrentBrick[1].x;
CurrentBrick[3].y=CurrentBrick[1].y+1;
break;
case 2:
CurrentBrick[0].x=CurrentBrick[1].x;
CurrentBrick[0].y=CurrentBrick[1].y-1;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x-1;
CurrentBrick[2].y=CurrentBrick[1].y;
CurrentBrick[3].x=CurrentBrick[1].x+1;
CurrentBrick[3].y=CurrentBrick[1].y;
break;
case 3:
CurrentBrick[0].x=CurrentBrick[1].x-1;
CurrentBrick[0].y=CurrentBrick[1].y;
CurrentBrick[1].x=CurrentBrick[1].x;
CurrentBrick[1].y=CurrentBrick[1].y;
CurrentBrick[2].x=CurrentBrick[1].x;
CurrentBrick[2].y=CurrentBrick[1].y+1;
CurrentBrick[3].x=CurrentBrick[1].x;
CurrentBrick[3].y=CurrentBrick[1].y-1;
break;
}
break;
}
for(i=0;i<4;i++)
{
if((MatrixOfBricks[CurrentBrick[i].x][CurrentBrick[i].y]==2)
||(CurrentBrick[i].y>9)
||(CurrentBrick[i].y<0)
||(CurrentBrick[i].x>19)
||(CurrentBrick[i].x<0))
{
for(j=0;j<4;j++)
{
CurrentBrick[j].x=TempBrick[j].x;
CurrentBrick[j].y=TempBrick[j].y;
}
return;
}
}
Angle=(Angle+1)%4;
/*
if((CurrentBrick[0].x==CurrentBrick[1].x==CurrentBrick[2].x==CurrentBrick[3].x)
||(CurrentBrick[0].y==CurrentBrick[1].y==CurrentBrick[2].y==CurrentBrick[3].y))
{
CenterBrick.x=CurrentBrick[1].x;
CenterBrick.x=CurrentBrick[1].y;
IndexOfCenter=1;
}
else
{
CenterBrick.x=CurrentBrick[1].x;
CenterBrick.x=CurrentBrick[1].y;
IndexOfCenter=1;
}
for(i=0;i<4;i++)
{
if(i!=IndexOfCenter)
{
CurrentBrick[i].x=TempBrick[i].y-CenterBrick.y+CenterBrick.x;
CurrentBrick[i].y=CenterBrick.x-TempBrick[i].x+CenterBrick.y;
if((MatrixOfBricks[CurrentBrick[i].x][CurrentBrick[i].y]==2)
||(CurrentBrick[i].y>9)
||(CurrentBrick[i].y<0)
||(CurrentBrick[i].x>19)
||(CurrentBrick[i].x<0))
{
for(j=0;j<4;j++)
{
CurrentBrick[j].x=TempBrick[j].x;
CurrentBrick[j].y=TempBrick[j].y;
}
break;
}
}
else
{
CurrentBrick[i].x=TempBrick[i].x;
CurrentBrick[i].y=TempBrick[i].y;
}
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -