home *** CD-ROM | disk | FTP | other *** search
- 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
-