Slide 11
Slide 11 text
プログラム例(2)
• 迷路作成プログラム(26行)
1000 OPENWIN 752,496
1010 CHRBOX 47,31,0,0,1,2; // 画面を緑色(2)の四角で埋め尽くす
1020 ECHR 1,1,0; // 左上に一つだけ穴をあける(キャラクタ番号#0をおく)
1030 FOR I=0,1000000
1040 X=(RAND%23)*2+1
1050 Y=(RAND%15)*2+1
1060 GETCHR X,Y,C
1070 IF C==0 THEN
1080 DOLOOP; // (X,Y)から掘り進める.
1090 D0=0; D1=0; D2=0; D3=0
1100 IF X<45 THEN GETCHR X+1,Y,C; GETCHR X+2,Y,CC; D0=C*CC; FI
1110 IF X> 1 THEN GETCHR X-1,Y,C; GETCHR X-2,Y,CC; D1=C*CC; FI
1120 IF Y<29 THEN GETCHR X,Y+1,C; GETCHR X,Y+2,CC; D2=C*CC; FI
1130 IF Y> 1 THEN GETCHR X,Y-1,C; GETCHR X,Y-2,CC; D3=C*CC; FI
1140 D=D0+D1+D2+D3
1150 IF D==0 GOTO SKIP; // もう掘り進められない
1160 DD=RAND%D
1170 IF D0!=0 THEN IF DD==0 THEN ECHR X+1,Y,0; X=X+2; FI; DD=DD-1; FI
1180 IF D1!=0 THEN IF DD==0 THEN ECHR X-1,Y,0; X=X-2; FI; DD=DD-1; FI
1190 IF D2!=0 THEN IF DD==0 THEN ECHR X,Y+1,0; Y=Y+2; FI; DD=DD-1; FI
1200 IF D3!=0 THEN IF DD==0 THEN ECHR X,Y-1,0; Y=Y-2; FI; DD=DD-1; FI
1210 ECHR X,Y,0
1220 ENDDO
1230 SKIP:
1240 FI
1250 NEXT