/**********************************/ /* あみだくじ(アスキーアート) */ /* */ /* 横線は乱数で設定 */ /**********************************/ #include #include #include #include #define LMAX 5 // 縦線MAX #define CMAX 15 // 桁MAX #define XMAX 50 // 領域水平方向MAX #define YMAX 25 // 領域垂直方向MAX char buf[YMAX][XMAX]; // 領域配列 int dsx=XMAX/(LMAX-1); // 縦線間隔 void INIbuf(void); // 領域設定 void KUJI(int); // くじをなぞる void DISP(void); // 画面表示 void main( ) /*----------*/ /* 主処理 */ /*----------*/ { char c[128]; int N; printf("\nあみだくじ(AA)\n"); INIbuf( ); // 領域設定 DISP( ); // 画面表示 while( 1 ) { printf("\n番号を入力してください(1〜%d以外で終了): ",LMAX); fflush(stdout); gets(c); N=atoi(c); // 番号入力 if ( N<1 || N>LMAX ) break; // 範囲外 KUJI(N); // くじをなぞる DISP( ); // 画面表示 } } void INIbuf( ) /*------------*/ /* 領域設定 */ /*------------*/ { int i,j,y,x; unsigned long seed; // 乱数の種 memset(&buf[0][0],' ',XMAX*YMAX); // 領域初期化 //--縦線-- for( i=0,x=0; i0 ) // 左端でない { if ( buf[y][x-1]!=' ' ) // 左に線あり dx=-1; // 左へ方向転換 } } } x+=dx; y+=dy; // 移動 } } void DISP( ) /*------------*/ /* 画面表示 */ /*------------*/ { char c[128]; int i,x,y; //--番号表示-- memset(c,' ',XMAX); c[XMAX]='\0'; // 番号1行 for( i=0,x=0; i