#include <stdio.h>
#include<math.h>
#include <time.h>
#include <windows.h>
#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80
#define SPACE 32
void gotoxy(int x,int y)
{
COORD pos= {x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void setColor(int x)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
int main()
{
int i,o,map[101][101],mapb[101][101],la,lb,l=0,ll=0,j;
gotoxy(40,18);
printf("기존칸");
srand(time(NULL));
///기둥 출력
for(i=0; i<=20; i++)
{
for(o=0; o<=4; o++)
{
gotoxy(i+50,o+10);
if(i%4==0)
{
{
printf("|");
}
map[i][o]=9;
}
else
{
printf(" ");
map[i][o]=0;
}
}
}
gotoxy(72,12);
printf("정답지->");
///정답지출력
for(i=0;i<=20;i++)
{
for(o=0;o<=4;o++)
{
gotoxy(i+80,o+10);
if(i%4==0)
{
printf("|");
mapb[i][o]=9;
}
else
{
printf(" ");
mapb[i][o]=0;
}
}
}
///정답지 링 출력
for(i=0;i<=4;i++)
{
o=rand()%5+1;
mapb[i*4-2][4]=o;
gotoxy(o*4-2+80,4+10);
printf("%d",i);
}
///기존 링 출력
for(i=0; i<=4; i++)
{
gotoxy(52,14-i);
map[2][4-i]=5-i;
printf("%d",map[2][4-i]);
}
///맵 출력
for(i=0; i<=20; i++)
{
for(o=1; o<=4; o++)
{
gotoxy(i+15,o);
printf("%d",map[i][o]);
}
}
while(1)
{
///기존칸 옮기는 칸 출력
gotoxy(49,18);
printf(" ");
gotoxy(55,18);
printf("옮기는칸");
gotoxy(49,18);
scanf("%d",&la);
gotoxy(67,18);
scanf("%d",&lb);
///옮기는 칸의 맨 위의링 출력
for(i=0;i<=4;i++)
{
if(map[lb*4-2][i]!=0)
{
ll=map[lb*4-2][i];
}
}
///기존칸의 맨위의 링 L에저장 & 링삭재
for(i=0; i<=4; i++)
{
if(map[la*4-2][i]!=0)
{
if(map[la*4-2][i]>=ll)
{
gotoxy(la*4-2+50,i+10);
printf(" ");
l=map[la*4-2][i];
map[la*4-2][i]=0;
break;
}
}
}
///기존칸에 옮길 링이 있다면 옮기기
if(l>0)
{
for(i=4; i>=0; i--)
{
if(map[lb*4-2][i]==0)
{
gotoxy(lb*4-2+50,i+10);
printf("%d",l);
map[lb*4-2][i]=l;
break;
}
}
l=0;
}
///map출력
for(i=0; i<=20; i++)
{
for(o=0; o<=4; o++)
{
gotoxy(i+15,o);
printf("%d",map[i][o]);
}
}
}
}