今日の管理人(4月13日)

少し入院してきます。

Cross Load Street=十字路街

十字路街の掲示板はバーチャルタウン「十字路街」にある連絡及び記録などに使われます。
主に連絡や広告のためのWikiです。誰でも作成することができるように準備しています。
十字路街の詳しい概要については十字路街とはを参照してください。
みんなでつなごうリンクの輪。みんなで目指そう便利なWikiです。


オマケとして私が配布している「3EI通信」の過去ログが公開してあります。

4年生に配布中の4EI通信です。一年間続けられるといいと思います。

<stdio.h>
<time.h>
<GrWin.h>
<conio.h>
<stdlib.h>
#define
M 7
#define
N 7
int stackp = 0;
int stack[10][2];
void init( int[M][N] );
void makemap ( int[M][N] );
void makemap2( int[M][N] );
void makemap22( int[M][N] , int , int , int , int );
void output ( int[M][N] );
void output2( int[M][N] );
void output3( int[M][N] );
void main(){
int map[M][N];
srand((unsigned) time(NULL));
init( map );
makemap2( map );
output( map );
}
void makemap( int map[M][N] ){
int i , j , vec , vx = 0 , vy = 0;
//支柱
for( i = 2 ; i < M - 1 ; i += 2 )
	for( j = 2 ; j < N - 1 ; j += 2 )
		map[i][j] = 1;
//倒す
for( i = 2 ; i < M - 1 ; i += 2 ){
	for( j = 2 ; j < N - 1 ; j += 2 ){
		if( i == 2 )
			vec = ( rand() % 12 ) / 3 + 1;
		else
			vec = ( rand() % 9 ) / 3 + 1;
		
		if( vec == 1 ){	vx = 0 ; vy = -1;	}
		if( vec == 2 ){	vx = 1 ; vy = 0;	}
		if( vec == 3 ){	vx = 0 ; vy = 1;	}
		if( vec == 4 ){	vx = -1 ; vy = 0;	}
		//重なっても無視
		map[ i + vy ][ j + vx ] = 1;
	}
}
}
void makemap2( int map[M][N] ){
int i , j , x , y , vec;
//初期(すべて壁)
for( i = 0 ; i < M ; i++ )
	for( j = 0 ; j < N ; j++ )
		map[i][j] = 1;
x = rand() % M + 1;
y = rand() % N + 1;
vec = rand() % 4 + 1;
map[x][y] = 0;
stack[stackp++][0] = x;
stack[stackp-1][0] = y;
if( vec == 1 ) makemap22( map , x , y , -1 ,  0);
if( vec == 2 ) makemap22( map , x , y ,  0 ,  1);
if( vec == 3 ) makemap22( map , x , y ,  1 ,  0);
if( vec == 4 ) makemap22( map , x , y ,  0 , -1);
}
void makemap22( int map[M][N] , int x , int y , int vx , int vy ){
int nx , ny , vec;
//以下探索
nx = x + vx * 2;
ny = y + vy * 2;
if( nx >= N  || nx < 0 || ny >= M || ny < 0 )
	return;
if( map[ny][nx] == 0 )
	return;
map[ny][nx] = 0;
map[y + vy][x + vx] = 0;

vec = rand() % 4 + 1;


}
void init( int map[M][N] ){
int i , j;
//初期化
for( i = 0 ; i < M ; i++ )
	for( j = 0 ; j < N ; j++ )
		map[i][j] = 0;
//壁
for( i = 0 ; i < N ; i++ )
	map[0][i] = map[M-1][i] = 1;
for( i = 0 ; i < M ; i++ )
	map[i][0] = map[i][N-1] = 1;
map[1][0] = 2;		//スタート
map[M-2][N-1] = 3;	//ゴール
}
void output( int map[M][N] ){
int i , j;
for( i = 0 ; i < M ; i++ ){
	for( j = 0 ; j < N ; j++ ){
		printf("%2d",map[i][j]);
	}
	printf("\n");
}
}
void output2( int map[M][N] ){
int i , j;
for( i = 0 ; i < M ; i++ ){
	for( j = 0 ; j < N ; j++ ){
		switch( map[i][j] ){
			case 1:
				printf("#");
				break;
			case 2:
				printf("S");
				break;
			case 3:
				printf("G");
				break;
			case 0:
				printf(" ");
		}
	}
	printf("\n");
}
}
void output3( int map[M][N] ){
   int width = 640, height = 480;    /* ウィンドウサイズ640×400 */
int i , j , x0 = 20 , y0 = height - 20 , color = 19 ;
int xsize = width / ( M + 1 ) , ysize = height / ( N + 1 ) , x , y;

GWopen(0);    /* ウィンドウのオープン */
GWsize(-5, &width, &height);    /* ウィンドウサイズ設定 */
GWsize(-3, NULL, NULL);         /* フレーム(枠)サイズ設定 */
GWvport(0.0, 0.0, (float)width / (float)height, 1.0);     /* ビューポート設定 */
GWindow(0.0, 0.0, (float)width - 1.0, (float)height - 1.0);

//処理
for( i = 0 ; i < M ; i++ ){
	for( j = 0 ; j < N ; j++ ){
		if( map[i][j] == 0 )
			color = 19;	//白
		if( map[i][j] == 1 )
			color =  0;	//黒
		if( map[i][j] == 2 )
			color = 13;	//赤
		if( map[i][j] == 3 )
			color = 16;	//青
		x = x0 + j * xsize;
		y = y0 - i * ysize;
		GWsrect( x , y , x + xsize , y - ysize , color );
	}
}


getch();
GWquit();    /* 終了処理 */                /* ↑ワールド座標系設定 */
return;
}
最終更新:2007年07月17日 12:11