조회 수 1101 추천 수 0 댓글 0

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>

void printstr(int d)
{
     int space=0;
     int wall=1;
     int inwall=4;
     int my=2;
     int you=3;
     int move=5;
     int setcolor[10]={1,8,13,10,15,15,15};
    
     HANDLE hConsole;

     hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
     SetConsoleTextAttribute(hConsole, setcolor[d]);

     char str[10][3]={"  ","■","●","●","▧","◈","●"};
     printf("%s",&str[d][0]);
}//printstr
   
int lencheak(int maxlen)
{
    int i=1;
   
    for(i=1;i*i<maxlen;i++);
   
    return i-1;
}//lencheak
void right(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
     if(arr[*x][(*y)+1]==inwall || arr[*x][(*y)+1]==wall)
     {}
     else
     {
         *remember=arr[(*x)][++(*y)];
     }
}//right
void left(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
     if(arr[*x][(*y)-1]==inwall || arr[*x][(*y)-1]==wall)
     {}
     else
     {
        
         *remember=arr[(*x)][--(*y)];
     }
}//left
void up(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
     if(arr[(*x)-1][*y]==inwall || arr[(*x)-1][*y]==wall)
     {}
     else
     {
         *remember=arr[--(*x)][(*y)];
     }
}//up
void down(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
     if(arr[(*x)+1][*y]==inwall || arr[(*x)+1][*y]==wall)
     {}
     else
     {  
         *remember=arr[++(*x)][(*y)];
     }
}//up
void movef(int cur,int arr[100][100],int *x,int *y,int inwall, int wall,int *remember,int *zhit,int *zx,int *zy)
{  

    switch(cur)
    {
    case 77:
        
         right(arr,x,y,inwall,wall,remember);
         break;
    case 75:
        
         left(arr,x,y,inwall,wall,remember);
         break;   
    case 72:
        
         up(arr,x,y,inwall,wall,remember);
         break;        
    case 80:
        
         down(arr,x,y,inwall,wall,remember);
         break;        
    
}
}   
void movez(int cur,int arr[100][100],int *x,int *y,int inwall, int wall,int *zremember,int *zhit,int *zx,int *zy)
{
     if(*zhit==0) *zhit=1;
     else
     {   
          *zhit=0;
          arr[*x][*y]=*zremember;
          }
    
    
     *zx=*x;
     *zy=*y;
     *zremember=arr[*x][*y];
     printf("제트리멤버 %d",*zremember);
     system("pause");
}
  
int main(void)
{
    int x;
    int y;
    int ch;
    int i;
    int j;
    int maxlen;
    int stagenum;
    int arr[100][100];
    char cur=-32;
    char oldcur;
    int space=0;
    int wall=1;
    int inwall=4;
    int my=2;
    int you=3;
    int move=5;
    int remember=space;
    int zx=0;
    int zy=0;
    int zhit=0;
    int zremember=0;

    FILE *fp=fopen("stage1.txt","r");
    if(fp==NULL)
    {  
        puts("파일오픈 실패!");
        return -1;
        }
   
    fscanf(fp,"%d", &maxlen);
    fscanf(fp,"%d", &stagenum);

   
    //데이터 읽음.   
    for(i=0;i<lencheak(maxlen);i++)
    {
         for(j=0;j<lencheak(maxlen);j++)
         {
             fscanf(fp,"%d", &ch);
             arr[i][j]=ch;
         }
    }
   
    //커서 세팅.
    x=lencheak(maxlen)/2;
    y=x;
    arr[x][y]=5;
   
   
   
    while(1)
    {
           
            system("cls");
    //데이터 출력.
    for(i=0;i<lencheak(maxlen);i++)
    {   
         for(j=0;j<lencheak(maxlen);j++)
         {   
              if(zhit==1 && zx==i && zy==j) printstr(6);
              else
              printstr(arr[i][j]);
         }
             
         printf("\n");
         }

         for(;;)
         {
              if(cur!=-32)
              oldcur=cur;
       
              cur=getch();
       
              if(cur!=-32)
              break;
        }
       
        arr[x][y]=remember;
        if((cur=='z' && arr[x][y]!=space) || (cur=='z' && zhit==1))
        movez(cur,arr,&x,&y,inwall,wall,&zremember,&zhit,&zx,&zy);
        else              
        movef(cur,arr,&x,&y,inwall,wall,&remember,&zhit,&zx,&zy);
       
        arr[x][y]=move;
       
    }//while end
 
    fclose(fp);
    system("pause");
    return 0;
}



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. 좋은아빠되기 2019.02.15 298
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1075
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2391
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10284
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4713
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8243
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 18950
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 37839
110 별표 잡아먹기 killerjack 2014.05.17 1195
109 별을 다이아모양으로 출력하기 killerjack 2014.05.03 2072
108 별로 다이아 껍데기만 출력하기 killerjack 2014.05.03 1344
107 버블정렬 killerjack 2014.03.15 2011
106 배열을 사용하지 않고 A(a) B(b) C(c) ....Z(z) 까지 출력 하시오 좋은아빠되기 2013.08.11 2564
105 배열2 형성평가 3 갓초딩 2017.04.01 203
104 배열2 자가진단2 선우 2016.05.07 184
103 배열2 자가진단 6 선우 2016.05.07 172
102 배열1정올 문제(승민) 승민 2016.04.02 177
101 배열1 최소 최대 선우 2016.04.02 150
100 배열1 자가진단8 선우 2016.04.02 218
99 배열1 자가진단5 선우 2016.04.02 228
98 배열1 자가진단2 (승민) 승민 2016.04.02 145
97 배열1 자가진단 9 선우 2016.04.02 185
96 배열 작은 정수 구하기(승민) 승민 2016.04.16 179
95 배열 양수1이상 100미만 최댓값 100이상 10000미만 최솟값 선우 2016.04.02 192
94 배열 5개숫자 더히가(승민) 승민 2016.03.26 108
93 배열 3가지 선우 2016.03.19 102
92 배열 하품팬더 2014.03.08 1894
91 반올림(수정) 1 file 박윤택 2014.08.18 421
Board Pagination Prev 1 ... 16 17 18 19 20 21 22 23 24 25 26 Next
/ 26