1
#ifndef _ABLOCKS_H_
#define _ABLOCKS_H_
#include<windows.h>
using namespace std;
class ablocks{
public:
COORD block[4]; //COORD是Windows API中定义的一种结构,表示一个字符在控制台屏幕上的坐标,方块的位置
COORD center; //旋转中心
color_t color;
static int zt[10][21]; //每个方格状态0未填充1已填充
static int score,xh; //分数和消行
static char scores[50],xhs[50];//分数显示字符串,消行显示字符串
ablocks(int x1,int y1,int index1);
ablocks(ablocks &a);
void displayBlock(); //显示块
void movew(int where); //移动
void spin(); //旋转
void clearone(int i); 清除一行
void ztupdate(); //方格状态更新
void display(); //输出信息
void initgame();
int pdzs(); //判断下方是否有障碍
int pdz(); //判断左方是否有障碍
int pdy(); //判断右方是否有障碍
private:
int x,y,index;
};
#endif
2
//ablocks.cpp
#include<graphics.h>
#include<iostream>
#include<cstdio>
#include"ablocks.h"
using namespace std;
int ablocks::zt[10][21];
int ablocks::score=0;
int ablocks::xh=0;
char ablocks::scores[50];
char ablocks::xhs[50];
ablocks::ablocks(int x1,int y1,int index1):index(index1){
x=x1-10;
y=y1-10;
switch(index)
{
case 1: //L
block[0]={x-20,y-20};
block[1]={x-20,y};
block[2]={x,y};
block[3]={x+20,y};
color=0xFFA500;
center=block[1];
break;
case 2://I
block[0]={x-40,y-20};
block[1]={x-20,y-20};
block[2]={x,y-20};
block[3]={x+20,y-20};
x-=10;
y-=10;
color=0x0000ee;
center={211,121};
break;
case 3://J
block[0]={x-20,y};
block[1]={x,y};
block[2]={x+20,y};
block[3]={x+20,y-20};
color=0x00ffff;
center=block[1];
break;
case 4://田
block[0]={x-20,y-20};
block[1]={x,y-20};
block[2]={x-20,y};
block[3]={x,y};
x-=10;
y-=10;
color=YELLOW;
center={211,131};
break;
case 5://S
block[0]={x-20,y};
block[1]={x,y};
block[2]={x,y-20};
block[3]={x+20,y-20};
color=0xff0000;
center=block[1];
break;
case 6://Z
block[0]={x-20,y-20}