2014.05.24 12:46

작대기 그리기 함수

조회 수 954 추천 수 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 747
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1507
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2854
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 11243
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 5172
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 9002
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19448
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38325
150 일정수가 나오면 멈추고 평균 합게 5의 배수 나오게 하기(승민) 승민 2016.05.14 220
149 세개의 실수를 받아 큰수는 올림 작은수는 버림 남은수는 반올림하기 선우 2016.07.02 219
148 배열 양수1이상 100미만 최댓값 100이상 10000미만 최솟값 선우 2016.04.02 218
147 정올 반복제어문2 형성평가7 정승준 2018.01.27 217
146 알파벳 배열2-1 승민 2016.10.29 216
145 배열1정올 문제(승민) 승민 2016.04.02 215
144 정올 배열1 자가진단9 정승준 2018.09.08 213
143 정올 반복제어문2 형성평가8 정승준 2018.01.27 213
142 뒤에서 3개 순서대로 출력하고 2개이하면 두개만 출력하고 하나면 하나만 출력하기★(승민) 승민 2016.05.07 213
141 정올 반복제어문3 형성평가A 정승준 2018.03.17 212
140 배열1 자가진단 9 선우 2016.04.02 211
139 정올 반복제어문3 자가진단5 정승준 2018.02.10 209
138 정올 - 실력키우기 - 타일교체(2810) 조정미 2018.01.20 209
137 정올 - 문제은행 - 닭장 전등 관리(1084) 조정미 2018.06.30 203
136 졸업문제 - 연속된 땅 개수와 땅 크기 찾기 조정미 2018.03.24 203
135 정올 - 실전대비 - 오류교정(1037) 조정미 2018.06.09 202
134 534 : 선택제어문 - 자가진단7 adbdcd123 2018.08.25 200
133 정올 - 실력키우기 - 2진수를 10진수로(문자열로 입력) 조정미 2017.12.02 198
132 정올 반복제어문3 형성평가7 정승준 2018.03.17 197
131 배열2 자가진단 6 선우 2016.05.07 197
Board Pagination Prev 1 ... 14 15 16 17 18 19 20 21 22 23 ... 26 Next
/ 26