📄 game.cpp
字号:
// GAME.cpp: implementation of the GAME class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "俄罗斯方块.h"
#include "GAME.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GAME::GAME()
{
JoySpeed=50;
IsPlayMid=FALSE;
GameHasOver=FALSE;
HelpData.Format("");
Count=100;
Score=0;
OldScore=0;
Floor=0;
Level=1;
DelBoxNum=0;
strcpy(MidName,"");
MoveWave=FALSE;
BackMid=FALSE;
strcpy(MidName,"");
NextBoxNum=0;
NextBoxPosition=0;
GamePause=FALSE;
GAME::KEYUP=TRUE;
GAME::PassStage=FALSE;
GAME::StartGame=FALSE;
GAME::BeginRow=0;
GAME::EndRow=0;
GAME::Speed=(9-Level)*30+30;
GAME::IsDroping=FALSE;
GAME::BackColor=RGB(0,0,0);
bkbrush=CreateSolidBrush(BackColor);
Movexy.x=7;Movexy.y=0;
GAME::BoxNum=0;
GAME::BoxPosition=0;
for(int i=0;i<16;i++)
for(int j=0;j<25;j++)
{
*(*(BoxStyle+i)+j)=FALSE;
*(*(BoxRgb+i)+j)=RGB(0,0,0);
}
//以下是名次数据
strcpy(PlayDat.Name,"");
strcpy(PlayDat.Floor,"");
strcpy(PlayDat.Score,"");
for(i=0;i<5;i++)
{
strcpy(Order[i].Name,"");
strcpy(Order[i].Floor,"");
strcpy(Order[i].Score,"");
}
OrderNum=0;
//从文件读取数据
LoadDat();
//以下是各方块数据
GAME::Standard=TRUE;
MaxNum=8;
for(i=0;i<MaxNum;i++)
for(int j=0;j<4;j++)
for(int ii=0;ii<4;ii++)
for(int jj=0;jj<4;jj++)
MoveBox[i][j].box[ii][jj]=FALSE;
//方块1
MoveBox[0][0].box[0][0]=TRUE;
MoveBox[0][0].box[0][1]=TRUE;
MoveBox[0][0].box[1][1]=TRUE;
MoveBox[0][0].width=2;
MoveBox[0][0].heigh=2;
MoveBox[0][1].box[0][1]=TRUE;
MoveBox[0][1].box[1][0]=TRUE;
MoveBox[0][1].box[1][1]=TRUE;
MoveBox[0][1].width=2;
MoveBox[0][1].heigh=2;
MoveBox[0][2].box[0][0]=TRUE;
MoveBox[0][2].box[1][0]=TRUE;
MoveBox[0][2].box[1][1]=TRUE;
MoveBox[0][2].width=2;
MoveBox[0][2].heigh=2;
MoveBox[0][3].box[0][0]=TRUE;
MoveBox[0][3].box[1][0]=TRUE;
MoveBox[0][3].box[0][1]=TRUE;
MoveBox[0][3].width=2;
MoveBox[0][3].heigh=2;
for(i=0;i<=3;i++)
MoveBox[0][i].color=RGB_0;
brush[0]=CreateSolidBrush(RGB_0);
//方块2
for(i=0;i<=3;i++)
{
MoveBox[1][i].box[0][0]=TRUE;
MoveBox[1][i].box[1][0]=TRUE;
MoveBox[1][i].box[0][1]=TRUE;
MoveBox[1][i].box[1][1]=TRUE;
MoveBox[1][i].width=2;
MoveBox[1][i].heigh=2;
MoveBox[1][i].color=RGB_1;
}
brush[1]=CreateSolidBrush(RGB_1);
//方块3
MoveBox[2][0].box[0][0]=TRUE;
MoveBox[2][0].box[1][0]=TRUE;
MoveBox[2][0].box[2][0]=TRUE;
MoveBox[2][0].box[3][0]=TRUE;
MoveBox[2][0].width=4;
MoveBox[2][0].heigh=1;
MoveBox[2][1].box[0][0]=TRUE;
MoveBox[2][1].box[0][1]=TRUE;
MoveBox[2][1].box[0][2]=TRUE;
MoveBox[2][1].box[0][3]=TRUE;
MoveBox[2][1].width=1;
MoveBox[2][1].heigh=4;
MoveBox[2][2].box[0][0]=TRUE;
MoveBox[2][2].box[1][0]=TRUE;
MoveBox[2][2].box[2][0]=TRUE;
MoveBox[2][2].box[3][0]=TRUE;
MoveBox[2][2].width=4;
MoveBox[2][2].heigh=1;
MoveBox[2][3].box[0][0]=TRUE;
MoveBox[2][3].box[0][1]=TRUE;
MoveBox[2][3].box[0][2]=TRUE;
MoveBox[2][3].box[0][3]=TRUE;
MoveBox[2][3].width=1;
MoveBox[2][3].heigh=4;
for(i=0;i<=3;i++)
MoveBox[2][i].color=RGB_2;
brush[2]=CreateSolidBrush(RGB_2);
//方块4
MoveBox[3][0].box[1][0]=TRUE;
MoveBox[3][0].box[0][1]=TRUE;
MoveBox[3][0].box[1][1]=TRUE;
MoveBox[3][0].box[2][1]=TRUE;
MoveBox[3][0].width=3;
MoveBox[3][0].heigh=2;
MoveBox[3][1].box[1][0]=TRUE;
MoveBox[3][1].box[0][1]=TRUE;
MoveBox[3][1].box[1][1]=TRUE;
MoveBox[3][1].box[1][2]=TRUE;
MoveBox[3][1].width=2;
MoveBox[3][1].heigh=3;
MoveBox[3][2].box[0][0]=TRUE;
MoveBox[3][2].box[1][0]=TRUE;
MoveBox[3][2].box[2][0]=TRUE;
MoveBox[3][2].box[1][1]=TRUE;
MoveBox[3][2].width=3;
MoveBox[3][2].heigh=2;
MoveBox[3][3].box[0][0]=TRUE;
MoveBox[3][3].box[0][1]=TRUE;
MoveBox[3][3].box[0][2]=TRUE;
MoveBox[3][3].box[1][1]=TRUE;
MoveBox[3][3].width=2;
MoveBox[3][3].heigh=3;
for(i=0;i<=3;i++)
MoveBox[3][i].color=RGB_3;
brush[3]=CreateSolidBrush(RGB_3);
//方块5
MoveBox[4][0].box[0][0]=TRUE;
MoveBox[4][0].box[0][1]=TRUE;
MoveBox[4][0].box[0][2]=TRUE;
MoveBox[4][0].box[1][2]=TRUE;
MoveBox[4][0].width=2;
MoveBox[4][0].heigh=3;
MoveBox[4][1].box[2][0]=TRUE;
MoveBox[4][1].box[0][1]=TRUE;
MoveBox[4][1].box[1][1]=TRUE;
MoveBox[4][1].box[2][1]=TRUE;
MoveBox[4][1].width=3;
MoveBox[4][1].heigh=2;
MoveBox[4][2].box[0][0]=TRUE;
MoveBox[4][2].box[1][0]=TRUE;
MoveBox[4][2].box[1][1]=TRUE;
MoveBox[4][2].box[1][2]=TRUE;
MoveBox[4][2].width=2;
MoveBox[4][2].heigh=3;
MoveBox[4][3].box[0][0]=TRUE;
MoveBox[4][3].box[1][0]=TRUE;
MoveBox[4][3].box[2][0]=TRUE;
MoveBox[4][3].box[0][1]=TRUE;
MoveBox[4][3].width=3;
MoveBox[4][3].heigh=2;
for(i=0;i<=3;i++)
MoveBox[4][i].color=RGB_4;
brush[4]=CreateSolidBrush(RGB_4);
//方块6
MoveBox[5][0].box[1][0]=TRUE;
MoveBox[5][0].box[1][1]=TRUE;
MoveBox[5][0].box[1][2]=TRUE;
MoveBox[5][0].box[0][2]=TRUE;
MoveBox[5][0].width=2;
MoveBox[5][0].heigh=3;
MoveBox[5][1].box[2][1]=TRUE;
MoveBox[5][1].box[0][0]=TRUE;
MoveBox[5][1].box[1][0]=TRUE;
MoveBox[5][1].box[2][0]=TRUE;
MoveBox[5][1].width=3;
MoveBox[5][1].heigh=2;
MoveBox[5][2].box[1][0]=TRUE;
MoveBox[5][2].box[0][0]=TRUE;
MoveBox[5][2].box[0][1]=TRUE;
MoveBox[5][2].box[0][2]=TRUE;
MoveBox[5][2].width=2;
MoveBox[5][2].heigh=3;
MoveBox[5][3].box[0][1]=TRUE;
MoveBox[5][3].box[1][1]=TRUE;
MoveBox[5][3].box[2][1]=TRUE;
MoveBox[5][3].box[0][0]=TRUE;
MoveBox[5][3].width=3;
MoveBox[5][3].heigh=2;
for(i=0;i<=3;i++)
MoveBox[5][i].color=RGB_5;
brush[5]=CreateSolidBrush(RGB_5);
//方块7
MoveBox[6][0].box[0][0]=TRUE;
MoveBox[6][0].box[0][1]=TRUE;
MoveBox[6][0].box[1][1]=TRUE;
MoveBox[6][0].box[1][2]=TRUE;
MoveBox[6][0].width=2;
MoveBox[6][0].heigh=3;
MoveBox[6][1].box[1][0]=TRUE;
MoveBox[6][1].box[2][0]=TRUE;
MoveBox[6][1].box[0][1]=TRUE;
MoveBox[6][1].box[1][1]=TRUE;
MoveBox[6][1].width=3;
MoveBox[6][1].heigh=2;
MoveBox[6][2].box[0][0]=TRUE;
MoveBox[6][2].box[0][1]=TRUE;
MoveBox[6][2].box[1][1]=TRUE;
MoveBox[6][2].box[1][2]=TRUE;
MoveBox[6][2].width=2;
MoveBox[6][2].heigh=3;
MoveBox[6][3].box[1][0]=TRUE;
MoveBox[6][3].box[2][0]=TRUE;
MoveBox[6][3].box[0][1]=TRUE;
MoveBox[6][3].box[1][1]=TRUE;
MoveBox[6][3].width=3;
MoveBox[6][3].heigh=2;
for(i=0;i<=3;i++)
MoveBox[6][i].color=RGB_6;
brush[6]=CreateSolidBrush(RGB_6);
//方块8
MoveBox[7][0].box[1][0]=TRUE;
MoveBox[7][0].box[0][1]=TRUE;
MoveBox[7][0].box[1][1]=TRUE;
MoveBox[7][0].box[0][2]=TRUE;
MoveBox[7][0].width=2;
MoveBox[7][0].heigh=3;
MoveBox[7][1].box[0][0]=TRUE;
MoveBox[7][1].box[1][0]=TRUE;
MoveBox[7][1].box[1][1]=TRUE;
MoveBox[7][1].box[2][1]=TRUE;
MoveBox[7][1].width=3;
MoveBox[7][1].heigh=2;
MoveBox[7][2].box[1][0]=TRUE;
MoveBox[7][2].box[0][1]=TRUE;
MoveBox[7][2].box[1][1]=TRUE;
MoveBox[7][2].box[0][2]=TRUE;
MoveBox[7][2].width=2;
MoveBox[7][2].heigh=3;
MoveBox[7][3].box[0][0]=TRUE;
MoveBox[7][3].box[1][0]=TRUE;
MoveBox[7][3].box[1][1]=TRUE;
MoveBox[7][3].box[2][1]=TRUE;
MoveBox[7][3].width=3;
MoveBox[7][3].heigh=2;
for(i=0;i<=3;i++)
MoveBox[7][i].color=RGB_7;
brush[7]=CreateSolidBrush(RGB_7);
//方块9
for(i=0;i<=3;i++)
{
MoveBox[8][i].box[1][0]=TRUE;
MoveBox[8][i].box[0][1]=TRUE;
MoveBox[8][i].box[1][1]=TRUE;
MoveBox[8][i].box[2][1]=TRUE;
MoveBox[8][i].box[1][2]=TRUE;
MoveBox[8][i].width=3;
MoveBox[8][i].heigh=3;
MoveBox[8][i].color=RGB_8;
}
brush[8]=CreateSolidBrush(RGB_8);
//方块10
MoveBox[9][0].box[0][0]=TRUE;
MoveBox[9][0].box[2][0]=TRUE;
MoveBox[9][0].box[0][1]=TRUE;
MoveBox[9][0].box[1][1]=TRUE;
MoveBox[9][0].box[2][1]=TRUE;
MoveBox[9][0].width=3;
MoveBox[9][0].heigh=2;
MoveBox[9][1].box[0][0]=TRUE;
MoveBox[9][1].box[1][0]=TRUE;
MoveBox[9][1].box[1][1]=TRUE;
MoveBox[9][1].box[0][2]=TRUE;
MoveBox[9][1].box[1][2]=TRUE;
MoveBox[9][1].width=2;
MoveBox[9][1].heigh=3;
MoveBox[9][2].box[0][0]=TRUE;
MoveBox[9][2].box[1][0]=TRUE;
MoveBox[9][2].box[2][0]=TRUE;
MoveBox[9][2].box[0][1]=TRUE;
MoveBox[9][2].box[2][1]=TRUE;
MoveBox[9][2].width=3;
MoveBox[9][2].heigh=2;
MoveBox[9][3].box[0][0]=TRUE;
MoveBox[9][3].box[1][0]=TRUE;
MoveBox[9][3].box[0][1]=TRUE;
MoveBox[9][3].box[0][2]=TRUE;
MoveBox[9][3].box[1][2]=TRUE;
MoveBox[9][3].width=2;
MoveBox[9][3].heigh=3;
for(i=0;i<=3;i++)
MoveBox[9][i].color=RGB_9;
brush[9]=CreateSolidBrush(RGB_9);
//方块11
MoveBox[10][0].box[0][0]=TRUE;
MoveBox[10][0].box[0][1]=TRUE;
MoveBox[10][0].box[1][1]=TRUE;
MoveBox[10][0].box[2][1]=TRUE;
MoveBox[10][0].box[2][2]=TRUE;
MoveBox[10][0].width=3;
MoveBox[10][0].heigh=3;
MoveBox[10][1].box[1][0]=TRUE;
MoveBox[10][1].box[2][0]=TRUE;
MoveBox[10][1].box[1][1]=TRUE;
MoveBox[10][1].box[0][2]=TRUE;
MoveBox[10][1].box[1][2]=TRUE;
MoveBox[10][1].width=3;
MoveBox[10][1].heigh=3;
MoveBox[10][2].box[0][0]=TRUE;
MoveBox[10][2].box[0][1]=TRUE;
MoveBox[10][2].box[1][1]=TRUE;
MoveBox[10][2].box[2][1]=TRUE;
MoveBox[10][2].box[2][2]=TRUE;
MoveBox[10][2].width=3;
MoveBox[10][2].heigh=3;
MoveBox[10][3].box[1][0]=TRUE;
MoveBox[10][3].box[2][0]=TRUE;
MoveBox[10][3].box[1][1]=TRUE;
MoveBox[10][3].box[0][2]=TRUE;
MoveBox[10][3].box[1][2]=TRUE;
MoveBox[10][3].width=3;
MoveBox[10][3].heigh=3;
for(i=0;i<=3;i++)
MoveBox[10][i].color=RGB_10;
brush[10]=CreateSolidBrush(RGB_10);
//方块12
MoveBox[11][0].box[1][0]=TRUE;
MoveBox[11][0].box[1][1]=TRUE;
MoveBox[11][0].box[0][2]=TRUE;
MoveBox[11][0].box[1][2]=TRUE;
MoveBox[11][0].box[2][2]=TRUE;
MoveBox[11][0].width=3;
MoveBox[11][0].heigh=3;
MoveBox[11][1].box[2][0]=TRUE;
MoveBox[11][1].box[0][1]=TRUE;
MoveBox[11][1].box[1][1]=TRUE;
MoveBox[11][1].box[2][1]=TRUE;
MoveBox[11][1].box[2][2]=TRUE;
MoveBox[11][1].width=3;
MoveBox[11][1].heigh=3;
MoveBox[11][2].box[0][0]=TRUE;
MoveBox[11][2].box[1][0]=TRUE;
MoveBox[11][2].box[2][0]=TRUE;
MoveBox[11][2].box[1][1]=TRUE;
MoveBox[11][2].box[1][2]=TRUE;
MoveBox[11][2].width=3;
MoveBox[11][2].heigh=3;
MoveBox[11][3].box[0][0]=TRUE;
MoveBox[11][3].box[0][1]=TRUE;
MoveBox[11][3].box[1][1]=TRUE;
MoveBox[11][3].box[2][1]=TRUE;
MoveBox[11][3].box[0][2]=TRUE;
MoveBox[11][3].width=3;
MoveBox[11][3].heigh=3;
for(i=0;i<=3;i++)
MoveBox[11][i].color=RGB_11;
brush[11]=CreateSolidBrush(RGB_11);
}
GAME::~GAME()
{
HelpData.Format("");
}
inline int GetBrushCode(const COLORREF color)
{
switch(color)
{
case RGB_0:return 0;
case RGB_1:return 1;
case RGB_2:return 2;
case RGB_3:return 3;
case RGB_4:return 4;
case RGB_5:return 5;
case RGB_6:return 6;
case RGB_7:return 7;
case RGB_8:return 8;
case RGB_9:return 9;
case RGB_10:return 10;
case RGB_11:return 11;
default:
return 0;
}
}
void GAME::DrawBox(const int i,const int j)
{
SelectObject(m_hDC,brush[GetBrushCode(BoxRgb[i][j])]);
Rectangle(m_hDC,i*15,j*15,(i+1)*15,(j+1)*15);
}
void GAME::DelBox(const int i,const int j)
{
SelectObject(m_hDC,bkbrush);
Rectangle(m_hDC,i*15,j*15,(i+1)*15,(j+1)*15);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -