#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;
int bx,by;
void gotoxy(int x, int y)
{
COORD Pos = {(x - 1)*2, (y - 1)};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void view_border()
{
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("*");
}
}
}
}
void view_bank()
{
for(int bj=1;bj<=len+1;bj++)
{
for(int bi=40;bi<=len+40;bi++)
{
gotoxy(bi,bj);
if(bi==40||bj==1||bi==len+40||bj==len+1)
{
printf("*");
}
}
}
}
void view_map()
{
//플레이어출력
gotoxy(x,y);
printf("@");
//죽는아이템출력
gotoxy(ix,iy);
printf("~");
//힐아이템출력
gotoxy(hx,hy);
printf("⊙");
//목용탕처럼보이는은행같은상점출력
gotoxy(bx,by);
printf("♨");
}
void make_item()
{
ix = rand()%(len-2)+2;
iy = rand()%(len-2)+2;
}
void make_health_itme()
{
hx = rand()%(len-7)+3;
hy = rand()%(len-7)+3;
}
void make_bank()
{
bx=rand()%(len-7)+2;
by=rand()%(len-7)+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();
make_bank();
view_border();
view_map();
int aa,bb;
for (;;) {
if (_kbhit()) {//키보드 입력 확인 (true / false)
c = _getch();
if(c=='1')
{
lv+=2;
}
else if(c==' ')
{
if(you==1)
{
gotoxy(x-1,y); printf("` @"); Sleep(100);
gotoxy(x-2,y); printf("` ` @"); Sleep(100);
gotoxy(x-3,y); printf("` ` ` @"); Sleep(100);
gotoxy(x-3,y); printf(" ");
if(y==iy && x-1>=ix && ix>=x-3)
{
make_item();
rojan++;
}
}
if(you==2)
{
gotoxy(x,y); printf("@ `"); Sleep(100);
gotoxy(x,y); printf("@ ` `"); Sleep(100);
gotoxy(x,y); printf("@ ` ` `"); Sleep(100);
gotoxy(x,y); printf("@ ");
// 총알이 ~에 맞으면
if(y==iy && x+1<=ix && ix<=x+3)
{
make_item();
rojan++;
}
}
}
else if (c == -32) { //방향키입력했을때
c = _getch();
aa=x; bb=y;
switch (c) {
case LEFT:
you=1;
if(x-1>4) x-=1;
break;
case RIGHT:
you=2;
if(x+1<len-3) 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();
view_border();
make_health_itme();
}
if(x==bx&&y==by)
{
view_bank();
}
if(rojan==5)
{
lv++;
rojan=0;
}
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");
view_border();
make_item();
h=1;
lv=0;
rojan=0;
}
else
{
disappearhp();
h--;
make_item();
view_border();
}
}
view_map();
gotoxy(aa,bb); //플레이어가원래있떤곳
printf(" ");
gotoxy(2,35); printf("규칙:~에 닿으면 죽음,⊙에닿으면 체력++,체력은 최대 5개\n");
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);
printf("건물의 위치:bx = %2d by = %2d \n",bx,by);
if(h==1)
{
gotoxy(2,36);printf("생명:⊙◎◎◎◎\n");
}
else if(h==2)
{
gotoxy(2,36);printf("생명:⊙⊙◎◎◎\n");
}
else if(h==3)
{
gotoxy(2,36);printf("생명:⊙⊙⊙◎◎\n");
}
else if(h==4)
{
gotoxy(2,36);printf("생명:⊙⊙⊙⊙◎\n");
}
else if(h==5)
{
gotoxy(2,36);printf("생명:⊙⊙⊙⊙⊙\n");
}
gotoxy(20,36); printf("lv.%d,로젠:%d",lv,rojan);
}
}
}
/**
2023.11.16 숙제
1. 좌우로 총쏘기
2. 총쏴서 ~를 맞추면 ~ 없애기
3. ~을 잡으면 '로젠'이 늘고,'로젠'을 많이모으면 레벨업을 함
4. 레벨을 지불하면 다른 곳이나 건물에 들어갈수있음
5. 건물에서도 레벨을 지불하면 돈을범
6. 돈으로 총을 업글 가능함
7. '모아은행'에서 돈을 저장하고 나중에 받을수 있음(꺼낼때는 2배(물론 나중에 꺼낼수 있음))
8. 모아은행에서 돈을빌리고 나중에 갚을수 있음(갚는건 절반)
9. 죽으면 코인,레벨을 잃음
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(" 총:최강같은총");
**/