home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
fbasic
/
sprplay
/
sprplay.bas
< prev
Wrap
BASIC Source File
|
1990-06-14
|
8KB
|
247 lines
10 '***************************************************************
11 '** スプライトデ-タの保存、読み込み、DEF SPRITE 0 までの **
12 '** 定義をするプログラムです。 **
29 '***************************************************************
30 'main
50 '
70 CLOSE #1 : CLOSE #2
90 CLEAR : COLOR 7
95 DIM HAI%(1000),A(800)
110 CLS
170 '**************************************************************
190 LOCATE 3,3 : PRINT "******************************************"
210 LOCATE 3,4 : PRINT "** **"
230 LOCATE 3,5 : PRINT "** 1. スプライトの読み込み&定義 **"
270 LOCATE 3,6 : PRINT "** **"
290 LOCATE 3,7 : PRINT "** 2. スプライトのデ-タ保存 **"
310 LOCATE 3,8 : PRINT "** **"
330 LOCATE 3,9 : PRINT "** 3. サブプログラム **"
350 LOCATE 3,10: PRINT "** **"
370 LOCATE 3,11: PRINT "** E. 終わり **"
372 LOCATE 3,12: PRINT "** **"
374 LOCATE 3,13: PRINT "******************************************"
375 LOCATE 3,15
390 INPUT "番号を選んで下さい ";BAN$
393 IF BAN$="1" THEN GOTO *SYL1
395 IF BAN$="2" THEN GOTO *SYL2
397 IF BAN$="3" THEN GOTO *SYL2
398 IF BAN$="E" OR BAN$="e" THEN END
400 GOTO 110
401 ' スプライト ノ ヨミコミ テイギ ノ コントロ-ル
403 *SYL1
450 INPUT "ファイル名 ";FL$ '----ヨミコミ ファイル メイ
460 INPUT "ドライブ名 ";DR$
470 GFLL$=DR$+":"+FL$
475 PRINT "TOWNS基本ソフトのエディタでセ-ブしたファイル(T)"
480 PRINT "(2)のデ-タ保存でセ-ブしたファイル (S)"
490 INPUT "ファイル形式(T),(S)";BAN2$
493 IF BAN2$="T" OR BAN2$="t" THEN GOSUB *SPRGT3
494 IF BAN2$="S" OR BAN2$="s" THEN GOSUB *SPRGT1
495 GOTO *SYL3
497 '---------- ガゾウ ノ ヨミコミ
500 *SYL2
502 '
503 INPUT "画像ファイル名 ";FL$
505 INPUT "ドライブ名 ";DR$
506 LFLL$=DR$+":"+FL$
507 IF BAN$="3" THEN GOTO 610
509 '
510 INPUT "セ-ブファイル名 ";FL$
515 INPUT "ドライブ名 ";DR$
520 SFLL$=DR$+":"+FL$
530 INPUT "BASICデ-タ文(D) or 外部ファイル(F) ";DF$
550 IF DF$="F" OR DF$="f" THEN GOTO 610
555 IF DF$="D" OR DF$="d" THEN GOTO 610
560 GOTO 530
570 'INPUT "よろしいですか ";ANS$
590 'IF ANS$="Y" OR ANS$="y" OR ANS$="" THEN GOTO 610 ELSE GOTO 110
610 COLOR 1
630 SCREEN@ 1
710 LOAD@ LFLL$
750 XSS=0 : YSS=0 : GYO=40000
870 GOSUB *MSPRO
880 IF BAN$="3" THEN GOSUB *SPRGT2 : GOTO *SYL3
1030 '
1050 IF DF$="D" OR DF$="d" THEN GOSUB *SPRSV1
1070 IF DF$="F" OR DF$="f" THEN GOSUB *SPRSV2
1090 GOTO 110
1130 '--------- デモ 、 ガイブ プログラム ノ キドウ
1150 *SYL3
1155 CLS
1170 INPUT "サンプル(S),サブプログラム名";FL$
1190 IF FL$="S" OR FL$="s" THEN FL$="SPRDM1.BAS"
1210 CHAIN FL$,10000,ALL
1390 GOTO 110
1410 '
1430 END
1450 '###############################################################
1470 '
1490 '===== マウスによる範囲の指定 サブル-チン ================
1510 *MSPRO
1530 '--- START POINT
1550 MOUSE 0 : MOUSE 1,0,0,1
1570 MOUSE 4,0,0,319,239
1590 XSS=MOUSE(0) : YSS=MOUSE(1)
1610 LOCATE 0,22 : PRINT "START=(";XSS;",";YSS;")";
1630 '
1650 IF MOUSE(2,0)<>-1 THEN GOTO 1570
1670 XSS=MOUSE(4,0) : YSS=MOUSE(5,0)
1690 MOUSE 4,XSS,YSS,319,239
1710 '
1730 IF MOUSE(2,0)=-1 THEN GOTO 1730
1750 LOCATE 0,22 : PRINT "START=(";XSS;",";YSS;")";
1770 '----- END POINT
1830 '
1850 XEE=MOUSE(0) : YEE=MOUSE(1)
1870 LOCATE 0,23 : PRINT "END =(";XEE;",";YEE;")";
1890 XKAI=INT((XEE-XSS)/16)+1
1910 YKAI=INT((YEE-YSS)/16)+1 : XY=XKAI*YKAI
1930 LOCATE 0,24 : PRINT "X=";XKAI;" : Y=";YKAI;" : スプライト=";XY;
1970 LINE(XSS-1,YSS-1)-(XEE+1,YEE+1),XOR,7,B
1990 LINE(XSS-1,YSS-1)-(XEE+1,YEE+1),XOR,7,B
2030 IF MOUSE(2,1)=-1 THEN GOTO 1590
2050 IF MOUSE(2,0)=0 THEN GOTO 1850
2090 XEE=XSS+XKAI*16-1 : YEE=YSS+YKAI*16-1
2110 LINE(XSS-1,YSS-1)-(XEE+1,YEE+1),XOR,7,B
2130 MOUSE 5
2170 RETURN
2210 '
2230 '------ 画面デ-タ処理 サブル-チン -----------
2250 ' basic data ニ カキダス
2270 *SPRSV1
2290 ' KILL SFLL$
2310 OPEN "O",#1,SFLL$
2330 '
2335 COLOR 1
2340 LOCATE 35,23:PRINT "セ-ブ中です。しばらく、お待ち下さい。"
2345 COLOR 7
2347 PRINT #1,"40000 DATA ";XKAI;",";YKAI;CHR$(13)
2350 FOR YK=0 TO YKAI-1
2370 YS=YSS+15*YK
2390 FOR XK=0 TO XKAI-1
2410 XS=XSS+15*XK
2430 YE=YS+15 : XE=XS+15
2450 FOR YP=YS TO YE
2470 GET@A (XS,YP)-(XE,YP),HAI%
2490 AD&=VARPTR(HAI%(0))
2510 GYO=GYO+10
2530 PRINT #1 ,GYO;"DATA ";
2550 XC=0
2570 FOR XP=XS TO XE
2610 AN1$="&H"+RIGHT$("000"+HEX$(PEEK(AD&+XC*2,2)),4)
2630 XC=XC+1
2650 IF XC=16 THEN PRINT #1,AN1$;"" ELSE PRINT #1,AN1$;",";
2670 NEXT XP
2690 PRINT #1,CHR$(13)
2710 NEXT YP
2730 NEXT XK
2750 NEXT YK
2770 CLOSE #1
2790 RETURN
2850 '
2870 '------ 画面デ-タ処理 サブル-チン 2 -----------
2890 ' data file ニ カキダス
2910 *SPRSV2
2930 ' KILL SFLL$
2950 OPEN "O",#1,SFLL$
2975 COLOR 1
2980 LOCATE 35,23:PRINT "セ-ブ中です。しばらく、お待ち下さい。"
2985 COLOR 7
2987 PRINT #1,XKAI;YKAI;",";
2990 FOR YK=0 TO YKAI-1
3010 YS=YSS+15*YK
3030 FOR XK=0 TO XKAI-1
3050 XS=XSS+15*XK
3070 YE=YS+15 : XE=XS+15
3090 FOR YP=YS TO YE
3110 GET@A (XS,YP)-(XE,YP),HAI%
3130 AD&=VARPTR(HAI%(0))
3190 XC=0
3210 FOR XP=XS TO XE
3270 AN1$=HEX$(PEEK(AD&+XC*2,2))
3290 XC=XC+1
3310 PRINT #1,AN1$;",";
3330 NEXT XP
3370 NEXT YP
3390 NEXT XK
3410 NEXT YK
3430 CLOSE #1
3450 RETURN
3470 '
3490 '---------------------------------------------------------------
3510 '===<< スプライト 読み込み、定義 1 >>========
3530 *SPRGT1
3550 'sub data file ヨリ スプライト ヨミコミ
3570 '
3590 '
3630 XPP=0 : YPP=0 : SPP=4 : TPP=0
3650 '
3670 '
3690 OPEN "I",#2,GFLL$
3695 COLOR 3
3700 LOCATE 35,23:PRINT "読み込み中です。しばらく、お待ち下さい。"
3705 COLOR 7
3707 INPUT #2,XKAI
3708 INPUT #2,YKAI
3710 FOR JY=0 TO YKAI-1
3730 YP=YP+15*JY
3750 XP=XPP
3770 FOR JX=0 TO XKAI-1
3790 XP=XP+15*JX
3810 FOR I=0 TO 255
3830 INPUT#2,ABB$
3890 AE$="&H"+ABB$
3910 HAI%(I)=VAL(AE$)
3950 NEXT I
3990 DEF SPRITE 0,SPP,HAI%,1
4010 SPP=SPP+4
4030 NEXT JX
4050 NEXT JY
4070 '
4090 CLOSE #2
4230 RETURN
4250 '
4270 '-------------------------------------------------------------
4290 '-----<< 画面よりスプライトの定義 2 >>--------
4310 '
4330 *SPRGT2
4370 XYP=0
4390 FOR YP=0 TO YKAI-1
4410 FOR XP=0 TO XKAI-1
4430 X3=XSS+XP*16 : Y3=YSS+YP*16
4450 GET@A(X3,Y3)-(X3+15,Y3+15),HAI%
4470 XYP=XYP+1
4490 DEF SPRITE 0,XYP*4,HAI%,1
4510 NEXT XP
4530 NEXT YP
4550 RETURN
4570 '
4590 '---------------------------------------------------------------
4610 '===<< スプライト 読み込み、定義 3 >>=========
4630 *SPRGT3
4650 'sub T-MENU ノ data file ヨリ スプライト ヨミコミ
4670 '
4690 '
4730 XPP=0 : YPP=0 : SPP=0 : TPP=0
4750 XKAI=8 : YKAI=8
4755 COLOR 3
4760 LOCATE 35,23:PRINT "読み込み中です。しばらく、お待ち下さい。"
4765 COLOR 7
4770 '
4790 OPEN "I",#2,GFLL$
4810 AXY$=INPUT$(16,#2)
4890 FOR JX=0 TO 63
4910 AXY$=INPUT$(2,#2)
4930 FOR I=0 TO 255
4950 AE1$=RIGHT$("0"+HEX$(ASC(INPUT$(1,#2))),2)
4970 AE2$=RIGHT$("0"+HEX$(ASC(INPUT$(1,#2))),2)
5030 AE$="&H"+AE2$+AE1$
5070 HAI%(I)=VAL(AE$)
5110 NEXT I
5130 SPP=SPP+4
5150 DEF SPRITE 0,SPP,HAI%,1
5190 NEXT JX
5250 CLOSE #2
5270 RETURN
5290 '