#include <stdio.h> // 입출력문 printf, scanf 사용하기 위한 헤더
#include <windows.h> // move 사용하기위한 헤더
#include <conio.h> //_getch가 포함되어있는 헤더
#include <stdlib.h>
#include <time.h>
void move(int i, int j)
{
COORD Pos;
Pos.X = j;
Pos.Y = i;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void map()
{
int i,j,cnt=0;
move(3,3);
for(i=3;i<=40;i++)
{
move(i,3);
for(j=3;j<=40;j++)
{
if(i==3 || j==3|| i==40 || j==40)
{
printf("*");
}
else
{
printf(" ");
}
}
}
}
//i't'em=ti,tj
int main()
{
int mode = 0; // 0 wasd위왼아오 , 1 sdwa위왼아오
int pi=5, pj=5; // player의 위치
int ti,tj; // item $의 위치
int ai,aj; // 'a'ddress(item @의 위치)
int mi,mj; //마이너스의 m임!(item ?의 위치)
int ci,cj; //item &의 위치 // item &를 먹을경우, 조이스틱이 반대로 된다.
int ri,rj; //item #의 위치 // item #을 먹을 경우, 모든 아이템의 위치가 랜덤으로 바뀐다.
srand(time(NULL));
// 플레이어 점수
int cnt=0;
//배경 출력
map();
//플레이어 출력
move(pi,pj);
printf("*");
// 아이템 랜덤 위치 정하고 출력
ti = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
tj = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
move(ti,tj);
printf("$");
ai=rand()%36+4;
aj=rand()%36+4;
move(ai,aj);
printf("@");
mi=rand()%36+4;
mj=rand()%36+4;
move(mi,mj);
printf("?");
ci=rand()%36+4;
cj=rand()%36+4;
move(ci,cj);
printf("&");
// 현재 상태 나타내기
move(5,50);
printf("이걸 못해? 수준 ㅉ");
move(7,50);
printf("꼬우면 잘하던가 ㅋ 10점 찍으면 인정한다 ㅋ");
move(10,50);
printf(" coordinate(*의 좌표) : %2d %2d",pi,pj);
move(20,50);
printf(" score(점수) : %d",cnt);
move(30,50);
printf(" $(+1점) : %d %d",ti,tj); //아이템 $의 좌표 옆에 출력하기
move(40,50);
printf(" @(+2점) : %2d %2d",ai,aj); // 아이템 @의 좌표 옆에 출력하기
move(45,50);
printf(" ?(-3점) : %2d %2d",mi,mj); //아이템 ?의 좌표 옆에 출력하기
move(25,50);
printf(" &(방향키 반대로 ㅋ) : %d %d",ci,cj); //item&의 좌표 옆에 출력하기!!
// 플레이어 이동 시작
for(;;)
{
// 키보드 입력받기
char x = _getch();
move(pi,pj);
printf(" ");
// 입력받은 문자에 따라 플레이어 위치 이동하기
if (mode==0)
{
if(x=='w')
{
if(pi>=5) pi--;
}
else if(x=='a')
{
if(pj>=5)pj--;
}
else if(x=='s')
{
if(pi<=38)pi++;
}
else if(x=='d')
{
if(pj<=38)pj++;
}
}
else
{
if(x=='s')
{
if(pi>=5) pi--;
}
else if(x=='d')
{
if(pj>=5)pj--;
}
else if(x=='w')
{
if(pi<=38)pi++;
}
else if(x=='a')
{
if(pj<=38)pj++;
}
}
// 이동된 위치에서 플레이어 출력하기
move(pi,pj);
printf("*");
if(pi==ti && pj==tj) // item 먹었으면
{
cnt=cnt+1;
// 새로운 곳에 아이템을 생성
ti = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
tj = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
move(ti,tj);
printf("$");
}
else if(pi==ai && pj==aj)
{
cnt=cnt+2; //아이템을 먹었을때 2점을 획득
ai=rand()%36+4;
aj=rand()%36+4;
move(ai,aj);
printf("@");
}
else if(pi==mi && pj==mj)
{
cnt=cnt-3; //아이템을 먹었을때 3점 감점
if(cnt<3)
{
cnt=0;
}
mi=rand()%36+4;
mj=rand()%36+4;
move(mi,mj);
printf("?");
}
else if(pi==ci && pj==cj)
{
mode = 1;
}
move(10,50);
printf(" coordinate(*의 좌표) : %2d %2d",pi,pj);
move(20,50);
printf(" score(점수) : %d",cnt);
move(30,50);
printf(" $(+1점) : %d %d",ti,tj); //아이템 $의 좌표 옆에 출력하기
move(40,50);
printf(" @(+2점) : %2d %2d",ai,aj); // 아이템 @의 좌표 옆에 출력하기
move(45,50);
printf(" ?(-3점) : %2d %2d",mi,mj); //아이템 ?의 좌표 옆에 출력하기
move(25,50);
printf(" &(방향키 반대로 ㅋ) : %d %d",ci,cj); //item&의 좌표 옆에 출력하기!!
if(cnt>=2)
{
break;
}
}
system("cls");
move(20,20);
printf("1라운드 통과하셨습니다!!");
move(21,20);
printf("스페이스 키를 누르시면 2라운드로 넘어갑니다");
char y=_getch();
if(y==' ')
{
system("cls");
mode = 0; // 0 wasd위왼아오 , 1 sdwa위왼아오
pi=5, pj=5; // player의 위치
srand(time(NULL));
// 플레이어 점수
cnt=0;
//배경 출력
map();
//플레이어 출력
move(pi,pj);
printf("*");
// 아이템 랜덤 위치 정하고 출력
ti = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
tj = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
move(ti,tj);
printf("$");
ai=rand()%36+4;
aj=rand()%36+4;
move(ai,aj);
printf("@");
mi=rand()%36+4;
mj=rand()%36+4;
move(mi,mj);
printf("?");
ci=rand()%36+4;
cj=rand()%36+4;
move(ci,cj);
printf("&");
ri=rand()%36+4;
rj=rand()%36+4;
move(ri,rj);
printf("#");
// 현재 상태 나타내기
move(5,50);
printf("이걸 못해? 수준 ㅉ");
move(7,50);
printf("꼬우면 잘하던가 ㅋ 10점 찍으면 인정한다 ㅋ");
move(10,50);
printf(" coordinate(*의 좌표) : %2d %2d",pi,pj);
move(20,50);
printf(" score(점수) : %d",cnt);
move(30,50);
printf(" $(+1점) : %d %d",ti,tj); //아이템 $의 좌표 옆에 출력하기
move(40,50);
printf(" @(+2점) : %2d %2d",ai,aj); // 아이템 @의 좌표 옆에 출력하기
move(45,50);
printf(" ?(-3점) : %2d %2d",mi,mj); //아이템 ?의 좌표 옆에 출력하기
move(25,50);
printf(" &(방향키 반대로 ㅋ) : %d %d",ci,cj); //item&의 좌표 옆에 출력하기!!
move(47,50);
printf(" #(아이템들의 위치가 랜덤으로 초기화) :%d %d",ri,rj); //item#의 좌표 옆에 출력하기!!
for(;;)
{
// 키보드 입력받기
char x = _getch();
move(pi,pj);
printf(" ");
// 입력받은 문자에 따라 플레이어 위치 이동하기
if (mode==0)
{
if(x=='w')
{
if(pi>=5) pi--;
}
else if(x=='a')
{
if(pj>=5)pj--;
}
else if(x=='s')
{
if(pi<=38)pi++;
}
else if(x=='d')
{
if(pj<=38)pj++;
}
}
else
{
if(x=='s')
{
if(pi>=5) pi--;
}
else if(x=='d')
{
if(pj>=5)pj--;
}
else if(x=='w')
{
if(pi<=38)pi++;
}
else if(x=='a')
{
if(pj<=38)pj++;
}
}
// 이동된 위치에서 플레이어 출력하기
move(pi,pj);
printf("*");
if(pi==ti && pj==tj) // item 먹었으면
{
cnt=cnt+1;
// 새로운 곳에 아이템을 생성
ti = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
tj = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
move(ti,tj);
printf("$");
}
else if(pi==ai && pj==aj)
{
cnt=cnt+2; //아이템을 먹었을때 2점을 획득
ai=rand()%36+4;
aj=rand()%36+4;
move(ai,aj);
printf("@");
}
else if(pi==mi && pj==mj)
{
cnt=cnt-3; //아이템을 먹었을때 3점 감점
if(cnt<3)
{
cnt=0;
}
mi=rand()%36+4;
mj=rand()%36+4;
move(mi,mj);
printf("?");
}
else if(pi==ci && pj==cj)
{
mode = 1;
}
else if(pi==ri && pj==rj)
{
move(ti,tj);
printf(" ");
ti = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
tj = rand()%36+4; // 4 ~ 39 사이의 랜덤수 생성
move(ti,tj);
printf("$");
move(ai,aj);
printf(" ");
ai=rand()%36+4;
aj=rand()%36+4;
move(ai,aj);
printf("@");
move(mi,mj);
printf(" ");
mi=rand()%36+4;
mj=rand()%36+4;
move(mi,mj);
printf("?");
move(ci,cj);
printf(" ");
ci=rand()%36+4;
cj=rand()%36+4;
move(ci,cj);
printf("&");
ri=rand()%36+4;
rj=rand()%36+4;
move(ri,rj);
printf("#");
}
move(10,50);
printf(" coordinate(*의 좌표) : %2d %2d",pi,pj);
move(20,50);
printf(" score(점수) : %d",cnt);
move(30,50);
printf(" $(+1점) : %d %d",ti,tj); //아이템 $의 좌표 옆에 출력하기
move(40,50);
printf(" @(+2점) : %2d %2d",ai,aj); // 아이템 @의 좌표 옆에 출력하기
move(45,50);
printf(" ?(-3점) : %2d %2d",mi,mj); //아이템 ?의 좌표 옆에 출력하기
move(25,50);
printf(" &(방향키 반대로 ㅋ) : %d %d",ci,cj); //item&의 좌표 옆에 출력하기!!
move(47,50);
printf(" #(아이템들의 위치가 랜덤으로 초기화) :%d %d",ri,rj); //item#의 좌표 옆에 출력하기!!
if(cnt>=20)
{
break;
}
}
}
}
// hw : 일정 점수가 넘어가면 라운드 상승 ( 어려워지도록, 두칸식움직여.. 감점 아이템 늘어나... 5번안에 못가면 아이템위치바껴 ,,,,,, )
//라운드와 라운드 사이에 ( 시각적인요소 라운드1 통과 라운드 2 시작 )
/*
#include <stdio.h>
int main()
{
srand(time(NULL));0
for(int i=0;i<10;i++)
{
//int x = rand(); // 0 ~ 324742 사이의 랜덤수
int x = rand()%10+1;
printf("%d ",x);
}
}*/