/*
#include <stdio.h> // 입출력문 printf, scanf 사용하기 위한 헤더
#include <windows.h> // move 사용하기위한 헤더
#include <conio.h> //_getch가 포함되어있는 헤더
#include <stdlib.h>
#include <time.h>
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 #을 먹을 경우, 모든 아이템의 위치가 랜덤으로 바뀐다.
int si,sj; //item -의 위치// item -을 먹을 경우, 두칸씩 이동한다.
int hi,hj; //item !의 위치// item !을 먹을 경우, 1라운드로 돌아간다.
int speed=1;
int cnt=0;
int round=1;
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(" ");
}
}
}
}
void restart()
{
round=1;
cnt=0;
}
void init(){
system("cls");
//배경 출력
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(15,50);
printf(" score(점수) : %d",cnt);
move(25,50);
printf(" $(+1점) : %d %d",ti,tj); //아이템 $의 좌표 옆에 출력하기
move(30,50);
printf(" @(+2점) : %2d %2d",ai,aj); // 아이템 @의 좌표 옆에 출력하기
move(35,50);
printf(" ?(-3점) : %2d %2d",mi,mj); //아이템 ?의 좌표 옆에 출력하기
move(20,50);
printf(" &(방향키 반대로 ㅋ) : %d %d",ci,cj); //item&의 좌표 옆에 출력하기!!
if(round==2)
{
hi=rand()%36+4;
hj=rand()%36+4;
move(hi,hj);
printf("!");
si=rand()%36+4;
sj=rand()%36+4;
move(si,sj);
printf("-");
ri=rand()%36+4;
rj=rand()%36+4;
move(ri,rj);
printf("#");
move(35,50);
printf(" #(아이템들의 위치가 랜덤으로 초기화) :%d %d",ri,rj); //item#의 좌표 옆에 출력하기!!
move(45,50);
printf(" -(아이템을 먹엇을 때 두칸씩 이동) :%d %d",si,sj); //item-의 좌표 옆에 출력하기!!
move(47,50);
printf(" !(아이템을 먹엇을때 1라운드로 초기화): %d %d",hi,hj);
}
}
//i't'em=ti,tj
int main()
{
system("mode con:cols=110 lines=100");
int mode = 0; // 0 wasd위왼아오 , 1 sdwa위왼아오
int cnt=0; //점수
int ss=0;
srand(time(NULL));
// 플레이어 점수
init();
// 플레이어 이동 시작
for(;;)
{
// 키보드 입력받기
char x = _getch();
move(pi,pj);
printf(" ");
// 입력받은 문자에 따라 플레이어 위치 이동하기
if (mode==0) //좌우반전모드
{
if(x=='w')
{
if(pi-1*speed>3) pi=pi-1*speed;
}
else if(x=='a')
{
if(pj-1*speed>3)pj=pj-1*speed;
}
else if(x=='s')
{
if(pi+1*speed<40)pi=pi+1*speed;
}
else if(x=='d')
{
if(pj+1*speed<40)pj=pj+1*speed;
}
}
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) // reverse 아이템
{
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("#");
if(ss==0)
{
move(si,sj);
printf(" ");
si=rand()%36+4;
sj=rand()%36+4;
move(si,sj);
printf("-");
}
}
else if(pi==si && pj==sj)
{
speed=2;
ss=1;
}
else if(pi==hi && pj==hj)//1라운드로 초기화 !
{
restart();
init();
}
move(10,50);
printf(" coordinate(*의 좌표) : %2d %2d",pi,pj);
move(15,50);
printf(" score(점수) : %d",cnt);
move(25,50);
printf(" $(+1점) : %d %d",ti,tj); //아이템 $의 좌표 옆에 출력하기
move(30,50);
printf(" @(+2점) : %2d %2d",ai,aj); // 아이템 @의 좌표 옆에 출력하기
move(35,50);
printf(" ?(-3점) : %2d %2d",mi,mj); //아이템 ?의 좌표 옆에 출력하기
move(20,50);
printf(" &(방향키 반대로 ㅋ) : %d %d",ci,cj); //item&의 좌표 옆에 출력하기!!
if(round==2)
{
move(40,50);
printf(" &(방향키 반대로 ㅋ) : %d %d",ci,cj); //item&의 좌표 옆에 출력하기!!
move(35,50);
printf(" #(아이템들의 위치가 랜덤으로 초기화) :%d %d",ri,rj); //item#의 좌표 옆에 출력하기!!
move(45,50);
printf(" -(아이템을 먹엇을 때 두칸씩 이동) :%d %d",si,sj); //item-의 좌표 옆에 출력하기!!
move(47,50);
printf(" !(아이템을 먹엇을때 1라운드로 초기화): %d %d",hi,hj);
}
if(round==1 && cnt>=2)
{
round++;
system("cls");
move(20,20);
printf("1라운드 통과하셨습니다!!");/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
move(21,20);
printf("스페이스 키를 누르시면 2라운드로 넘어갑니다");
char y=_getch();
if(y==' ') {
system("cls");
init();
continue;
}
}
}
}
자료구조 ->
자료 -> int a =10; a-> 자료
/*
#include <stdio.h>
int stack[1005]={};
int top=-1; // top : 마지막 데이터의 "위치" /// top==-1 -> stack이 비어있다
void push(int x)
{
top++;
stack[ top ] = x;
}
void pop()
{
printf("%d ",stack[top]);
top--;
}
int main()
{
int i, a, n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
push(a); //a를 스택에 push
}
// stack에서 pop
//스택에 있는 값 모두 (보기)
// for(i=0;i<=top;i++)
// {
// printf("stack[%d] : %d\n",i,stack[i]);
// }
//스택에 있는 값 모두 (빼기 pop) + (보기)
while(top != -1)
{
printf("%d ",stack[top]);
top--;
}
return 0;
}
*/
#include <stdio.h>
int stack[1005]={};
int top=-1;
void push(int b)
{
top++;
stack[top]=b;
}
void pop()
{
printf("%d ",stack [top]);
top--;
}
int main()
{
int i,a,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
push(a);
}
while(top!=-1)
{
pop(a);
}
return 0;
}
*/