home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 3
/
FreeSoftwareCollection3pd199x-jp.img
/
fb386
/
tyusen2
/
tyusen2.bas
< prev
next >
Wrap
BASIC Source File
|
1980-01-02
|
13KB
|
338 lines
10000 '---------------------------------
10010 '-極秘文章“The 抽選”--TYPE X2-----------
10020 '---------------Copyright(c)クラリス--
10030 '---------------------------------
10040 '-1990年10月15日-all version SPECIAL-
10050 '---------------------------------
10060 '------------Nifty Serve NBD00520-
10070 '---------------------------------
10080 'SAVE "a:\抽選2.BAS",A
10090 '
10100 '<-------- MAIN PROGRAM --------->
10110 GOSUB *初期設定 :PRINT "初期設定完了"
10120 GOSUB *音声データ登録 :PRINT "音声デ-タ登録完了"
10130 GOSUB *ボールのスプライト登録 :PRINT "スプライト登録完了"
10140 GOSUB *スプライトON
10150 *割り込み '数値変更後の戻り
10160 GOSUB *抽選画面描写
10170 GOSUB *パレットセット
10200 WHILE 1
10210 GOSUB *トリガー監視
10220 GOSUB *結果告知
10230 GOSUB *玉の加速
10240 WEND
11000 '--------->初期設定
11010 *初期設定
11020 WIDTH 80,25 : COLOR 7,0,0,4
11030 SCREEN@ 0 : CLS
11040 DEF SPRITE 99,0
11050 RANDOMIZE TIME+DATE
11060 MOUSE 0
12000 '--------->配列宣言 '音声データはファイルの大きさ割る4です
12010 DIM BALL%(255),賞(5),PICT%(5000)
12020 DIM TYYTO(16724/4) 'ちょっと待って!
12030 DIM DOUZO(13120/4) 'どうぞ
12040 DIM STOOP( 8258/4) 'ストップ
12050 DIM DORAMU(71598/4) 'ドラムロール
12060 DIM OWATA(11809/4) '終わった
12070 DIM 一等(37721/4) '一等
12080 DIM 二等(18802/4) '二等
12090 DIM 三等(22008/4) '三等
12100 DIM 四等(20766/4) '四等
12110 DIM 五等(10108/4) '五等
12120 DIM KEYCODE(14) 'key code
13000 '--------->初期値設定
13010 *初期値設定
13020 PI#=3.14159265358979#
13030 RAD#=PI#/180
13040 座標X=345 : ZZZ=16 '分割数
13050 座標Y=45
13060 '←--------玉の数の初期設定値です
13070 等(1)= 10 ' 一等賞
13080 等(2)= 30 ' 二等賞
13090 等(3)= 60 ' 三等賞
13100 等(4)= 100 ' 四等賞
13110 等(5)= 500 ' 五等賞(ハズレ)
13200 '<-------------------------キーコード登録
13210 '数値変更時のパッド←→キーコードデータ交換用
13220 RESTORE *KEYCODEDATA
13230 FOR I=0 TO 14
13240 READ KEYCODE(I)
13250 NEXT I
13260 *KEYCODEDATA
13270 ' 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,bs,cr,lf,re,esc
13280 DATA 48,49,50,51,52,53,54,55,56,57, 8,13,30,31,27
13290 RETURN
14000 '--------->音声データ読み込み登録
14010 *音声データ登録
14015 PRINT "☆☆☆☆☆☆☆☆☆☆";CHR$(13);
14020 LOAD@ "tyoma_f.snd",TYYTO : PRINT "★"; 'ちょっと待って!
14030 PCMPLAY TYYTO
14040 LOAD@ "douzo_f.snd",DOUZO : PRINT "★"; 'どうぞ
14050 LOAD@ "stop_f.snd" ,STOOP : PRINT "★"; 'ストップ
14060 LOAD@ "doramu.snd" ,DORAMU: PRINT "★"; 'ドラムロール
14070 LOAD@ "owata_f.snd",OWATA : PRINT "★"; '終わったよ
14080 LOAD@ "1.snd" ,一等 : PRINT "★"; '一等
14090 LOAD@ "2.snd" ,二等 : PRINT "★"; '二等
14100 LOAD@ "3.snd" ,三等 : PRINT "★"; '三等
14110 LOAD@ "4.snd" ,四等 : PRINT "★"; '四等
14120 LOAD@ "gomen_f.snd",五等 : PRINT "★" '五等
14130 RETURN
15000 '--------->極秘行動<抽選画面描写>
15010 *抽選画面描写
15020 ' 表示 背景
15030 LOAD@ "ny.tif"
15040 ' 抽選用サークルを描く
15050 CIRCLE (120+座標X ,120+座標Y),125,4
15060 CIRCLE (120+座標X ,120+座標Y), 85,4
15070 PAINT (120+座標X+100,120+座標Y), 5,4
15080 PAINT (120+座標X+100,120+座標Y), 0,4
15090 CIRCLE (120+座標X ,120+座標Y),125,5
15100 CIRCLE (120+座標X ,120+座標Y), 85,5
15110 PAINT (120+座標X+100,120+座標Y), 2,5
15120 'CIRCLE (120+座標X ,120+座標Y),140,2,,,,F
15130 '
15200 FOR I=1/ZZZ/2-.5! TO 1+1/ZZZ/2-.5! STEP 1/ZZZ
15210 X1=SIN(2*PI#*I)*125+120+座標X
15220 Y1=COS(2*PI#*I)*125+120+座標Y
15230 X2=SIN(2*PI#*I)* 85+120+座標X
15240 Y2=COS(2*PI#*I)* 85+120+座標Y
15250 LINE (X1,Y1)-(X2,Y2),PSET,5
15260 NEXT I
15270 '
15300 FOR I=1 TO 4: P = VAL("&H"+MID$("084c",I,1))
15310 X =SIN(2*PI#*(P/ZZZ-.5!))*105+120+座標X
15320 Y =COS(2*PI#*(P/ZZZ-.5!))*105+120+座標Y
15330 PAINT (X,Y),%VAL("&H"+(MID$("b924",I,1))),5
15340 PR$=STRING$(-(I<=9)," ")+AKCNV$(MID$(STR$(I),2))
15350 SYMBOL (X-20,Y-8) , PR$,1.2!,1.2!,7,,,3
15360 NEXT I
15370 '
15400 '此処にこの様な文字を入れると面白いですよ(REMマークを取ってです)
15410 'SYMBOL ( 30,370) , "電脳遊遊園地",2,2,[100,100, 0],,,2
15420 'SYMBOL ( 29,369) , "電脳遊遊園地",2,2,[255,255, 0],,,2
15430 'SYMBOL ( 30,402) , " in ",2,2,[ 0,100, 0],,,2
15440 'SYMBOL ( 29,401) , " in ",2,2,[ 0,255, 0],,,2
15450 'SYMBOL ( 30,434) , " GIFU ",2,2,[ 0,100,100],,,2
15460 'SYMBOL ( 29,433) , " GIFU ",2,2,[ 0,255,255],,,2
15990 RETURN
16000 '--------->極秘行動<スプライト登録>
16010 *ボールのスプライト登録 'SPRITE 0 金 1 銀 2 赤
16020 BB=0*1024
16030 LOAD@ "Ball.trn",PICT%
16040 FOR I=0 TO 3
16050 FOR K=0 TO 255
16060 BALL%(K)=PICT%(BB)
16070 IF BALL%(K)=0 THEN BALL%(K)=-32768
16080 BB=BB+1
16090 NEXT K
16100 DEF SPRITE 0,I*4,BALL%,1
16110 NEXT I
16120 DEF SPRITE 1,0,(256,256),0,2,2,1
16130 RETURN
17000 '--------->極秘行動開始<スプライトon>
17010 *スプライトON
17020 SPRITE ON
17030 SPRITE SCREEN (座標X-11,座標Y)
17040 SPRITE 0, 0 ,1
17050 RETURN
18000 '---------> 極秘行動<パレット情報登録>
18010 *パレットセット
18020 RESTORE *パレットDATA
18030 FOR I=0 TO 7
18040 READ R,G,B
18050 PALETTE I,[G*16,R*16,B*16],1
18060 NEXT I
18070 *パレットDATA
18080 DATA 0, 0, 0 , 0, 0, 7 , 7, 0, 0 , 14, 8, 7
18090 DATA 0,11, 0 , 0,11,11 , 7, 7, 0 , 10,10,10
18100 RETURN
30000 '--------->極秘行動<確率によるボールの設定>
30010 *トリガー監視
30020 乱=RND(1)
30030 乱1=乱*(等(1)+等(2)+等(3)+等(4)+等(5))
30040 等 = 5
30050 IF 0 < 等(4) AND 等(5) < 乱1 THEN 等 = 4
30060 IF 0 < 等(3) AND 等(5)+等(4) < 乱1 THEN 等 = 3
30070 IF 0 < 等(2) AND 等(5)+等(4)+等(3) < 乱1 THEN 等 = 2
30080 IF 0 < 等(1) AND 等(5)+等(4)+等(3)+等(2) < 乱1 THEN 等 = 1
30090 等(等) = 等(等) -1
30100 'トリガーが放されるまで待つ チャッタリング防止(^_^;
30110 WHILE (PTRIG(1) AND 1)=1
30120 位置=位置+2
30130 GOSUB *玉の回転
30140 WEND
30150 'トリガーが押されるまで待つ
30160 PCMPLAY DOUZO
30170 WHILE (PTRIG(1) AND 1)=0
30180 位置=位置+2
30190 GOSUB *玉の回転
30200 WEND
30210 PCMPLAY STOOP
30220 ' PCMPLAY DORAMU'CD PLAY 43
30230 IF 等 < 5 THEN 30300 '五等の時は別処理
30240 ' 90゚単位変換,五等の時の位置決め各三箇所位置設定
30250 停止位置=INT(乱*4)*90+360/16*(INT(乱*300) MOD 3+1) '停止位置決定
30260 GOTO 30400
30300 'ELSE
30320 停止位置=VAL(MID$("3120",等,1))*90 '停止位置決定
30400 'ENDIF
30410 距離=停止位置-位置-(停止位置<=位置)*360
30420 距離=距離-360*(距離<180) '180゚以内の時+一回転
30430 '玉を止める時間を決定する
30440 時間=300
30450 IF 270< 距離 THEN 時間=400
30460 IF 360<=距離 THEN 時間=550
30470 IF 540<=距離 THEN 時間=600
30500 '-------->極秘行動<玉の減速>
30510 'ΣX^2 = X *( X +1)*(2* X +1)/6
30520 時間定数=時間*(時間+1)*(2*時間+1)/6
30530 FOR 時=時間 TO 時間-30 STEP -1
30540 位置=位置+距離/時間定数*時*時
30550 GOSUB *玉の回転
30560 NEXT 時
30570 '
30580 PCMPLAY DORAMU
30630 FOR 時=時間-30 TO 10 STEP -1
30640 位置=位置+距離/時間定数*時*時
30650 GOSUB *玉の回転
30660 NEXT 時
30670 RETURN
31000 '--------->極秘行動<玉の加速>
31010 *玉の加速
31020 時間=150 : 距離=150
31030 'ΣX^2 = X *( X +1)*(2* X +1)/6
31040 時間定数=時間*(時間+1)*(2*時間+1)/6
31050 FOR 時=0 TO 時間
31060 位置=位置+距離/時間定数*時*時
31070 GOSUB *玉の回転
31080 NEXT 時
31090 RETURN
32000 '--------->極秘行動<玉の回転>
32010 *玉の回転
32020 位置=位置+(360<=位置)*360
32030 X=COS(位置*RAD#)*103+117 - SPRITE(0,6)
32040 Y=SIN(位置*RAD#)*103+105 - SPRITE(0,7)
32050 SPRITE 6, 0 ,X,Y
32060 RETURN
33000 '--------->極秘行動<結果告知>
33010 *結果告知
33020 IF 等=1 THEN PCMPLAY 一等
33030 IF 等=2 THEN PCMPLAY 二等
33040 IF 等=3 THEN PCMPLAY 三等
33050 IF 等=4 THEN PCMPLAY 四等
33060 IF 等=5 THEN PCMPLAY 五等
33070 IF MOUSE(2,0) AND MOUSE(2,1) THEN SPRITE 6,0,255,255:GOTO *選択
33080 FOR I=0 TO 2500
33090 K$=INKEY$
33100 NEXT I
33110 '----------------->極秘行動を終了しなければならないか?
33200 END_F=0
33210 WHILE END_F=0
33220 IF 等(1)+等(2)+等(3)+等(4)+等(5) THEN END_F=1 : GOTO 33270
33230 PCMPLAY OWATA,127 'おわったよ
33240 WHILE MOUSE(2,0)*MOUSE(2,1)=0
33250 WEND
33260 GOSUB *初期値設定
33270 WEND
33280 RETURN
40000 '--------->極秘行動<商品個数変更>
40010 *選択
40020 CLS
40030 BER_P=0 : ANS_P=0 : D$="" : YP=0
40040 等(等)=等(等)+1 '商品が減ってしまうのを防止する
40050 LOAD@ "TYOUSEI.tif" '変更画面呼び出し
40100 '
40110 FOR I=1 TO 5
40120 A$=AKCNV$(RIGHT$(" "+STR$(等(I)),5))
40130 SYMBOL(300,70+(I-1)*65),A$,3.7!,3.7!,4,,PSET,1,0
40140 NEXT I
40200 '
40210 GOSUB *下線移動
40220 'LINE(400,5)-(610,40),PSET,7,BF
40230 SYMBOL(425,7),"カ-ソルで選んで数値を ",1,1,2,,,2,1
40240 SYMBOL(425,25)," 入力して下ださい" ,1,1,2,,,2,1
40250 '
40260 WHILE INKEY$<>"" : WEND
40270 '
40280 PAINT (70,65*YP+90),2,4
40290 '
40300 D=0
40310 WHILE D<>27
40320 GOSUB *数値入力
40330 IF ANS_P=0 THEN 等(YP+1)=ANS
40340 YP_F= 0
40350 IF D=30 AND 0<YP THEN YP_F=-1
40360 IF (D=31 OR D=13) AND YP<4 THEN YP_F= 1
40370 IF YP_F THEN PAINT (70,65*YP+90),7,4
40380 YP=YP+YP_F
40390 IF YP_F THEN PAINT (70,65*YP+90),2,4
40400 WEND
40410 RETURN *割り込み
50000 '--------->極秘行動<数値入力>
50010 *数値入力
50020 K$="" : T=0 : ANS_P=0 : TRAP=0
50030 WHILE TRAP=0
50040 D=0
50050 WHILE D=0
50060 D$=INKEY$ : D=ASC(D$+CHR$(0))
50070 T=(T MOD 120)+1
50080 XX=305+LEN(K$)*60:YY=YP*65+125
50090 IF T=1 THEN LINE (XX,YY)-STEP(40,5),PSET,1,BF
50100 IF T=60 THEN LINE (XX,YY)-STEP(40,5),PSET,7,BF
50110 PAD_D= -((PAD(1)=7)*29+(PAD(1)=3)*28+(PTRIG(1)=1)*32)
50120 PAD_D=PAD_D-((PAD(1)=1)*30+(PAD(1)=5)*31)
50130 IF D=28 OR D=29 OR D=32 THEN PAD_D=D '左右キー,スペースキー
50140 IF PAD_D THEN GOSUB *下線移動 : T=T+10
50150 WEND
50200 IF 0<INSTR("0123456789",D$) AND LEN(K$)<5 THEN GOSUB *数値入力_INC
50210 IF (D=8 OR D=127) AND K$<>"" THEN GOSUB *数値入力_DEC
50220 IF D=13 THEN ANS_P=0 : TRAP=1
50230 IF D=30 OR D=31 OR D=27 THEN ANS_P=1 : TRAP=1
50240 WEND
50300 '
50310 '数値入力脱出用後処理
50320 '
50330 IF K$="" THEN ANS_P=1
50340 IF ANS_P=1 THEN K$=STR$(等(YP+1))
50350 ANS = VAL(K$) : K$=RIGHT$(" "+STR$(ANS),5)
50360 LINE (XX ,YY )-STEP(40 , 5),PSET,7,BF
50370 LINE (300,70+YP*65)-STEP(340,60),PSET,7,BF
50380 SYMBOL(300,70+YP*65),AKCNV$(K$),3.7!,3.7!,4,,PSET,3,0
50390 RETURN '--------------->数値入力脱出
50400 '
50410 *数値入力_INC
50420 K$=K$+D$
50430 GOSUB *数値入力_PRN
50440 RETURN
50450 '
50500 *数値入力_DEC
50510 '
50520 K$=LEFT$(K$,LEN(K$)-1)
50530 GOSUB *数値入力_PRN
50540 RETURN
50500 '
50610 *数値入力_PRN
50620 '
50630 LINE (XX,YY)-STEP(40,5),PSET,7,BF
50640 XX=305+LEN(K$)*60
50650 IF T=1 THEN LINE (XX,YY)-STEP(40,5),PSET,1,BF
50560 LINE (300,70+YP*65)-STEP(340,60),PSET,7,BF
50670 SYMBOL(300,70+YP*65),AKCNV$(K$),3.7!,3.7!,2,,PSET,1,0
50680 RETURN
50700 '--------->極秘行動<下線移動>
50710 *下線移動
50720 LINE(188+BER_P*30,440)-STEP(25,5),PSET,7,BF
50740 IF PAD_D=29 THEN BER_P=BER_P-1
50750 IF PAD_D=28 THEN BER_P=BER_P+1
50760 IF BER_P<0 THEN BER_P=14
50770 IF 14<BER_P THEN BER_P=0
50780 IF PAD_D=32 OR PAD_D=27 THEN D=KEYCODE(BER_P)
50790 IF PAD_D=31 OR PAD_D=30 THEN D=PAD_D
50800 LINE(188+BER_P*30,440)-STEP(25,5),PSET,2,BF
50810 TT=0
50820 WHILE ((PAD(1)=7)+(PAD(1)=3)+(PTRIG(1)=1)) AND (TT<50)
50830 TT=TT+1
50840 WEND
50850 RETURN