#include<stdio.h>
#include<windows.h>
#include <stdlib.h> //srand, rand를 사용하기 위한 헤더파일
#include <time.h> // time을 사용하기 위한 헤더파일
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
int len=30;
int ix, iy; //item의 위치
int x=15;
int y=15;
int hx,hy;
int h=1;
int mx,my;
int you;
int die=0;
int rojan=0;
int lv=0;
void gotoxy(int x, int y)
{
COORD Pos = {(x - 1)*2, (y - 1)};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void view_map()
{
for(int j=1;j<=len;j++)
{
for(int i=1;i<=len;i++)
{
gotoxy(i,j);
if(i==1||j==1||i==len||j==len)
{
printf("*");
}
else if(i==x&&j==y){
printf("@");
}
else if(i==ix&&j==iy ){
printf("~");
}
else if(i==hx&&j==hy)
{
printf("⊙");
}
else
{
printf(" ");
}
}
}
}
void make_item()
{
ix = rand()%(len-2)+2;
iy = rand()%(len-2)+2;
}
void make_health_itme()
{
hx = rand()%(len-2)+2;
hy = rand()%(len-2)+2;
}
void disappearhp()
{
system("cls");
Sleep(100);
gotoxy(x,y);printf("-");
Sleep(100);
gotoxy(x,y);printf("-1");
Sleep(100);
gotoxy(x,y);printf("-1.");
Sleep(100);
gotoxy(x,y);printf("-1..");
Sleep(100);
gotoxy(x,y);printf("-1...");
Sleep(1000);
system("cls");
make_item();
}
void plushp()
{
system("cls");
Sleep(100);
gotoxy(x,y);printf("+");
Sleep(100);
gotoxy(x,y);printf("+1");
Sleep(100);
gotoxy(x,y);printf("+1!");
Sleep(1000);
system("cls");
make_health_itme();
}
int main()
{
system( "mode con lines=55 cols=110" );
int dir=0,n;
char c;
srand(time(NULL));
make_item();
make_health_itme();
view_map();
for (;;) {
if (_kbhit()) {//키보드 입력 확인 (true / false)
if(c=='1')
{
lv+=4;
}
if(c==' ')
{
if(you=1)
{
die=1;
gotoxy(x,y); printf(" ` @"); Sleep(100);
gotoxy(x,y); printf(" ` ` @"); Sleep(100);
gotoxy(x,y); printf("` ` ` @"); Sleep(100);
}
if(you=2)
{
gotoxy(x,y); printf("@ `"); Sleep(100);
gotoxy(x,y); printf("@ ` `"); Sleep(100);
gotoxy(x,y); printf("@ ` ` `"); Sleep(100);
die=0;
}
}
c = _getch();
if (c == -32) { //방향키입력했을때
c = _getch();
switch (c) {
case LEFT:
you=1;
if(x-1>1) x-=1;
break;
case RIGHT:
you=2;
if(x+1<len) x+=1;
break;
case UP:
if(y-1>1) y-=1;
break;
case DOWN:
if(y+1<len) y+=1;
break;
}
}
if(x==hx&&y==hy && h<5)
{
h+=1;
plushp();
make_health_itme();
}
if(ix-2==x||ix+2==x)
{
if(die==1)
{
make_item();
rojan++;
}
}
if(x==ix&&y==iy) //만나면 바로쥬금 -> 수정
{
if(h==1)
{
system("cls");
Sleep(500);
gotoxy(x,y); printf("@=Die");
Sleep(500);
system("cls");
Sleep(500);
gotoxy(x,y); printf("@=Die");
Sleep(500);
system("cls");
Sleep(500);
gotoxy(x,y); printf("FALL");
Sleep(2000);
system("cls");
make_item();
h=1;
lv==0;
}
else
{
disappearhp();
h--;
make_item();
}
}
view_map();
gotoxy(2,52); printf("플레이어위치 : x = %2d y = %2d \n",x,y);
printf("아이템의위치 : ix = %2d iy = %2d \n",ix,iy);
printf("힐아이템의위치:hx = %2d hy = %2d \n",hx,hy);
if(h==1)
{
printf("생명:⊙◎◎◎◎");
}
else if(h==2)
{
printf("생명:⊙⊙◎◎◎");
}
else if(h==3)
{
printf("생명:⊙⊙⊙◎◎");
}
else if(h==4)
{
printf("생명:⊙⊙⊙⊙◎");
}
else if(h==5)
{
printf("생명:⊙⊙⊙⊙⊙");
}
printf(" lv.%d",lv);
if(lv==0)
printf(" 총:구닥다리총");
else if(lv==1)
printf(" 총:싸구려의총");
else if(lv==2)
printf(" 총:그냥진짜총");
else if(lv==3)
printf(" 총:로빈훗의활");
else if(lv==4)
printf(" 총:기관총총총");
else if(lv==1022)
printf(" 총:이하진의총");
else
printf(" 총:최강같은총");
}
}
}
/**
2023.11.16 숙제
1. 좌우로 총쏘기
2. 총쏴서 ~를 맞추면 ~ 없애기
3. ~을 잡으면 '로젠'이 늘고,'로젠'을 많이모으면 레벨업을 함
4. 레벨을 지불하면 다른 곳이나 건물에 들어갈수있음
5. 건물에서도 레벨을 지불하면 돈을범
6. 돈으로 총을 업글 가능함
7. '모아은행'에서 돈을 저장하고 나중에 받을수 있음(꺼낼때는 2배(물론 나중에 꺼낼수 있음))
8. 모아은행에서 돈을빌리고 나중에 갚을수 있음(갚는건 절반)
9. 죽으면 코인,레벨을 잃음
**/