C语言-控制台俄罗斯方块


/*
//
定义了一个RandBlock[4][4]用来存方块
BlockGroup[][]用来绘制界面
//
*/
#include 
#include
#include
#include
#include 
using namespace std;


#define Level 100//初始难度;
#define Score 0//初始分数;
const int WallWide_x = 20;//墙的宽度
const int WallLength_y = 28;//墙的长度
int TempGroup[4][4];//用于旋转时存放方块
int BlockGroup[WallWide_x][WallLength_y];//定义一个数组用来显示界面,及初始化背景
int RandBlock[2][4];//定义一个数组用来存方块
int main()
{
void ShowFirstWindow();
void CreateBlock(int RandBlock[2][4]);//创建随机方块
void GotoXY(int, int);//设置光标位置
void PutBlockToBack();//把方块放到背景里面去
void BlockMoveDown();
void ShowGame();
//控制方块移动
void BlockMoveLeft();
void BlockMoveRight();
void BlockRotate();
void BlockMoveDownFast();
//
srand((unsigned(time(NULL))));//以时间作为种子产生随机数
for (int i = 0; i < WallLength_y; i++)//y坐标
{
BlockGroup[0][i] = 1;//初始化最左边的墙
for (int j = 1; j < WallWide_x; j++)//x坐标
{
if (i == 0)//初始化最上面的墙
{
BlockGroup[j][0] = 1;
}
else
{
if (i == WallLength_y - 1)//初始化最下面的墙
{
BlockGroup[j][WallLength_y - 1] = 1;
}
else
BlockGroup[j][i] = 0;
}
}
BlockGroup[WallWide_x - 1][i] = 1;//初始化最右边的墙


}


CreateBlock(RandBlock);//先产生方块
PutBlockToBack();//把方块放到背景里面去
ShowFirstWindow();//显示游戏开始界面;
GotoXY(1, 1);
while(1!=BlockGroup[9][3])//第2行值为1代表方块堆满了,游戏结束
{
BlockMoveDown();//方块下落
ShowGame();//判断方块能否下落,以及处理方块叠加
while(_kbhit())
{
char a = _getch();
switch(a)
{
case 'a':BlockMoveLeft();break;
case 'd':BlockMoveRight();break;
case 'w':BlockRotate();break;
}
}
GotoXY(1, 1);
Sleep(Level);
}
GotoXY(10, 10);//显示游戏结束
cout<<"GAME OVER!"<0; i--)
for(int j = 0; j0; i--)
{
if(2 == BlockGroup[i][j])
{
if(1 != BlockGroup[i+1][j])
{
BlockGroup[i+1][j] = BlockGroup[i][j];
BlockGroup[i][j] = 0;
}
}
}
}
}




//方块旋转
void  BlockRotate()
{
for(int j = 0; j

有诸多BUG,没有消除满行的。没有旋转的,希望哪位大神就此程序运行了帮忙指点下。



你可能感兴趣的:(C和C++)