#include<stdio.h>
#include<Windows.h>
#include<conio.h>
#include<stdlib.h>
#define LEFT 75 // 좌측방향키
#define RIGHT 77 // 우측방향키
#define UP 72 // 위쪽방향키
#define DOWN 80 // 아래방향키
void gotoxy(int x,int y);
void mapsetting();//맵 세팅
int map[20][20]={0};//맵
void display();//맵 보이게 하는거
void drawbrick();//블록 그리는거
void control();//키보드입력받는곳
int blockcheck(int X,int Y);
void remove();//블록없애
void pile();//블록땅에닿으면 쌓
int x,y;//좌표
int shape=0;
//↓
int brick[4][4][4]={
{
{1,1,1,1},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0} },
{
{1,1,0,0},
{1,1,0,0},
{0,0,0,0},
{0,0,0,0} },
{
{1,1,0,0},
{0,1,1,0},
{0,0,0,0},
{0,0,0,0} },
{
{1,1,0,0},
{1,0,0,0},
{1,0,0,0},
{1,0,0,0} }
};
int main()
{
x=8,y=1;
mapsetting();
display();
gotoxy(x,y);
drawbrick();
while(1)
{
control();
gotoxy(x,y);
}
}
void gotoxy(int x,int y)//커서
{
COORD pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void mapsetting()
{
int i,j;
for(i=0; i<20; i++)
{
for(j=0; j<20; j++)
{
if(i==0||j==0||j==19||i==19)
{
map[i][j]=1;
}
}
}
}
void display()
{
int i,j;
for(i=0; i<20; i++)
{
for(j=0; j<20; j++)
{
if(map[i][j]==1)
{
gotoxy(j+j,i);
printf("■");
}
}
}
}
void drawbrick()
{
int i,j;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(brick[shape][i][j]==1)
{
gotoxy(x*2+j*2,y+i);
printf("■");
}
}
}
}
int blockcheck(int X,int Y)
{
int i,j;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(brick[shape][i][j]==1)
{
if(map[Y+i][X+j]==1)
{
return 0;
}
}
}
}
return 1;
}
void control()
{
char key;
if((kbhit()!= 0))
{
key=getch();
switch(key)
{
case 75:
{
if(blockcheck(x-1,y)==1)
{
remove();
x=x-1;
drawbrick();
}
break;
}
case 77:
{
if(blockcheck(x+1,y)==1)
{
remove();
x=x+1;
drawbrick();
}
break;
}
case 80:
{
if(blockcheck(x,y+1)==1)//밑에 아무것도 없으면 1
{
remove();
y=y+1;
drawbrick();
}
else
{
pile();
x=8,y=1;
gotoxy(x,y);
drawbrick();
display();
}
break;
}
default:break;
}
}
}
void remove()
{
int i,j;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(brick[shape][i][j]==1)
{
gotoxy(x*2+j*2,y+i);
printf(" ");
}
}
}
}
void pile()
{
int i,j;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(brick[shape][i][j]==1)
{
map[y][x]=1;
}
}
}
}
아벽뚫려
3줄요약좀
이런거 긁어오지말라고...