#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 &를 먹을경우, 조이스틱이 반대로 된다.
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(50,10);
printf("이걸 못해? 수준 ㅉ");
move(55,5);
printf("꼬우면 잘하던가 ㅋ 30점 찍으면 인정한다 ㅋ");
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(50,50);
printf(" ?(-3점) : %2d %2d",mi,mj); //아이템 ?의 좌표 옆에 출력하기
move(60,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;
}
}
}
// 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);
}
}
*/