본문 바로가기

프로그래밍/C, C++, C#

[C언어]사다리타기_소스

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include<string.h>
#define randomize() srand((unsigned)time(NULL))
#define MAX 13

char sadari[10][MAX] = {" "};


void make_sadari(){
 randomize();
 
 int i, j;
 memset(sadari, 0, sizeof(sadari));
 
 for(i = 0; i<10; i++){
  for(j = 0; j<MAX; j++){
   if(j%2 == 0){
    sadari[i][j] = '|';        
   }else if(j%2 == 1){
    if((rand() % 4) == 3){
     if(sadari[i][j-2] != '-')
     sadari[i][j] = '-';

    }   
   }

  }     
 }
 printf("1 2 3 4 5 6 7\n");
 
 for(i= 0; i<10; i++){
  for(j = 0; j<MAX; j++){
   printf("%c", sadari[i][j]);

  }    
  printf("\n"); 
 }

 printf("1 2 3 4 5 6 7\n");
}


int main(int argc, char *argv[]){
 int line, num;
 char *p = NULL;
 int player;
 char YesNo;

 make_sadari();
 while(1){
  printf("new make sadari?");
  YesNo = getchar();
  if(YesNo == 'y'){
   system("cls");
   make_sadari();
  }
  else
   break;
 }
 printf("\nplayer select : ");
 scanf("%d", &player);

 num = player;
 player = player * 2 - 2;

 line = 0;


 p = &sadari[line][player];


 while(line < 10){
  //printf("Line Number : %d", line);
  //printf("\t%c\n", *p);

  if(*(p-1) == '-' || *(p + 1) == '-'){
   // printf("옆에 라인\n");
   if(*(p-1) == '-'){
    p = p - 2;
    p = p + MAX;
    num--;
    //printf("왼쪽으로 이동\n");
   }else if(*(p + 1) == '-'){
    p = p + 2;
    p = p + MAX;
    num++;
    //printf("오른쪽으로 이동 \n");
   }
   line++;
  }else{
   p = p+MAX;
   line++;
  }
 }


 printf("%d\n", num);

}