#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define width 5
#define length 5
int pic[length][width], rpic[length][width], non[7][7];//전역변수는 무조건 0으로 초기화 됨
void mapbase(int *s);
void mapping(int s);
void move(char m);
void mapclear(int *s);
void snowmanbase(int *s);
int main()
{
int a, b, c, d, score = 0;
char m;
srand((unsigned)time(NULL));
mapbase(&score);
mapping(score);
while (1)
{
m = getch();
move(m);
system("cls");
mapping(score);
mapclear(&score);
}
return 0;
}
//맵에 값 넣어버리기 함수
void mapbase(int *s)
{
int a, b, number, x, y, a1[length][width], a2[length][width]/*,a3[length][width],a4[length][width],a5[length][width]*/;
//a1맵
a1[0][0] = 3; a1[0][1] = 2; a1[0][2] = 2; a1[0][3] = 2; a1[0][4] = 1;
a1[1][0] = 1; a1[1][1] = 2; a1[1][2] = 1; a1[1][3] = 2; a1[1][4] = 1;
a1[2][0] = 2; a1[2][1] = 2; a1[2][2] = 2; a1[2][3] = 2; a1[2][4] = 2;
a1[3][0] = 2; a1[3][1] = 1; a1[3][2] = 1; a1[3][3] = 1; a1[3][4] = 2;
a1[4][0] = 2; a1[4][1] = 2; a1[4][2] = 2; a1[4][3] = 2; a1[4][4] = 2;
//a2맵
a2[0][0] = 3; a2[0][1] = 1; a2[0][2] = 1; a2[0][3] = 1; a2[0][4] = 2;
a2[1][0] = 1; a2[1][1] = 1; a2[1][2] = 2; a2[1][3] = 1; a2[1][4] = 1;
a2[2][0] = 2; a2[2][1] = 1; a2[2][2] = 1; a2[2][3] = 1; a2[2][4] = 2;
a2[3][0] = 2; a2[3][1] = 2; a2[3][2] = 1; a2[3][3] = 2; a2[3][4] = 2;
a2[4][0] = 2; a2[4][1] = 2; a2[4][2] = 1; a2[4][3] = 2; a2[4][4] = 2;
//눈사람 맵
if (*s == 500)
{
non[5][0] = 3; non[5][1] = 2; non[5][2] = 2; non[5][3] = 2; non[5][4] = 2; non[5][5] = 2; non[5][6] = 3;
}
else if (*s == 1000)
{
non[4][0] = 2; non[4][1] = 2; non[4][2] = 2; non[4][3] = 2; non[4][4] = 2; non[4][5] = 2; non[4][6] = 2;
}
else if (*s == 1500)
{
non[3][0] = 3; non[3][1] = 2; non[3][2] = 2; non[3][3] = 2; non[3][4] = 2; non[3][5] = 2; non[3][6] = 3;
}
else if (*s == 2000)
{
non[2][0] = 3; non[2][1] = 3; non[2][2] = 2; non[2][3] = 2; non[2][4] = 2; non[2][5] = 3; non[2][6] = 3;
}
else if (*s == 2500)
{
non[1][0] = 3; non[1][1] = 2; non[1][2] = 1; non[1][3] = 2; non[1][4] = 1; non[1][5] = 2; non[1][6] = 3;
}
else if (*s == 3000)
{
non[0][0] = 3; non[0][1] = 3; non[0][2] = 2; non[0][3] = 2; non[0][4] = 2; non[0][5] = 3; non[0][6] = 3;
}
//맵이 랜덤으로 나오게 랜덤하수를 사용했다.
number = rand() % 2 + 1;
if (number == 1)
{
//표본맵
for (a = 0; a<length; a++)
{
for (b = 0; b<width; b++)
{
pic[a][b] = a1[a][b];
}
}
//사용자맵
for (a = 0; a<length; a++)
{
for (b = 0; b<width; b++)
{
y = rand() % length;
x = rand() % width;
if ((rpic[y][x] == 1) || (rpic[y][x] == 2) || (rpic[y][x] == 3))
{
--b;
}
//굳이 위에서 선언 안하고 여기서 하는 이유는 위에서 미리 선언하면 rpic[a][b](a=0,b=0)==3이기 때문에 --b로 무한루프가 되어버린다.
else if ((a == 0) && (b == 0))
{
rpic[a][b] = a1[a][b];
}
else
{
rpic[y][x] = a1[a][b];
}
}
}
}
if (number == 2)
{
//표본맵
for (a = 0; a<length; a++)
{
for (b = 0; b<width; b++)
{
pic[a][b] = a2[a][b];
}
}
//사용자맵
for (a = 0; a<length; a++)
{
for (b = 0; b<width; b++)
{
y = rand() % length;
x = rand() % width;
if ((rpic[y][x] == 1) || (rpic[y][x] == 2) || (rpic[y][x] == 3))
{
--b;
}
//굳이 위에서 선언 안하고 여기서 하는 이유는 위에서 미리 선언하면 rpic[a][b](a=0,b=0)==3이기 때문에 --b로 무한루프가 되어버린다.
else if ((a == 0) && (b == 0))
{
rpic[a][b] = a2[a][b];
}
else
{
rpic[y][x] = a2[a][b];
}
}
}
}
}
//맵핑함수
void mapping(int s)
{
int a, b, sa = 0;
printf("\n\t\t그림 맞추기!!");
printf("\n\n\t○○○○○○○ ○○○○○○○ ");
for (b = 0; b<6; b++)
{
if (non[sa][b] == 1)
{
printf("□");
}
else if (non[sa][b] == 2)
{
printf("■");
}
else if (non[sa][b] == 3)
{
printf(" ");
}
}
++sa;
printf("\n");
//표본맵 찍어버리기~
for (a = 0; a<length; a++)
{
printf("\t○");
for (b = 0; b<width; b++)
{
if (rpic[a][b] == 1)
{
printf("□");
}
else if (rpic[a][b] == 2)
{
printf("■");
}
else if (rpic[a][b] == 3)
{
printf(" ");
}
}
printf("○ ○");
//사용자 맵 찍어버리기~
for (b = 0; b<width; b++)
{
if (pic[a][b] == 1)
{
printf("□");
}
else if (pic[a][b] == 2)
{
printf("■");
}
else if (pic[a][b] == 3)
{
printf(" ");
}
}
printf("○");
printf(" ");
//눈사람 맵
for (b = 0; b<7; b++)
{
if (non[sa][b] == 1)
{
printf("□");
}
else if (non[sa][b] == 2)
{
printf("■");
}
else if (non[sa][b] == 3)
{
printf(" ");
}
}
printf("\n");
++sa;
}
printf("\t○○○○○○○ ○○○○○○○");
printf("\n\n\t 오른쪽 도형처럼 바꾸자!!\t\tscore : %d\n", s);
}
//이동 함수
void move(char m)
{
int a, b, c, ca, cb;
for (a = 0; a<length; a++)
{
for (b = 0; b<width; b++)
{
if (rpic[a][b] == 3)
{
ca = a;
cb = b;
}
}
}
if (m == 'w')
{
if (ca>0)
{
c = rpic[ca][cb];
rpic[ca][cb] = rpic[ca - 1][cb];
rpic[ca - 1][cb] = c;
}
}
else if (m == 'a')
{
if (cb>0)
{
c = rpic[ca][cb];
rpic[ca][cb] = rpic[ca][cb - 1];
rpic[ca][cb - 1] = c;
}
}
else if (m == 's')
{
if (ca<(length - 1))
{
c = rpic[ca][cb];
rpic[ca][cb] = rpic[ca + 1][cb];
rpic[ca + 1][cb] = c;
}
}
else if (m == 'd')
{
if (cb<(width - 1))
{
c = rpic[ca][cb];
rpic[ca][cb] = rpic[ca][cb + 1];
rpic[ca][cb + 1] = c;
}
}
}
//게임 클리어 했는지 맵 검사중~~
void mapclear(int *s)
{
int a, b, c, d;
for (a = 0; a<length; a++)
{
for (b = 0; b<width; b++)
{
if (rpic[a][b] != pic[a][b])
{
a = (length - 1);
break;
}
else if (a == (length - 1) && b == (width - 1) && (rpic[a][b] == pic[a][b]))
{
*s += 500;
for (c = 0; c<length; c++)
{
for (d = 0; d<width; d++)
{
rpic[c][d] = 0;
}
}
system("cls");
mapbase(s);
mapping(*s);
}
}
}
}
game.c.txt