「トップページ」の編集履歴(バックアップ)一覧はこちら
トップページ - (2007/04/13 (金) 17:28:07) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*今日の管理人(4月13日)
少し入院してきます。
*Cross Load Street=十字路街
十字路街の掲示板はバーチャルタウン「十字路街」にある連絡及び記録などに使われます。
主に連絡や広告のためのWikiです。誰でも作成することができるように準備しています。
十字路街の詳しい概要については[[十字路街とは]]を参照してください。
みんなでつなごうリンクの輪。みんなで目指そう便利なWikiです。
----
-[[3EI通信]]
オマケとして私が配布している「3EI通信」の過去ログが公開してあります。
-[[4EI通信]]
4年生に配布中の4EI通信です。一年間続けられるといいと思います。
*今日の管理人(4月13日)
少し入院してきます。
*Cross Load Street=十字路街
十字路街の掲示板はバーチャルタウン「十字路街」にある連絡及び記録などに使われます。
主に連絡や広告のためのWikiです。誰でも作成することができるように準備しています。
十字路街の詳しい概要については[[十字路街とは]]を参照してください。
みんなでつなごうリンクの輪。みんなで目指そう便利なWikiです。
----
-[[3EI通信]]
オマケとして私が配布している「3EI通信」の過去ログが公開してあります。
-[[4EI通信]]
4年生に配布中の4EI通信です。一年間続けられるといいと思います。
#include <stdio.h>
#include <time.h>
#include <GrWin.h>
#include <conio.h>
#include <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");
}
}
//GrWin出力
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;
}