#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
#pragma warning(disable:4996)
#define MOD 28
#define SIZE_N 19
#define SIZE_M 12
int cur_x, cur_y, score, mark, next, map[SIZE_N][SIZE_M], Gamespeed = 300;
char key1, key;
int shape[28][6] = {
{ 0, -1, 0, -2, 1, 0 }, { 0, 1, 1, 0, 2, 0 }, { -1, 0, 0, 1, 0, 2 }, { 0, -1, -1, 0, -2, 0 },
{ 0, -1, 0, 1, -1, 0 }, { 0, 1, 1, 0, -1, 0 }, { 1, 0, 0, -1, 0, 1 }, { 1, 0, -1, 0, 0, -1 },
{ -1, 1, 0, 1, 1, 0 }, { 0, -1, 1, 0, 1, 1 }, { -1, 0, 0, -1, 1, -1 }, { -1, -1, -1, 0, 0, 1 },
{ -1, 0, 0, 1, 1, 1 }, { 0, 1, 1, -1, 1, 0 }, { -1, 0, 0, 1, 1, 1 }, { 0, 1, 1, -1, 1, 0 },
{ -1, 0, 0, -1, 0, -2 }, { -1, 0, -2, 0, 0, 1 }, { 0, 1, 0, 2, 1, 0 }, { 0, -1, 1, 0, 2, 0 },
{ 0, 1, 1, 0, 1, 1 }, { 0, -1, 1, 0, 1, -1 }, { -1, 0, 0, -1, -1, -1 }, { -1, 0, -1, 1, 0, 1 },
{ 0, 1, 0, 2, 0, 3 }, { 1, 0, 2, 0, 3, 0 }, { 0, -1, 0, -2, 0, -3 }, { -1, 0, -2, 0, -3, 0 }
};
void gotoxy(int x, int y){
COORD c;
c.X = x - 1; c.Y = y - 1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void Gameover(){
int i, j, flag = 0;
for (j = 1; j<SIZE_M - 1; j++){
if (map[1][j] != 0){
flag = 1; break;
}
}
if (flag == 1){
for (i = 1; i<SIZE_N - 1; i++){
gotoxy(2, i + 1);
for (j = 1; j<SIZE_M - 1; j++){
printf("¡õ");
}puts("");
}
gotoxy(7, 9);
printf("GAME OVER!");
gotoxy(1, SIZE_N + 1);
exit(0);
}
}
void ShowMap(int id){
int i, j;
gotoxy(1, 1);
if (id != -1){
for (i = 0; i<SIZE_N; i++){
for (j = 0; j<SIZE_M; j++){
if (i == 0 && j == 0 || i == 0 && j == SIZE_M - 1 || j == 0 && i == SIZE_N - 1 || j == SIZE_M - 1 && i == SIZE_N - 1)printf(" ");