void MoveTrans( void ) // 逆时针翻转
{
if( IsFit( x, y, c, (z+1)%4 ) )
{
VoiceBeep();
Draw( COLOR_C );
z=(z+1)%4;
Draw( COLOR_A );
}
}
void MoveLeft( void ) // 向左移
{
if( IsFit( x-1, y, c, z ) )
{
VoiceBeep();
Draw( COLOR_C );
--x;
Draw( COLOR_A );
}
}
void MoveRight( void ) // 向右移
{
if( IsFit( x+1, y, c, z ) )
{
VoiceBeep();
Draw( COLOR_C );
++x;
Draw( COLOR_A );
}
}
int MoveDown( void ) // 向下移, 游戏结束返回0, 触底返回-1,否则返回1
{
if( IsFit( x, y+1, c, z ) )
{
VoiceBeep();
Draw( COLOR_C );
++y;
Draw( COLOR_A );
return 1;
}
if( y != -2 ) // 触底
{
Draw( COLOR_B );
for( int i=0; i<4; ++i )
{
if( y+i<0 ) continue;
for( int j=0; j<4; ++j )
if( bk[c][z][i][j] == 1 )
data[y+i][x+j] = 1;
}
RemoveRow();
x=4, y=-2, c=next, z=0;
next = rand()%7;
DrawNext();
return -1;
}
// 游戏结束
gameover = true;
DrawOver();
return 0;
}
bool MoveDownDown( void ) // 下落到底
{
int r;
for( ; r=MoveDown(),r==1; );
return r == -1;
}
private:
static const char bg[21*38+1];
static const char bk[7][4][4][4];
static const WORD COLOR_A; // 运动中的颜色
static const WORD COLOR_B; // 固定不动的颜色
static const WORD COLOR_C; // 空白处的颜色
private:
DWORD freq, dura; // 声效频率,延续时间
int keys[8]; // 8个控制键
char decs[8][5]; // 8个控制键的描述, 长度为4个字节, 不含\0
bool gameover;
bool pause; // 暂停
bool voice; // 声效开关
int score, level; // 得分 和 速度
char data[19][11];
int next;
int x, y, c, z; // x坐标,y坐标,当前方块,方向
Window win;
};
{
if( IsFit( x, y, c, (z+1)%4 ) )
{
VoiceBeep();
Draw( COLOR_C );
z=(z+1)%4;
Draw( COLOR_A );
}
}
void MoveLeft( void ) // 向左移
{
if( IsFit( x-1, y, c, z ) )
{
VoiceBeep();
Draw( COLOR_C );
--x;
Draw( COLOR_A );
}
}
void MoveRight( void ) // 向右移
{
if( IsFit( x+1, y, c, z ) )
{
VoiceBeep();
Draw( COLOR_C );
++x;
Draw( COLOR_A );
}
}
int MoveDown( void ) // 向下移, 游戏结束返回0, 触底返回-1,否则返回1
{
if( IsFit( x, y+1, c, z ) )
{
VoiceBeep();
Draw( COLOR_C );
++y;
Draw( COLOR_A );
return 1;
}
if( y != -2 ) // 触底
{
Draw( COLOR_B );
for( int i=0; i<4; ++i )
{
if( y+i<0 ) continue;
for( int j=0; j<4; ++j )
if( bk[c][z][i][j] == 1 )
data[y+i][x+j] = 1;
}
RemoveRow();
x=4, y=-2, c=next, z=0;
next = rand()%7;
DrawNext();
return -1;
}
// 游戏结束
gameover = true;
DrawOver();
return 0;
}
bool MoveDownDown( void ) // 下落到底
{
int r;
for( ; r=MoveDown(),r==1; );
return r == -1;
}
private:
static const char bg[21*38+1];
static const char bk[7][4][4][4];
static const WORD COLOR_A; // 运动中的颜色
static const WORD COLOR_B; // 固定不动的颜色
static const WORD COLOR_C; // 空白处的颜色
private:
DWORD freq, dura; // 声效频率,延续时间
int keys[8]; // 8个控制键
char decs[8][5]; // 8个控制键的描述, 长度为4个字节, 不含\0
bool gameover;
bool pause; // 暂停
bool voice; // 声效开关
int score, level; // 得分 和 速度
char data[19][11];
int next;
int x, y, c, z; // x坐标,y坐标,当前方块,方向
Window win;
};