2014.05.24 12:46

작대기 그리기 함수

조회 수 936 추천 수 0 댓글 0

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void show(int arr[10][10])
{
     system("cls");
     int i,j;
     for(i=0;i<10;i++)
    { 
       for(j=0;j<10;j++)
       {  
           printf("%c ",arr[i][j]);
         
       }
        printf("\n");
    }  
}


void changij(int arr[10][10], int *pi, int *pj, char *ch, char *oldch, char *store, char *wall, int *k, char *inwall, char *point, int mode)
{
             if(*ch==*oldch)
             {
                 if(*k==1)
                 {    
                       if(mode==1 || mode==2)
                       {   
                           if(*pi==0)
                           arr[*pi][*pj]=22;
                           else if(*pi==9)
                           arr[*pi][*pj]=21;
                           else
                           arr[*pi][*pj]=16;
                       }
                       else
                       {  
                           if(*pj==0)
                           arr[*pi][*pj]=25;
                           else if(*pj==9)
                           arr[*pi][*pj]=23;
                           else
                           arr[*pi][*pj]=16;
                       }
                 }
                 else{
                     
                 if(mode==1 || mode==2) arr[*pi][*pj]='-';
                 else
                 arr[*pi][*pj]='|';
                
                 }
                
                 switch (mode){
                 case 1 :
                      *store=arr[*pi][*(pj)+1];//분석
                      if(*store!=*wall)(*pj)++; //분석
                      if(*store==' ' || *store=='-') *k=0; else *k=1;
                      break;

                 case 2 :
                      *store=arr[*pi][*(pj)-1];//분석
                      if(*store!=*wall)(*pj)--; //분석
                      if(*store==' ' || *store=='-') *k=0; else *k=1;
                      break;
                     
                 case 3 :
                      *store=arr[*(pi)-1][*pj];//분석
                      if(*store!=*wall)(*pi)--; //분석
                      if(*store==' ' || *store=='|') *k=0; else *k=1;
                      break;

                 case 4 :
                      *store=arr[*(pi)+1][*pj];//분석
                      if(*store!=*wall)(*pi)++; //분석
                      if(*store==' ' || *store=='|') *k=0; else *k=1;
                      break;

                      }
                    

//                     if(*store==' ' || *store=='-')*k=0; else *k=1;
                                         
                
             }//move

    
 }//changij
 
int main(void)
{
    char eat=' ';
    char inwall=' ';
    char point=15;
    int arr[10][10]={
        {eat,eat,eat,eat,eat,eat,eat,eat,eat,eat},
        {inwall,eat,eat,eat,inwall,eat,eat,eat,eat,eat},
        {inwall,eat,inwall,eat,inwall,eat,eat,eat,inwall,eat},
        {inwall,eat,eat,eat,inwall,eat,eat,inwall,eat,eat},
        {inwall,eat,inwall,eat,inwall,inwall,eat,eat,inwall,eat},
        {eat,eat,inwall,eat,eat,eat,eat,eat,inwall,eat},
        {eat,inwall,inwall,inwall,eat,inwall,inwall,eat,inwall,eat},
        {eat,eat,inwall,eat,eat,inwall,inwall,inwall,inwall,eat},
        {inwall,eat,inwall,inwall,eat,eat,eat,inwall,eat,eat},
        {inwall,inwall,inwall,inwall,inwall,inwall,eat,eat,eat,inwall}
        };
       
       
    inwall='*';
    int i=0, j=0;
    int pi=0, pj=0;
    char ch=-32;
    char store=eat;
    char wall=inwall;
    char oldch=14;
    int k=0;
    arr[pi][pj]=point;
    show(arr);
   
    for(;;)
    {
        if(ch!=-32)
        oldch=ch;
       
        ch=getch();
       
        if(ch==-32)
        continue;

        if((ch=='l' || ch==77) && pj<9)
        {
            point=62;          
            changij(arr, &pi, &pj, &ch, &oldch, &store, &wall, &k, &inwall, &point, 1);
    
         }//(ch=='l' || ch==77) && pj<9


        if((ch=='j' || ch==75) && pj>0)
        {
            point=60;
            changij(arr, &pi, &pj, &ch, &oldch, &store, &wall, &k, &inwall, &point, 2);

        }//if
        if((ch=='i' || ch==72) && pi>0)
        {
             point=30;
             changij(arr, &pi, &pj, &ch, &oldch, &store, &wall, &k, &inwall, &point, 3);
                 }//if 
        if((ch=='k' || ch==80) && pi<9)
        {
             point=31;
             changij(arr, &pi, &pj, &ch, &oldch, &store, &wall, &k, &inwall, &point, 4);
                 }//if            
       
       
        arr[pi][pj]=point;
        show(arr);         
         
         
          }//for

   
   
   
   
    system("pause");
    return 0;
}



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. 좋은아빠되기 2019.02.15 473
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1235
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2545
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10520
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4890
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8483
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19117
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38035
150 정올 반복제어문3 형성평가8 정승준 2018.03.17 192
149 정올 반복제어문2 형성평가8 정승준 2018.01.27 192
148 배열1 자가진단 9 선우 2016.04.02 191
147 알파벳 배열2-1 승민 2016.10.29 190
146 배열 작은 정수 구하기(승민) 승민 2016.04.16 189
145 정올 반복제어문3 형성평가A 정승준 2018.03.17 188
144 포인트 승민 2016.09.10 188
143 배열1정올 문제(승민) 승민 2016.04.02 186
142 정올 배열1 자가진단9 정승준 2018.09.08 183
141 뒤에서 3개 순서대로 출력하고 2개이하면 두개만 출력하고 하나면 하나만 출력하기★(승민) 승민 2016.05.07 183
140 정올 - 문제은행 - 닭장 전등 관리(1084) 조정미 2018.06.30 182
139 정올 반복제어문3 자가진단5 정승준 2018.02.10 182
138 정올 - 실력키우기 - 타일교체(2810) 조정미 2018.01.20 182
137 정올 - 실전대비 - 오류교정(1037) 조정미 2018.06.09 181
136 배열2 자가진단 6 선우 2016.05.07 181
135 졸업문제 - 연속된 땅 개수와 땅 크기 찾기 조정미 2018.03.24 180
134 정올 반복제어문2 형성평가7 정승준 2018.01.27 178
133 534 : 선택제어문 - 자가진단7 adbdcd123 2018.08.25 175
132 정올 반복제어문3 형성평가7 정승준 2018.03.17 171
131 정올 반복제어문3 형성평가3 정승준 2018.03.10 171
Board Pagination Prev 1 ... 14 15 16 17 18 19 20 21 22 23 ... 26 Next
/ 26