ES-BASIC #10

(12) ES-BASIC ver.0.1b 向けのプログラム集

(12-1) グラデーション

1000 OPENWIN 256,256
1010 FOR Y=0,255
1020   FOR X=0,255
1030     C=RGBCOL(Y,X,0)
1040     SETPIX X,Y,C
1050   NEXT
1060 NEXT

(12-2) マンデルブロ集合

1010 OPENWIN 512,384
1020 $DI=R07; // R07をプログラム中で使いたいときの慣用句
1030 ALIAS ZX:R01, ZY:R03, XX:R06, YY:R07, CX:R08, CY:R09, N:R10, SN:R11, SX:R12, SY:R13, C:R01
1040 FOR Y=0,383
1050   FOR X=0,511
1060     SN=0
1070     FOR SX=0,3
1080       CX=(X*4+SX)*56+4673536
1090       FOR SY=0,3
1100         CY=(Y*4+SY)*_56-124928
1110         ZX=CX
1120         ZY=CY
1130         FOR N=1,446
1140           XX=ZX*:ZX>>24
1150           YY=ZY*:ZY>>24
1160           IF XX+YY>0X4000000 GOTO SKIP
1170           ZY=ZY*:ZX>>23
1180           ZX=XX+CX-YY
1190           ZY=ZY+CY
1200         NEXT
1210         LABEL SKIP
1220         SN=SN+N
1230       NEXT
1240     NEXT
1250     N=SN>>4; // N=SN/16 (N=0...447)
1260     C=N<<16
1270     IF N>=256 THEN
1280       C=0
1290       IF N<447 THEN
1300         C=((N-255)<<8)+0XFF0000
1310       FI
1320     FI
1330     SETPIX X,Y,C+0X1000000
1340   NEXT
1350   LEAPFLUSHWIN 300
1360 NEXT

(12-3) 迷路作成

1000 OPENWIN 752,496
1010 CHRBOX 47,31,0,0,1,2
1020 ECHR 1,1,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     LABEL DIGLOOP; // 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; IF C+CC==2 THEN D0=1; FI; FI
1110     IF X> 1 THEN GETCHR X-1,Y,C; GETCHR X-2,Y,CC; IF C+CC==2 THEN D1=1; FI; FI
1120     IF Y<29 THEN GETCHR X,Y+1,C; GETCHR X,Y+2,CC; IF C+CC==2 THEN D2=1; FI; FI
1130     IF Y> 1 THEN GETCHR X,Y-1,C; GETCHR X,Y-2,CC; IF C+CC==2 THEN D3=1; FI; FI
1140     D=D0+D1+D2+D3
1150     IF D>0 THEN
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       GOTO DIGLOOP
1230     FI
1240   FI
1250 NEXT

こめんと欄


コメントお名前NameLink

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS