home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
fbasic
/
prelude
/
pds0a
/
fractal
/
frademo3.bas
< prev
next >
Wrap
BASIC Source File
|
1990-06-14
|
6KB
|
179 lines
100 ' F-BASIC386 SAMPLE PROGRAM % COPYRIGHT FUJITSU LIMITED 19900502
110 ' PUBLIC DOMAIN SOFTWARE by PRELUDE FMC(Fujitsuマイコンクラブ)
120 ' ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
130 ' ★ ソフト名:フラクタル・デモ PART3 V3 ★
140 ' ★ 登録名 :FRADEMO03.BAS ★
150 ' ★ 登録者 :PRELUDE(Yuuichi Sasaki) ★
160 ' ★ 動作確認:FM-TOWNS 2 F-BASIC386 V1.1L20 ★
170 ' ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
180 '
190 *環境 ' *** 環境設定 ***
200 CLEAR,,1024,7000:WIDTH 80,25:CONSOLE 0,24,1
210 SCREEN@ 1:PASTEL:COLOR 7,0,1,4:CLS:COL=2:SW=1:S=1
220 WINDOW (0,0)-(319,239):VIEW (0,0)-(319,239),0,2
230 RANDOMIZE TIME:DIM X(640),Y(640)
240 ON ERROR GOTO *異常
250 INTERVAL 2:ON INTERVAL GOSUB *時計:INTERVAL ON
260 ON KEY(1) GOSUB *PF1:KEY(1) ON
270 ON KEY(3) GOSUB *PF3:KEY(3) ON
280 ON KEY(5) GOSUB *PF5:KEY(5) ON
290 KEY 1," 終了":KEY 2," PF2"
300 KEY 3," 書庫":KEY 4," PF4"
310 KEY 5," 絵":KEY 6," PF6"
320 KEY 7," PF7":KEY 8," PF8"
330 KEY 9," PF9":KEY 10," PF10"
340 MOUSE 0
350 ON MOUSE(2) GOSUB *左押す:MOUSE(2) ON
360 ON MOUSE(4) GOSUB *右押す:MOUSE(4) ON
370 MOUSE 1,319,239,0
380 LOCATE 10,22:PRINT "マウス左クリックでメニューを表示。"
390 GOTO *縦
400 '
410 *時計 ' *** 時計割込み処理 ***
420 INTERVAL OFF
430 TDT$=DATE$:TTM$=TIME$:TXX=POS(0):TYY=CSRLIN
440 LOCATE 10,1:PRINT TDT$;"†";TTM$;"†"
450 LOCATE TXX,TYY:INTERVAL ON:RETURN
460 '
470 *右押す ' *** マウス割込(終了) ***
480 MOUSE(2) OFF:MOUSE(4) OFF:INTERVAL OFF:RETURN *PF1
490 END
500 '
510 *PF1 ' *** 終了処理 ***
520 WINDOW (0,0)-(319,239):VIEW (0,0)-(319,239)
530 INTERVAL OFF:MOUSE 5:CLS 4:END
540 '
550 *PF3 ' *** FRA32A.TIF/FRA16A.TIFで保存 ***
560 LOCATE 0,0
570 PRINT"グラフィック画面を書庫(FRAxxA.TIF)に保存? Y で実行します。 "
580 IK$=INKEY$:IF IK$="Y" THEN GOTO 600 ELSE IF IK$="" THEN GOTO 580
590 GOTO 640
600 IF S=1 THEN KILL "\FILE\FRA32A.TIF"
610 IF S=1 THEN SAVE@ "\FILE\FRA32A.TIF",(0,0)-(319,239)
620 IF S=2 THEN KILL "\FILE\FRA16A.TIF"
630 IF S=2 THEN SAVE@ "\FILE\FRA16A.TIF",(0,0)-(639,479)
640 LOCATE 0,0
650 PRINT" "
660 RETURN
670 '
680 *PF5 ' *** LOAD ***
690 LOCATE 0,0
700 PRINT"グラフィック画面を書庫(FRAxxA.TIF)から読む? Y で実行します。"
710 IK$=INKEY$:IF IK$="Y" THEN GOTO 730 ELSE IF IK$="" THEN GOTO 710
720 GOTO 750
730 IF S=1 THEN LOAD@ "\FILE\FRA32A.TIF"
740 IF S=2 THEN LOAD@ "\FILE\FRA16A.TIF"
750 LOCATE 0,0
760 PRINT" "
770 RETURN
780 '
790 *異常 ' 異常処理。
800 OPEN"A",#1,"\FILE\ERROR.BAS"
810 PRINT#1,ERL,"Error number=";ERR,"Error line=";ERL
820 CLOSE#1
830 BEEP:RESUME NEXT
840 '
850 *モード
860 IF S=1 THEN S=2:SCREEN@ 0 ELSE S=1:SCREEN@ 1
870 RETURN
880 '
890 *テレビ
900 MOUSE(2) OFF:SIMPOSE ON 0:MOUSE 1,100,100,0
910 IF 0=MOUSE(2,0) GOTO 910
920 SIMPOSE OFF:MOUSE 1,100,100,1:MOUSE(2) ON:RETURN
930 '
940 ' % % % % % AUTOMATON (縦) % % % % %
950 '
960 *縦
970 MOUSE 1,100,100,0
980 LINE (0,0)-(319*S,239*S),PSET,1,BF
990 IF S=1 THEN LINE (0,0)-(319*S,239*S),PASTEL,7,BF
1000 NX=319*S:NY=239*S
1010 FOR I=1 TO NX-1:X(I)=0
1020 IF (I MOD 40)=0 THEN X(I)=RND*10 MOD COL
1030 NEXT I
1040 FOR I=1 TO NX-1:PSET(I,1),X(I),PASTEL
1050 NEXT I
1060 '
1070 FOR N=1 TO NY-1
1080 Y(0)=(X(0)+X(NX)) MOD COL
1090 PSET(1,N),Y(0),PASTEL
1100 FOR I=1 TO NX-1
1110 IF SW=1 THEN Y(I)=(X(I)+X(I-1)) MOD COL
1120 IF SW=2 THEN Y(I)=(X(I)+X(I+1)) MOD COL
1130 IF SW=3 THEN Y(I)=(X(I-1)+X(I+1)) MOD COL
1140 PSET(I,N),Y(I),PASTEL
1150 NEXT I
1160 FOR I=1 TO NX-1
1170 X(I)=Y(I)
1180 NEXT I
1190 NEXT N
1200 GOTO 1070
1210 '
1220 ' % % % % % AUTOMATON (横) % % % % %
1230 '
1240 *横
1250 MOUSE 1,100,100,0
1260 LINE (0,0)-(319*S,239*S),PSET,1,BF
1270 IF S=1 THEN LINE (0,0)-(319*S,239*S),PASTEL,7,BF
1280 NX=239*S:NY=319*S
1290 FOR I=1 TO NX-1:X(I)=0
1300 IF (I MOD 40)=0 THEN X(I)=RND*10 MOD COL
1310 NEXT I
1320 FOR I=1 TO NX-1:PSET(1,I),X(I),PASTEL
1330 NEXT I
1340 '
1350 FOR N=1 TO NY-1
1360 Y(0)=(X(0)+X(NX)) MOD COL
1370 PSET(N,1),Y(0),PASTEL
1380 FOR I=1 TO NX-1
1390 IF SW=1 THEN Y(I)=(X(I)+X(I-1)) MOD COL
1400 IF SW=2 THEN Y(I)=(X(I)+X(I+1)) MOD COL
1410 IF SW=3 THEN Y(I)=(X(I-1)+X(I+1)) MOD COL
1420 PSET(N,I),Y(I),PASTEL
1430 NEXT I
1440 FOR I=1 TO NX-1
1450 X(I)=Y(I)
1460 NEXT I
1470 NEXT N
1480 GOTO 1350
1490 '
1500 *左押す ' *** マウス割込(メニュー) ***
1510 MOUSE(2) OFF:MOUSE 1,100,100,1
1520 CLS 4
1530 LOCATE 0,2
1540 PRINT" 規則 1: Ai(n)=Ai-1(n-1)+Ai(n-1)"
1550 PRINT" 規則 2: Ai(n)=Ai+1(n-1)+Ai(n-1)"
1560 PRINT" 規則 3: Ai(n)=Ai-1(n-1)+Ai+1(n-1)"
1570 PRINT"0:色数=";COL;"+1"
1580 PRINT"1:規則=";SW;"+1"
1590 PRINT"C:画面消去"
1600 PRINT"E:終了"
1610 PRINT"R:メニュー消去"
1620 PRINT"S:モード";S
1630 PRINT"V:録画(マウス左で戻る)"
1640 PRINT"X:オートマトン縦(メニュー消去)"
1650 PRINT"Y:オートマトン横(メニュー消去)"
1660 GOSUB *読む
1670 IF D$="0:" THEN COL=COL+1:IF COL=9 THEN COL=2
1680 IF D$="1:" THEN SW=SW+1:IF SW=4 THEN SW=1
1690 IF D$="C:" THEN MOUSE(2) ON:CLS
1700 IF D$="E:" THEN RETURN *PF1
1710 IF D$="R:" THEN MOUSE(2) ON:CLS 4:MOUSE 1,100,100,0:RETURN
1720 IF D$="S:" THEN GOSUB *モード
1730 IF D$="V:" THEN IF S=1 THEN GOSUB *テレビ
1740 IF D$="X:" THEN MOUSE(2) ON:CLS 4:RETURN *縦
1750 IF D$="Y:" THEN MOUSE(2) ON:CLS 4:RETURN *横
1760 GOTO 1520
1770 '
1780 *読む ' 文字読み
1790 MO=MOUSE (2,0):IF MO<>0 GOTO 1790
1800 MOX=MOUSE (0):' X 座標
1810 MOY=MOUSE (1):' Y 座標
1820 D$=CHR$(SCREEN (MOX/(4*S),MOY/(10*S)))
1830 D$=D$+CHR$(SCREEN (1+MOX/(4*S),MOY/(10*S)))
1840 LOCATE 1,0:PRINT"選択=>";D$;" マウス左クリックで選択。 "
1850 MO=MOUSE (2,0):IF MO=0 GOTO 1800
1860 MO=MOUSE (2,0):IF MO<>0 GOTO 1860
1870 RETURN