/*
#include <stdlib.h>
#include <windows.h>
void make_item()
{
int a = rand()%10; // 0 ~ 9의 랜덤 정수 만들기
int b = rand()%10;
printf("%d %d\n",a,b);
}
int main()
{
srand(time(NULL));
make_item();
make_item();
make_item();
make_item();
return 0;
}
*/
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
// 상하좌우 상수값 설정
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
int map[50][50] = {0};
int px=2, py=2; // 플레이어의 위치
int ix,iy,jx,jy;
int score=0;
void textcolor(int colorNum) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), colorNum);
}
void gotoxy(int x, int y)
{
COORD Pos = {x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
void make_map()
{
int i, j;
// 1. 바깥쪽
for(i=0;i<40;i++){
map[i][0]=1;
map[0][i]=1;
map[i][39]=1;
map[39][i]=1;
}
for(i=0;i<10;i++){
//y좌표 x좌표
map[13][i+2]=1;
map[26][i+13]=1;
map[13+i][10]=1;
map[23][10+i]=1;
map[26+i][10]=1;
map[0+i][27]=1;
map[11][21+i]=1;
map[11+i][27]=1;
map[25+i][20]=1;
map[3+i][37]=1;
}
for(i=0; i<=5; i++){
map[32+i][37]=1;
map[21][34+i]=1;
map [13][28+i]=1;
map [12+i][10]=1;
map[21+i][23]=1;
map[2+i][10]=1;
map[4][12+i]=1;
map[4+i][14]=1;
map[6+i][30]=1;
map[9+i][23]=1;
map[2][17+i]=1;
map[4+i][19]=1;
map[4][19+i]=1;
map[7][16+i]=1;
map[9+i][34]=1;
map[27+i][37]=1;
map[23][30+i]=1;
map[23][3+i]=1;
map[29][11+i]=1;
map[21+i][4]=1;
map[2][32+i]=1;
map[3+i][32]=1;
map[13+i][37]=1;
map[16][25+i]=1;
map[26+i][2]=1;
map[26][2+i]=1;
}
for(i=0; i<=3; i++){
map[12+i][16]=1;
map[15][12+i]=1;
map[10][10+i]=1;
map[10+i][9]=1;
map[9][14+i]=1;
map[12][11+i]=1;
map[12+i][10]=1;
map[14+i][32]=1;
map[13+i][23]=1;
map[12][16+i]=1;
map[8][8+i]=1;
map[2+i][4]=1;
map[6][2+i]=1;
map[2+i][6]=1;
map[3][6]=1;
map[2][7+i]=1;
/// 색 바꾸기 모름 map[38+i][37]=5;
map[32+i][28]=1;
map[20][30+i]=1;
textcolor(9);
map[21][24+i]=1;
textcolor(9);
map[19][23+i]=1;
map[16+i][18]=1;
map[11][23+i]=1;
map[3+i][14]=1;
map[23+i][13]=1;
}
}
void print_map()
{
int i, j,n=0;
gotoxy(0,0);
textcolor(9);
for(i=0 ; i<40 ; i++)
{
for(j=0 ; j<40 ; j++)
{
if(map[i][j]==1)
{
printf("*");
}
// else if(map[i][j]==5)
// {
// printf("*");
// }
else
{
printf(" ");
}
}
printf("\n");
}
gotoxy(2+i,2);
textcolor(5);
printf("x : %d",n);
textcolor(9);
}
//a : 0 1 2 3 4 5 6 7 8 9 10 11 12
//a%5 : 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4
void make_item()
{
ix = rand()%35; // 0 ~4만정도? ->
iy = rand()%35;
while(map[iy][ix]!=0)
{
ix = rand()%35;
iy = rand()%35;
}
gotoxy(ix,iy);
map[iy][ix]=10; // 1 점짜리 아이템
textcolor(12);
printf("!");
gotoxy(ix,iy);
}
void make_item2()
{
jx = rand()%35;
jy = rand()%35;
while(map[jy][jx]!=0)
{
jx = rand()%35;
jy = rand()%35;
}
gotoxy(jx,jy);
map[jy][jx]=11;
textcolor(14);
printf("@");
gotoxy(jx,jy);
}
void view_score()
{
gotoxy(42,2);
textcolor(5);
printf("score : %2d",score);
textcolor(9);
}
void start_setting()
{
make_map();
print_map();
srand(time(NULL)); // 랜덤 수를 만들때 시간을 기준으로 만드세요
make_item();
make_item2();
textcolor(10);
gotoxy(px,py); printf("#");
textcolor(9);
view_score();
}
int main(void)
{
char c;
start_setting();
for (;;)
{
if (_kbhit()) //키보드 입력 확인 (true / false)
{
c = _getch(); // 방향키 입력시 224 00이 들어오게 되기에 앞에 있는 값 224를 없앰
if(c==' ') make_item();
if (c == -32) // -32로 입력되면
{
c = _getch(); // 새로 입력값을 판별하여 상하좌우 출력
gotoxy(px,py); printf(" "); // 플레이어가 있던 곳 지우기
if(c==LEFT)
{
if(map[py][px-1]!=1) px--;
}
else if(c==RIGHT)
{
if(map[py][px+1]!=1) px++;
}
else if(c==UP)
{
if(map[py-1][px]!=1) py--;
}
else
{
if(map[py+1][px]!=1) py++;
}
if(map[py][px]==10)//item을 먹었다면
{
map[py][px]=0;
gotoxy(px,py);
printf(" ");
score=score+1;
view_score();
make_item();
}
if(map[py][px]==11)
{
map[py][px]=0;
gotoxy(px,py);
printf(" ");
score=score+10;
view_score();
make_item2();
}
textcolor(10);
gotoxy(px,py); printf("#"); // 플레이어의 위치에 가서 출력하기
textcolor(9);
}
}
}
return 0;
}