10 ' save "MAJYAN.BAS",A'1988.9.24 TOYOTA Qpon Soft 宮本幸雄 20 ' RUN "MAJYAN0.BAS" 25 CLEAR &H1000,,,0 30 KEY 2,"screen ,,,0:"+CHR$(13) 40 DEMO=0 50 TEST=0 60 MUKI=0 70 '-- 80 DEF SEG=&H9100:DEF USR0=0 90 RESTORE 110 100 FOR I=0 TO &H3F:READ A$:POKE I,VAL("&H"+A$):NEXT I 110 DATA 50,53,51,52,1E,FF,37,1F,B9,80,3E,BE,00,00,8A,04 '00 120 DATA 24,55,88,04,46,E2,F7,B9,40,1F,BE,00,00,BF,00,00 '10 130 DATA C6,04,00,46,47,83,FF,50,72,06,83,C6,50,BF,00,00 '20 140 DATA E2,EE,90,90,90,90,90,1F,5A,59,5B,58,CF,90,90,90 '30 150 '-- 160 DIM G%( 300),HAI(170),JUN(170),ZIHAI(3,14),TEN(3,33),TES(33),CHI(3,33),PON(3,33),KAN(3,33),YAKU(3,33),AGARI(3,33),STE.HAI(33),DMY(33),OMOTE(3,33) 170 WIDTH 80,25:CONSOLE 0,25,0,1 180 SCREEN 3,,0,0:CLS 2:'LINE (0,0)-(639,399),5 ,BF 190 RESTORE 190 200 SCREEN 3,,1,0 :CLS 3 210 LOCATE 30,10 :PRINT "Qpon 麻 雀" 220 LOCATE 30,13 :PRINT " 準 備 中" 230 'LINE(0,0)-(639,199),7,BF 240 'DEF SEG=&HB000:BLOAD "MAZYN.DAT" 250 DEF SEG=&HA800:BLOAD "MAZYAN1.DAT" 260 DEF SEG=&HB000:BLOAD "MAZYAN2.DAT" 270 DEF SEG=&HB800:BLOAD "MAZYAN3.DAT" 280 'DEF SEG=&HB800:BLOAD "MAZYN.DAT" 290 A%=&HA800:A%=USR0(A%) 300 '- 310 LIN=&H5555 320 LIN0$=CHR$(0)+CHR$(0)+CHR$(0 ) 330 LIN1$=CHR$(0)+CHR$(0)+CHR$(&HAA) 340 LIN$=LIN0$+LIN1$+LIN0$+LIN1$ 350 '-- 360 FOR L=0 TO 1 370 RESTORE 470 380 FOR J=0 TO 3 390 IF J=0 THEN C=0 ELSE C=2 400 READ A$:KN=VAL("&H"+JIS$(A$)) 410 PUT (J*32+2+L*319,4*40+11 ),KANJI(KN ),PSET,7,C 420 NEXT J 430 LINE (L*319, 4*40 )-(200+L*319,5*40+10 ),7,B 440 PAINT (1+L*319,4*40+5),LIN$,7 450 LINE (L*319, 4*40 )-(200+L*319,5*40+10 ),0,B 460 NEXT L 470 DATA ュ,ョ,ッ,ー 480 '-- 490 FOR L=0 TO 1 500 LINE (7*32+1+L*319,3*40+1 )-(7*32+0+29+L*319,3*40+1+37),4,BF 510 'FOR I=0 TO 3:FOR J=0 TO 8 520 'PY=I*40+1:PX=J*32+2+L*319 530 'LINE (PX+30,PY)-(PX+30,PY ),4,,LIN :LINE -(PX+30,PY+38),2:LINE -(PX ,PY+38),2 :LINE -(PX,PY+38),4,,LIN 540 'LINE (PX+31,PY)-(PX+31,PY+1),4,,LIN:LINE -(PX+31,PY+39),2:LINE -(PX+1,PY+39),2 :LINE -(PX,PY+39),4,,LIN 550 'NEXT J,I 560 LINE (8*32+1+L*319,3*40 )-(8*32+8+31+L*319,3*40+44),0,BF 570 LINE (8*32+0+L*319,3*40 )-(8*32+8+40+L*319,3*40+64),2,B 580 PAINT(8*32+2+L*319 ,3*40+1+6),LIN$,2 590 LINE (8*32+0+L*319,3*40 )-(8*32+8+40+L*319,3*40+64),0,B 600 NEXT L 610 '====== 620 'LINE(0,200)-(639,399),7,BF 630 'DEF SEG=&HBBE8:BLOAD "MAZYN.DAT" 640 DEF SEG=&HABE8:BLOAD "MAZYAN1.DAT" 650 DEF SEG=&HB3E8:BLOAD "MAZYAN2.DAT" 660 DEF SEG=&HBBE8:BLOAD "MAZYAN3.DAT" 670 'DEF SEG=&HABE8:BLOAD "MAZYN.DAT" 680 'LINE(0,199)-(639,199),1 690 '- 700 FOR L=0 TO 1 710 RESTORE 810 720 FOR J=0 TO 3 730 IF J=0 THEN C=0 ELSE C=6 740 READ A$:KN=VAL("&H"+JIS$(A$)) 750 PUT (J*32+2+L*319,200+4*40+11 ),KANJI(KN ),PSET,3,C 760 NEXT J 770 LINE (L*319, 200+4*40 )-(200+L*319,200+5*40+10 ),3,B 780 PAINT (1+L*319,200+4*40+5),LIN$,3 790 LINE (L*319, 200+4*40 )-(200+L*319,200+5*40+10 ),0,B 800 NEXT L 810 DATA ュ,ョ,ッ,ー 820 '- 830 FOR L=0 TO 1 840 LINE (7*32+1+L*319, 3*40+201 )-(7*32+0+29+L*319,3*40+201+37),6,BF 850 'LINE (4*32+3+L*319, 3*40+201 )-(4*32+1+29+L*319,3*40+201+37),3,B 860 'LINE (4*32+4+L*319, 3*40+202 )-(4*32+0+29+L*319,3*40+200+37),3,B 870 'FOR I=0 TO 3:FOR J=0 TO 8 880 'IF I=3 AND J=8 THEN 830 890 'PY=I*40+201:PX=J*32+2+L*319 900 'LINE (PX+30,PY)-(PX+30,PY ),5 :LINE -(PX+30,PY+38),1:LINE -(PX ,PY+38),1 :LINE -(PX,PY+38),1 910 'LINE (PX+31,PY)-(PX+31,PY+1),5 :LINE -(PX+31,PY+39),1:LINE -(PX+1,PY+39),1 :LINE -(PX,PY+39),1 920 'NEXT J,I 930 LINE (8*32+1+L*319,200+3*40 )-(8*32+8+31+L*319,200+3*40+44),0,BF 940 LINE (8*32+0+L*319,200+3*40 )-(8*32+8+40+L*319,200+3*40+64),1,B 950 PAINT(8*32+2+L*319 ,200+3*40+1+6),LIN$,1 960 LINE (8*32+0+L*319,200+3*40 )-(8*32+8+40+L*319,200+3*40+64),0,B 970 NEXT L 980 '-- 990 RESTORE 1010 1000 FOR J=0 TO 6:READ SAI$(J):NEXT J 1010 DATA キ,ア,イ,ウ,エ,オ,カ 1020 '-- 1030 RESTORE 1090 1040 FOR I=0 TO 3 1050 :READ A$ 1060 :KAZE$(I)=A$ 1070 :KAZE(I)=VAL("&H"+JIS$(A$)) 1080 :NEXT I 1090 DATA 東,南,西,北,/ 1100 '-- 1110 RESTORE 1150 1120 FOR I=0 TO 2 1130 :READ YAKU.HAI$(I) 1140 :NEXT I 1150 DATA 白,葵,中,/ 1160 '== 1170 ' CHAIN "MAJYAN.BAS",2000,ALL 1180 '== 2000 '::: 2010 *START 2015 'STOP ON :ON STOP GOSUB *STOP. 2020 CHAN=CHAN+1 2030 R=VAL(RIGHT$(TIME$,2)+MID$(TIME$,7,2)) :RANDOMIZE R 2050 ST.JUN =INT(RND(1)*4) :JUN.N=ST.JUN :TATI=ST.JUN:BA.JUN=0 2060 ST.KAZE=0 :KAZE.N =ST.JUN 2080 '-- 2090 RESTORE 2140 2100 FOR I=0 TO 5 2110 :READ A$:AITE(I)=VAL("&H"+JIS$(A$)) 2120 AITE.1(I)=I 2130 :NEXT I 2140 DATA 部,課,係,自,長,分 2150 FOR I=0 TO 20 2160 A1=INT(RND(1)*3) 2170 A2=INT(RND(1)*3) 2180 SWAP AITE(A1),AITE(A2) 2190 SWAP AITE.1(A1),AITE.1(A2) 2200 NEXT I 2210 '-- 2220 FOR I=0 TO 3:TEN.SU(I)=300:NEXT I 2230 RECHI.BO=0 2240 NAGARE =0 2250 CLS:SCREEN ,,0,1 2260 '===== 2270 *MAIN.LOOP 2271 R=VAL(RIGHT$(TIME$,2)+MID$(TIME$,7,2)) :RANDOMIZE R 2280 SCREEN 3,,0,1 2290 JUN=JUN.N 2300 GOSUB *TEN.CLS 2310 GOSUB *BA.PRINT 2320 GOSUB *TEN.BO.TOTAL 2330 GOSUB *RECHI.BO.PRINT 2340 GOSUB *SAI.KORO 2350 GOSUB *RND. 2360 IF TEST=0 THEN IF DEMO=1 THEN IF ST.KAZEɬ THEN *GAME.OVER 2370 IF ST.KAZEɭ THEN *GAME.OVER 2380 GOSUB *ST.POINT 2390 GOSUB *HAI.PAI 2400 'GOSUB *HAI.PAI.TEN 2410 GOSUB *HAI.PRINT 2415 GOSUB *HAI.PAI.TEN 2420 URA.N=0:GOSUB *URA.HAI.PRINT 2430 GOSUB *ZIHAI.OPEN 2440 IF TEST=0 THEN IF DEMO=1 THEN ON ERROR GOTO *ERROR.SUB 2450 GOSUB *GO 2460 ON ERROR GOTO 0 2470 IF AGARI<ɭ THEN GOSUB *NAGARE :GOTO *MAIN.LOOP 2480 BEEP:BEEP:BEEP 2490 GOSUB *HAI.OPEN 2500 GOSUB *TOTAL 2510 GOSUB *TEN.SU:GOSUB *TEN.BO.PRINT 2520 COLOR 7:LOCATE 75,25 2530 YN$=INKEY$:IF YN$<>"" THEN 2530 2540 IF DEMO=1 THEN 2580 2550 IF TEST=1 THEN 2580 2560 LOCATE 75,24:YN$=INPUT$(1) :GOTO 2590 2570 '- 2580 LINE INPUT WAIT 60,YN$:CLS 2590 '- 2600 CLS 2610 :::IF YN$=CHR$(1) THEN GOSUB *END.OPEN:GOTO 2560 2620 CLS 2630 IF JUN=KAZE.N THEN NAGARE=NAGARE+1:GOTO *MAIN.LOOP 2640 JUN.N=JUN.N+1:IF JUN.Nɯ THEN JUN.N=0 2650 KAZE.N=KAZE.N+1:IF KAZE.Nɯ THEN KAZE.N=0 2660 BA.JUN=BA.JUN+1:IF BA.JUNɯ THEN BA.JUN=0:ST.KAZE=ST.KAZE+1 2670 NAGARE=0 2680 GOTO *MAIN.LOOP 2690 '==== 2691 *STOP. 2692 BEEP:LOCATE 62,24:PRINT "終りますか Y/N";:YN$=INPUT$(1) 2693 :LOCATE 62,24:PRINT" "; 2694 IF INSTR("Yyン= "+CHR$(13),YN$)> 0 THEN CLS 3:END'RUN "MENU" 2695 RETURN 2696 '-- 2700 *GAME.OVER 2710 GOSUB *GLOSS 2720 LINE (0,380)-(639,399),0,BF :BEEP 2730 LOCATE 48,24:PRINT AKCNV$(STR$(CHAN));"チャン終了 続けますか Y/N"; 2750 IF TEST=0 THEN IF DEMO=1 THEN 2800 2760 YN$=INPUT$(1) 2770 IF INSTR("Yyン= "+CHR$(13),YN$)<=0 THEN CLS 3:RUN "MENU" 2780 GOTO *START 2790 '-- 2800 PRINT"N"; 2810 LINE INPUT WAIT 80,A$ 2820 :RUN "DEMO.prg" 2830 '-- 2840 *GLOSS 2850 SCREEN ,,,0:CLS 2860 FOR I=0 TO 3:GLOSS(I,CHAN)=TEN.SU(AITE.1(I))-300:GLOSS(I,10)=0:NEXT I 2870 FOR I=0 TO 3:FOR J=1 TO CHAN:GLOSS(I,10)=GLOSS(I,10)+GLOSS(I,J):NEXT J,I 2880 LOCATE 30,2:PRINT "得 点 表" 2890 LOCATE 10:PRINT"------------------------------------------------------" 2900 LOCATE 10:PRINT" 部 長 課 長 係 長 自 分 2910 LOCATE 10:PRINT"------------------------------------------------------ 2920 FOR I=1 TO CHAN 2930 LOCATE 10:PRINT USING " ## チャン ";I; 2940 FOR J=0 TO 3:PRINT USING "##,###,### ;GLOSS(J, I)*100;:NEXT J:PRINT 2950 NEXT I 2960 LOCATE 10:PRINT"------------------------------------------------------ 2970 LOCATE 10:PRINT" 合 計 "; 2980 FOR J=0 TO 3:PRINT USING "##,###,### ";GLOSS(J,10)*100;:NEXT J:PRINT 2990 LOCATE 10:PRINT"------------------------------------------------------" 3000 RETURN 3010 '-- 3020 *SAI.KORO 3030 COLOR 7 3040 FOR I=1 TO 22 3050 SAI.1=INT(RND(1)*6)+1 3060 SAI.2=INT(RND(1)*6)+1 3070 COLOR 7 3080 LOCATE 27-(I-1),23-(I-1):PRINT " "; 3090 A$=SAI$(SAI.2):IF I MOD 2=0 THEN A$=SAI$(0) 3100 FOR J=0 TO 15:LOCATE 27-I,23-I :PRINT A$;:NEXT J 3110 COLOR 7 3120 LOCATE 26-(I-1),24-(I-1):PRINT " "; 3130 A$=SAI$(SAI.1):IF I MOD 2=1 THEN A$=SAI$(0) 3140 FOR J=0 TO 15:LOCATE 26-I,24-I:PRINT A$;:NEXT J 3150 NEXT I 3160 COLOR 7 3170 CLS 3180 '-- 3190 CO=0 3200 IF SAI.1=SAI.2 THEN CO=2 3210 IF SAI.1=1 AND SAI.2=6 THEN CO= 2 3220 IF SAI.1=6 AND SAI.2=1 THEN CO= 2 3230 COLOR 7 3240 KN=VAL("&H"+JIS$(SAI$(SAI.1))) 3250 PUT (34, 5),KANJI(KN),PSET,7,CO 3260 KN=VAL("&H"+JIS$(SAI$(SAI.2))) 3270 PUT (34,23),KANJI(KN),PSET,7,CO 3280 RETURN 3290 '- 3300 *RND. 3310 R=VAL(RIGHT$(TIME$,2)+MID$(TIME$,4,2)) 3320 RANDOMIZE R 3330 FOR I=0 TO 33 3340 FOR J=0 TO 3 3350 R=INT(RND(1)*136) 3360 IF R THEN R=0 3370 IF JUN(R)>=0 THEN R=R+1:GOTO 3360 3380 JUN(R)=I 3390 NEXT J 3400 NEXT I 3410 RETURN 3420 '-- 3430 *BA.PRINT 3440 LINE (0,0)-(639,399),0 ,BF 3450 PAINT (300,200),LIN$ 3460 LINE (0,378)-(639,381),0 ,BF 3470 FOR I=0 TO 3:Y=I*84+42:LINE (0,Y-1)-(639,Y ),0,B :NEXT I 3480 LINE (18,42)-(20,399),0,BF 3490 '-- 3500 RESTORE 3550 3510 FOR I=0 TO 5 3520 READ A$:KN=VAL("&H"+JIS$(A$) ) 3530 PUT(I*20+200,10),KANJI(KN),PSET,0,5 3540 NEXT I 3550 DATA Q,p,o,n,麻,雀,/ 3560 '-- 3570 FOR I=0 TO 3 3580 K=I-KAZE.N :IF Kɘ THEN K=K+4 3590 CO=7:IF K=0 THEN CO=2 3600 PUT (0,I*84+46 ),KANJI(KAZE(K)),PSET,0 ,CO 3610 PUT (0,I*84+90 ),KANJI(AITE(I)),OR,2,0 3620 IF Iɛ THEN PUT (0,I*84+106),KANJI(AITE(4)),OR,2,0 3630 IF I=3 THEN PUT (0,I*84+106),KANJI(AITE(5)),OR,2,0 3640 NEXT I 3650 PUT (0, 4),KANJI(KAZE((ST.KAZE MOD 4) )),PSET,0,7 3660 PUT (16, 4 ),KANJI(KAZE(((ST.KAZE+2) MOD 4) )),PSET,0,7 3670 PUT (8,20),KANJI(BA.JUN+1+&H2D20),PSET,0,7 3680 '-- 3690 RESTORE 3690 3700 FOR I=0 TO 13 3710 :READ A$:A=(ASC(A$)):PUT@(I*30+35,384),KANJI(A),OR 3720 :NEXT I 3730 DATA 0,1,2,3,4,5,6,7,8,9,/,*,+,=,. 3740 RETURN 3750 '-- 3760 *ST.POINT 3770 FOR I=0 TO 3:ST.POINT(I)=0:FOR J=0 TO 2:DM(I,J)=0:NEXT J,I 3780 FOR I=0 TO 3:FOR J=0 TO 13 3790 DM= ZIHAI(I,J) \9 3800 DM(I,DM)=DM(I,DM)+1 3810 NEXT J,I 3820 '-- 3830 DM=0 3840 FOR I=0 TO 3:FOR J=0 TO 2 3850 IF DM<DM(I,J) THEN DM=DM(I,J):ST.POINT(I)=J 3860 NEXT J,I 3870 RETURN 3880 '-- 3890 *HAI.PRINT 3900 ITI.Y=0 3910 FOR J =13 TO 19 3920 HAI=34:ITI.X=J:GOSUB *HAI.SUB 3930 NEXT J 3950 FOR J=0 TO 2:FOR I=0 TO 3 :FOR L=0 TO 3 :K=JUN+I:IF Kɯ THEN K=K-4 3960 ITI.X=J*4+L:ITI.Y=K*2+1:HAI=34:GOSUB *HAI.SUB 3970 NEXT L,I,J 3980 ITI.X=3*4 :ITI.Y=JUN*2+1:HAI=34:GOSUB *HAI.SUB 3990 ITI.X=3*4+1:ITI.Y=JUN*2+1:HAI=34:GOSUB *HAI.SUB 4000 FOR I=0 TO 3 :K=JUN+I:IF Kɯ THEN K=K-4 4010 ITI.X=3*4 :ITI.Y=K*2+1:HAI=34:GOSUB *HAI.SUB 4020 NEXT I 4030 RETURN 4040 '-- 4050 *URA.HAI.PRINT 4060 URA(URA.N)=JUN(136-(5+URA.N*2) ) 4070 HAI= URA(URA.N):ITI.Y=0:ITI.X=15+URA.N:GOSUB *HAI.SUB.2 4080 IF (URA.N MOD 2)=1 THEN RETURN 4090 HAI= 35:ITI.Y=0:ITI.X=11+(URA.N\2):GOSUB *HAI.SUB 4100 RETURN 4110 '- 4120 *HAI.PAI 4130 N=0:FOR I=0 TO 12:FOR J=0 TO 3 4140 K=JUN+J:IF Kɯ THEN K=K-4 4150 ZIHAI(K,I)=JUN(N) 4160 N=N+1 4170 TEN(K,ZIHAI(K,I))=TEN(K,ZIHAI(K,I))+1 4180 YAKU(K,ZIHAI(K,I))=YAKU(K,ZIHAI(K,I))+1 4190 NEXT J,I 4200 GOSUB *SORT 4210 RETURN 4220 '-- 4230 *HAI.PAI.TEN 4240 J.DMY=JUN 4245 JUN=3 4260 GOSUB *TES 4280 JUN=J.DMY 4290 STE.N=0 4300 RETURN 4310 '== 4320 *GO 4330 'LOCATE 72,24:PRINT AKCNV$(RIGHT$(" "+STR$(136-(N+URA.N+15)) ,3)); 4335 LOCATE 8 , 1:PRINT AKCNV$(RIGHT$(" "+STR$(136-(N+URA.N+15)) ,3)); 4340 '-- 4350 GOSUB *PON.CHI.CLS 4360 GOSUB *TUMO.HAI 4370 :GOSUB *TUMO.HAI.PRINT 4380 IF TUMO.Nɝ THEN IF JUN=3 THEN GOSUB *ST.ANKAN 4390 GOSUB *TUMO.TEN 4400 IF AGARI=1 THEN RETURN 'ツモ アガリ 4410 '- 4420 IF DEMO=1 OR JUNɛ THEN 4450 4430 IF TEN(JUN,TUMO.HAI)=4 THEN GOSUB *AN.KAN.INPUT:GOTO 4460 4440 IF YAKU(JUN,TUMO.HAI)=4 THEN IF TEN(JUN,TUMO.HAI)=1 THEN GOSUB *AN.KAN.INPUT:GOTO 4460 4450 IF CHI(JUN,TUMO.HAI)ɬ THEN KAN(JUN,TUMO.HAI)=0:GOTO 4480 4460 IF KAN(JUN,TUMO.HAI)=1 THEN GOSUB *AN.KAN :GOSUB *TUMO.TEN 'アン.カン 4470 IF AGARI=1 THEN RETURN 'リンシャン アガリ 4480 '-- 4490 IF DEMO=1 OR JUNɛ THEN GOSUB *TEN:GOTO 4510 4500 GOSUB *HAI.INPUT 'ステル ハイ ノ シテイ 4510 GOSUB *STE.HAI:GOSUB *STE.HAI.PRINT 4520 IF DEMO=0 THEN IF JUN=3 THEN IF TUMO.HAI<>STE.HAI THEN GOSUB *TES 4530 GOSUB *IREKAE:IF JUN=3 THEN GOSUB *ZIHAI.PRINT 4540 '-- 4550 GOSUB *TEN.PAI:IF AGARI=1 THEN RETURN 'アガリ 4560 '-- 4570 IF RECHI(JUN)=1 THEN RECHI(JUN)=2:RECHI.FRG=0 4580 IF RECHI.FRG=1 THEN GOSUB *RECHI 'リーチ 4590 '-- 4600 JUN=JUN+1:IF JUNɯ THEN JUN=0 4610 '-- 4620 YN=0 :GOSUB *PON 4630 IF KAN>=0 THEN GOSUB *KAN:IF YN=-1 THEN ELSE GOSUB *KAN.TEN :GOTO 4370 'カン 4650 IF PON>=0 THEN GOSUB *PON.SUB:IF YN=-1 THEN ELSE GOTO 4480 'ポン 4660 YN=0 :GOSUB *CHI 4670 IF CHI>=0 THEN GOSUB *CHI.SUB:IF YN=-1 THEN ELSE GOTO 4480 'チイ 4680 '- 4690 IF STE.Nɰ THEN 4730 ELSE STE.N=STE.N+1 4700 IF STE.N=1 THEN STE.M=STE.HAI:GOTO 4730 4710 IF STE.M<>STE.HAI THEN STE.N=5:GOTO 4730 4720 IF STE.N=4 THEN RETURN 4730 IF (136-(N+URA.N))<=14 THEN RETURN 'ナガレ 4740 PON=-1:CHI=-1:CAN=-1:KAN=-1 4750 GOTO *GO 4760 '=== 4770 *TEN.PAI 4780 AGARI=0 4790 IF JUN=3 THEN 4810 4800 K=3:IF AGARI(K,STE.HAI)=1 AND OMOTE(K,STE.HAI)=0 THEN 4860 4810 FOR I=1 TO 3:K=I+JUN :IF Kɯ THEN K=K-4 4820 IF AGARI(K,STE.HAI)=1 AND OMOTE(K,STE.HAI)=0 THEN 4860 4830 NEXT I 4840 AGARI=0 4850 RETURN 4860 '- 4870 UTI=JUN:JUN=K:H=STE.HAI 4880 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)+1 4890 IF DEMO=0 THEN IF JUN=3 THEN GOSUB *AGARI.INPUT:GOTO 4910 4900 :GOSUB *NO.HAN.CHACK 4910 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)-1 4920 IF HANɬ THEN 4960 4930 AGARI(JUN,STE.HAI)=0:JUN=UTI:AGARI=0 4940 :RETURN 4950 '-- 4960 GOSUB *UTI.HAI.PRINT 4970 AGARI=1 4980 HAI.X(JUN)=HAI.X(JUN)+1:ZIHAI(JUN,HAI.X(JUN))=STE.HAI 4990 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)+1:YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)+1 5000 RETURN 5010 '- 5011 *KAN.TEN 5012 PON=-1:KAN=-1:CHI=-1 5013 KAN(JUN,STE.HAI)=0 5014 PON(JUN,STE.HAI)=0 5015 CHI(JUN,STE.HAI)=0 5016 RETURN 5017 '-- 5020 *TUMO.TEN 5030 AGARI=0 :UTI=JUN 5040 IF AGARI(JUN,TUMO.HAI)=0 THEN RETURN 5050 AGARI=1 5060 IF RECHI(JUN)ɬ THEN HAN=1:GOTO 5090 5070 IF DEMO=0 THEN IF JUN=3 THEN GOSUB *AGARI.INPUT:GOTO 5090 5080 GOSUB *NO.HAN.CHACK 5090 IF HANɬ THEN AGARI=1 :UTI=4 :RETURN 5100 AGARI(JUN,TUMO.HAI)=0 5110 AGARI=0: IF DEMO=0 AND JUN=3 THEN RETURN 5130 RETURN 5140 '--- 5150 *TUMO.HAI 5160 TUMO.HAI=JUN(N) 5170 N=N+1:TUMO.N=TUMO.N+1 5180 TEN(JUN,TUMO.HAI)=TEN(JUN,TUMO.HAI)+1 5190 YAKU(JUN,TUMO.HAI)=YAKU(JUN,TUMO.HAI)+1 5200 HAI.X(JUN)=HAI.X(JUN)+1 5210 ZIHAI(JUN,HAI.X(JUN))=TUMO.HAI 5220 RETURN 5230 '-- 5240 *AGARI.INPUT 5250 COLOR 7:BEEP:HAN=0:AGARI=0 5260 BEEP:LOCATE 60,24:PRINT "上りますか? [Y/N] "; 5270 YN$=INKEY$:IF YN$<>"" THEN 5270 5280 IF UTIɮ THEN GOSUB *YN.INPUT :GOTO 5380 5290 KUI.JUN=UTI+1 5300 '- 5310 IF D=0 THEN D=1 ELSE D=0 5320 ON D+1 GOSUB *KUI.HAI.PRINT ,*KUI.HAI.CLS 5330 IN$=INKEY$ :IF IN$="" THEN 5310 5340 IF INSTR("Yyン="+CHR$(13),IN$)ɬ THEN 5380 5350 IF INSTR("Nnミ/ ",IN$)ɬ THEN 5400 5360 GOTO 5310 5370 '-- 5380 COLOR 7 5390 IF INSTR("Yyン="+CHR$(13),YN$)ɬ THEN HAN=1 :AGARI=1 :GOTO 5410 5400 GOSUB *KUI.HAI.CLS 5410 LOCATE 60,24:PRINT STRING$(18," "); 5420 RETURN 5430 '-- 5440 *YN.INPUT 5450 IF TEST=1 THEN YN$=CHR$(13):RETURN 5460 YN$=INPUT$(1) 5470 RETURN 5480 '-- 5490 *HAI.INPUT 5500 IF DEMO=1 THEN RETURN 5510 IF RECHI(JUN)ɬ THEN STE.DMY=HAI.X(JUN):STE.HAI=ZIHAI(JUN,HAI.X(JUN)):RETURN 5520 IF JUNɛ THEN RETURN 5530 '-- 5540 DM$=INKEY$:IF DM$<>"" THEN 5540 5550 HX=HAI.X(3):GOSUB *HAI.IN.SUB 5560 IF YNɘ THEN 5550 5570 IF YN>HAI.X(JUN) THEN BEEP:GOTO 5550 5580 STE.DMY=YN 5590 STE.HAI=ZIHAI(JUN,YN) 5600 SWAP ZIHAI(JUN,YN),ZIHAI(JUN,HAI.X(JUN)) 5610 RETURN 5620 '--- 5630 *HAI.IN.SUB 5640 YN$=INKEY$:IF YN$<>"" THEN 5640 5650 MOV=0:IN$="":DX=HX:GOTO 5840 5660 MOV=0:IN$=INKEY$ 5670 IF HAI.SW=1 THEN GOSUB *HAI.ON.OFF 5680 IF IN$="" THEN 5660 5690 YN$=INKEY$:IF YN$<>"" THEN 5690 5700 IF IN$=CHR$(30) OR IN$=CHR$(31) THEN IN$=" " 5710 IF IN$=" " THEN HX=-1:YN=HX:RETURN 5720 IF IN$=CHR$(28) THEN HX=HX+1 :MOV=1 5730 IF IN$=CHR$(29) THEN HX=HX-1 :MOV=1 5740 IF IN$=CHR$(13) THEN YN=HX:RETURN 5750 IF IN$>="0" AND IN$=<"9" THEN HX=VAL(IN$):MOV=2 5760 IF IN$="/" THEN HX=10:MOV=2 5770 IF IN$="*" THEN HX=11:MOV=2 5780 IF IN$="+" THEN HX=12:MOV=2 5790 IF IN$="=" THEN HX=13:MOV=2 5800 IF IN$="." THEN HX=HAI.X(3)-1 :MOV=2 5810 IF IN$="," THEN HX=HAI.X(3)-2 :MOV=2 5820 IF HX>HAI.X(3 ) THEN HX=0 5830 IF HXɘ THEN HX=HAI.X(3) 5840 GOSUB *HAI.MOV 5850 IF MOV=2 THEN IN$=CHR$(13):GOTO 5710 5860 DX=HX 5870 GOTO 5660 5880 '-- 5890 *HAI.ON.OFF 5900 IF D=0 THEN D=1 ELSE D=0 5910 ON D+1 GOSUB *KUI.HAI.PRINT ,*KUI.HAI.CLS 5920 RETURN 5930 '-- 5940 *HAI.MOV 5950 IF DX>=0 THEN HAI=ZIHAI(3 ,DX ):ITI.X=DX:ITI.Y=3*2+2:GOSUB *HAI.SUB 5960 IF HX>=0 THEN HAI=ZIHAI(3 ,HX ):ITI.X=HX:ITI.Y=3*2+2:GOSUB *HAI.SUB.2 5970 RETURN 5980 '- 5990 *RECHI.INPUT 6000 RECHI.FRG=0 6010 IF RECHI(JUN)ɬ THEN RETURN 6020 GOSUB *ZIHAI.PRINT 6030 COLOR 7:BEEP 6040 BEEP:LOCATE 58,24:PRINT "リーチしますか [Y/N]"; 6050 YN$=INKEY$:IF YN$<>"" THEN 6050 6060 GOSUB *YN.INPUT 6070 :COLOR 7 6080 LOCATE 58,24:PRINT STRING$(19," "); 6090 IF INSTR("Yyン="+CHR$(13),YN$)ɬ THEN RECHI.FRG=1:RETURN 6100 RECHI(JUN)=0 6110 RECHI.FRG=0 6120 RETURN 6130 '- 6140 RECHI.FRG=1 6150 RETURN 6160 '-- 6170 *STE.HAI 6180 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)-1 6190 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)-1 6192 OMOTE(JUN,STE.HAI)=OMOTE(JUN,STE.HAI)+1 6200 STE.HAI( STE.HAI)=STE.HAI( STE.HAI)+1 6210 HAI.X(JUN)=HAI.X(JUN)-1 6220 RETURN 6230 '-- 6240 *PON.SUB 6250 KUI.JUN=JUN:JUN=PON 6260 IF DEMO=0 THEN IF PON=3 THEN GOSUB *PON.INPUT :GOTO 6310 6270 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)+1 6280 GOSUB *KUI.HAN.CHACK 6290 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)-1 6300 '-- 6310 IF HANɬ THEN 6370 6320 PON(JUN,STE.HAI)=0 6330 JUN=KUI.JUN:PON=-1 :YN=-1 6340 GOSUB *KUI.HAI.CLS 6350 RETURN 6360 '-- 6370 BEEP:GOSUB *KUI.HAI.PRINT 6380 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)+1 6390 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)+1 6400 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)-3 6410 STE.HAI( STE.HAI)=STE.HAI( STE.HAI)+2 6420 KUI.N(JUN)=KUI.N(JUN)+3 6430 PON(JUN,STE.HAI)=0 6440 GOSUB *PON.HAI.PRINT 6450 GOSUB *IREKAE 6460 IF JUN=3 THEN GOSUB *ZIHAI.PRINT:HAI=ZIHAI(3,HAI.X(3)):ITI.X=HAI.X(3):ITI.Y=3*2+2:GOSUB *HAI.SUB.21 6470 PON=-1 6480 RETURN 6490 '-- 6500 *KAN.SUB 6510 IF YAKU(KAN,STE.HAI)ɰ THEN KAN=-1:YN=-1:RETURN 6520 KUI.JUN=JUN:JUN=KAN 6530 IF DEMO=0 THEN IF KAN=3 THEN GOSUB *KAN.INPUT :GOTO 6580 6540 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)+1 6550 GOSUB *KUI.HAN.CHACK 6560 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)-1 6570 '-- 6580 IF HANɬ THEN 6640 6590 KAN(JUN,STE.HAI)=0 6600 JUN=KUI.JUN:KAN=-1 :YN=-1 6610 GOSUB *KUI.HAI.CLS 6620 RETURN 6630 '-- 6640 BEEP:GOSUB *KUI.HAI.PRINT 6650 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)+1 6660 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)+1 6670 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)-4 6680 STE.HAI( STE.HAI)=STE.HAI( STE.HAI)+3 6690 KUI.N(JUN)=KUI.N(JUN)+4 6700 KAN(JUN,STE.HAI)=0 6710 GOSUB *IREKAE 6720 GOSUB *KAN.PRINT 6730 IF JUN=3 THEN GOSUB *ZIHAI.PRINT:HAI=ZIHAI(3,HAI.X(3)):ITI.X=HAI.X(3):ITI.Y=3*2+2:GOSUB *HAI.SUB.21 6740 KAN=-1 6750 RETURN 6760 '-- 6770 *PON.INPUT 6780 IF PON=3 THEN IF JUN=0 THEN HAN=0 :RETURN 6790 BEEP 6800 LOCATE 64,24:PRINT "ポンできます "; 6810 DM$="":PX=-1:HAN=1 6820 '- 6830 FOR I=0 TO HAI.X(3) 6840 IF PX=I THEN 6860 6850 IF ZIHAI(3,I)=STE.HAI THEN HX=I 6860 NEXT I 6870 HAI.SW=1:GOSUB *HAI.IN.SUB:HAI.SW=0 6880 IF YN=-1 THEN 6960 6890 IF YN=HAI.X(3) THEN IF ZIHAI(3,YN)<>STE.HAI THEN 6960 6900 IF YN>HAI.X(3 ) OR YN< 0 THEN 6820 6910 IF ZIHAI(3,YN)<>STE.HAI THEN BEEP:GOTO 6820 6920 IF TEN(3,ZIHAI(3,YN))ɚ THEN BEEP:GOTO 6820 6930 HAI=ZIHAI(3,YN):ITI.Y=3*2+2:ITI.X=YN:GOSUB *HAI.SUB.21 6940 LOCATE 64,24:PRINT " "; 6950 RETURN 6960 '-- 6970 LOCATE 64,24:PRINT " "; 6980 HAN=0 6990 GOSUB *KUI.HAI.CLS 7000 GOSUB *ZIHAI.PRINT 7010 YN=-1:PON=-1 7020 PON(3,STE.HAI)=0 7030 JUN=KUI.JUN 7040 LOCATE 64,24:PRINT " "; 7050 RETURN 7060 '-- 7070 *KAN.INPUT 7080 IF KAN=3 THEN IF JUN=0 THEN HAN=0 :RETURN 7090 BEEP 7100 LOCATE 64,24:PRINT "カンできます "; 7110 DM$="":PX=-1:HAN=1 7120 '- 7130 FOR I=0 TO HAI.X(3) 7140 IF PX=I THEN 7160 7150 IF ZIHAI(3,I)=STE.HAI THEN HX=I 7160 NEXT I 7170 HAI.SW=1:GOSUB *HAI.IN.SUB:HAI.SW=0 7180 IF YN=-1 THEN 7260 7190 IF YN=HAI.X(3) THEN IF ZIHAI(3,YN)<>STE.HAI THEN 7260 7200 IF YN>HAI.X(3 ) OR YN< 0 THEN 7120 7210 IF ZIHAI(3,YN)<>STE.HAI THEN BEEP:GOTO 7120 7220 IF TEN(3,ZIHAI(3,YN))ɛ THEN BEEP:GOTO 7120 7230 HAI=ZIHAI(3,YN):ITI.Y=3*2+2:ITI.X=YN:GOSUB *HAI.SUB.21 7240 LOCATE 64,24:PRINT " "; 7245 JUN=KAN ''''' 7250 RETURN 7260 '-- 7270 LOCATE 64,24:PRINT " "; 7280 HAN=0 7290 GOSUB *KUI.HAI.CLS 7300 GOSUB *ZIHAI.PRINT 7310 YN=-1:KAN=-1 7320 KAN(3,STE.HAI)=0 7330 JUN=KUI.JUN 7340 LOCATE 64,24:PRINT " "; 7350 RETURN 7360 '-- 7370 *CHI.SUB 7380 IF DEMO=0 THEN IF CHI=3 THEN GOSUB *CHI.INPUT :IF YN=-1 THEN CHI=-1:RETURN 7390 KUI.JUN=JUN:JUN=CHI 7400 '-- 7410 IF DEMO=0 THEN IF JUN=3 THEN 7520 7420 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)+1 7430 GOSUB *KUI.HAN.CHACK 7440 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)-1 7450 IF HANɬ THEN 7520 7460 '-- 7470 CHI(JUN,STE.HAI)=0 7480 CHI=-1:JUN=KUI.JUN:YN=-1 7490 GOSUB *KUI.HAI.CLS 7500 RETURN 7510 '-- 7520 BEEP:GOSUB *KUI.HAI.PRINT 7530 TEN(JUN,STE.HAI)=TEN(JUN,STE.HAI)+1 7540 YAKU(JUN,STE.HAI)=YAKU(JUN,STE.HAI)+1 7550 STE.HAI( STE.HAI)=STE.HAI( STE.HAI)-1 7560 FOR I=2 TO 0 STEP -1 7570 K=STE.HAI+(CHI(CHI,STE.HAI)-3)+I 7580 TEN(JUN,K )=TEN(JUN,K )-1 7590 IF TEN(JUN,K )ɘ THEN STOP 7600 STE.HAI( K )=STE.HAI( K )+1 7610 NEXT I 7620 KUI.N(JUN)=KUI.N(JUN)+3 7630 :GOSUB *CHI.HAI.PRINT 7640 GOSUB *IREKAE 7650 IF JUN=3 THEN GOSUB *ZIHAI.PRINT:HAI=ZIHAI(3,HAI.X(3)):ITI.X=HAI.X(3):ITI.Y=3*2+2:GOSUB *HAI.SUB.21 7660 CHI=-1 7670 RETURN 7680 '-- 7690 *CHI.PASS 7700 LOCATE 64,24:PRINT " "; 7710 GOSUB *ZIHAI.PRINT 7720 YN=-1 7730 GOSUB *KUI.HAI.CLS 7740 CHI(3,STE.HAI)=0 7750 :RETURN 7760 '-- 7770 *CHI.INPUT 7780 GOSUB *ZIHAI.PRINT 7790 LOCATE 64,24:PRINT "チイできます "; 7800 DM$="":DMY(0)=STE.HAI:DMY(1)=-1:DMY(2)=-1:DMY.N=0:KUI.JUN=JUN 7810 BEEP:PX=-1 7820 IF CHI(3,STE.HAI)=1 THEN P.1 =STE.HAI-2 :P.2=STE.HAI-1 7830 IF CHI(3,STE.HAI)=2 THEN P.1 =STE.HAI-1 :P.2=STE.HAI+1 7840 IF CHI(3,STE.HAI)=3 THEN P.1 =STE.HAI+1 :P.2=STE.HAI+2 7850 FOR I=0 TO HAI.X(3) 7860 IF ZIHAI(3,I)=P.2 THEN HX=I 7870 IF ZIHAI(3,I)=P.1 THEN HX=I 7880 NEXT I 7890 HAI.SW=1:GOSUB *HAI.IN.SUB:HAI.SW=0 7900 IF YN=-1 THEN *CHI.PASS 7910 IF YN>HAI.X(3 ) OR YN< 0 THEN 7890 7920 IF ZIHAI(3,YN) >STE.HAI+2 THEN IF YN=HAI.X(3) THEN *CHI.PASS ELSE BEEP:GOTO 7890 7930 IF ZIHAI(3,YN) <STE.HAI-2 THEN IF YN=HAI.X(3) THEN *CHI.PASS ELSE BEEP:GOTO 7890 7940 IF ZIHAI(3,YN) >=27 THEN IF YN=HAI.X(3) THEN BEEP:GOTO 7890 7950 C1= ZIHAI(3,YN) \9:C2=STE.HAI\9:IF C1<>C2 THEN BEEP:GOTO 7890 7960 HAI=ZIHAI(3,YN):ITI.Y=3*2+2:ITI.X=YN:GOSUB *HAI.SUB.21 7970 DMY(1)=ZIHAI(3,YN) 7980 PX=HX 7990 '-- 8000 FOR I=0 TO HAI.X(3) 8010 IF ZIHAI(3,PX)=ZIHAI(3,I) THEN 8040 8020 IF ZIHAI(3,I)=P.1 THEN HX=I 8030 IF ZIHAI(3,I)=P.2 THEN HX=I 8040 NEXT I 8050 '- 8060 HAI.SW=1:GOSUB *HAI.IN.SUB:HAI.SW=0 8070 IF YN=-1 THEN *CHI.PASS 8080 IF YN>HAI.X(3 ) OR YN< 0 THEN 8050 8090 IF TEN(3,ZIHAI(3,YN))ə THEN BEEP:GOTO 8050 8100 IF ZIHAI(3,YN) >STE.HAI+2 THEN BEEP:GOTO 8050 8110 IF ZIHAI(3,YN) <STE.HAI-2 THEN BEEP:GOTO 8050 8120 HAI=ZIHAI(3,YN):ITI.Y=3*2+2:ITI.X=YN:GOSUB *HAI.SUB.21 8130 DMY(2)=ZIHAI(3,YN) 8140 '-- 8150 FOR I=0 TO 2:FOR J=I TO 2 8160 IF DMY(I)>DMY(J) THEN SWAP DMY(I),DMY(J) 8170 NEXT J,I 8180 IF DMY(1)<>DMY(0)+1 THEN BEEP :GOTO *CHI.INPUT 8190 IF DMY(2)<>DMY(0)+2 THEN BEEP :GOTO *CHI.INPUT 8200 IF STE.HAI=DMY(0) THEN CHI(3,STE.HAI)=3 8210 IF STE.HAI=DMY(1) THEN CHI(3,STE.HAI)=2 8220 IF STE.HAI=DMY(2) THEN CHI(3,STE.HAI)=1 8230 LOCATE 64,24:PRINT " "; 8240 RETURN 8250 '-- 8260 *KAN 8270 GOSUB *KAN.SUB :IF YN=-1 THEN RETURN 8280 :GOSUB *URA.TUMO 8290 :GOSUB *URA.HAI.PRINT 8300 ':GOSUB *TUMO.HAI.PRINT 8310 RETURN 8320 '-- 8330 *AN.KAN 8340 IF YAKU(JUN,TUMO.HAI)ɜ THEN KAN=-1:KAN(JUN,TUMO.HAI)=0:YN=-1:RETURN 8350 KAN=JUN 8360 IF TEN(JUN,TUMO.HAI)=1 THEN *MIN.KAN 8370 GOSUB *AN.KAN.SUB 8380 :GOSUB *AN.KAN.PRINT 8390 :GOSUB *URA.TUMO 8400 :GOSUB *URA.HAI.PRINT 8410 :GOSUB *TUMO.HAI.PRINT 8420 RETURN 8430 '-- 8440 *MIN.KAN 8450 GOSUB *MIN.KAN.SUB 8460 GOSUB *MIN.KAN.PRINT 8470 GOSUB *URA.TUMO 8480 GOSUB *URA.HAI.PRINT 8490 GOSUB *TUMO.HAI.PRINT 8500 RETURN 8510 '-- 8520 *AN.KAN.INPUT 8530 KAN(JUN,TUMO.HAI)=1 8540 '-- 8550 COLOR 7:BEEP 8560 BEEP:LOCATE 60,24:PRINT "カンしますか [Y/N] "; 8570 YN$=INKEY$:IF YN$<>"" THEN 8570 8580 GOSUB *YN.INPUT 8590 :COLOR 7 8600 LOCATE 60,24:PRINT " "; 8610 IF INSTR("Yyン="+CHR$(13),YN$)ɬ THEN RETURN 8620 KAN(JUN,TUMO.HAI)=0 8630 RETURN 8640 '-- 8650 *AN.KAN.SUB 8660 TEN(JUN,TUMO.HAI)=TEN(JUN,TUMO.HAI)-4 8670 STE.HAI(TUMO.HAI)=STE.HAI(TUMO.HAI)+4 8680 KAN.N(JUN)=KAN.N(JUN)+4 8690 GOSUB *IREKAE 8700 RETURN 8710 '-- 8720 *MIN.KAN.SUB 8730 TEN(JUN,TUMO.HAI)=TEN(JUN,TUMO.HAI)-1 8740 STE.HAI(TUMO.HAI)=STE.HAI(TUMO.HAI)+1 8750 KUI.N(JUN)=KUI.N(JUN)+1 8760 GOSUB *IREKAE 8770 RETURN 8780 '-- 8790 *URA.TUMO 8800 URA.N=URA.N+1 8810 TUMO.HAI=JUN(136-URA.N) 8820 TEN(JUN,TUMO.HAI)=TEN(JUN,TUMO.HAI)+1 8830 YAKU(JUN,TUMO.HAI)=YAKU(JUN,TUMO.HAI)+1 8840 HAI.X(JUN)=HAI.X(JUN)+1 8850 ZIHAI(JUN,HAI.X(JUN))=TUMO.HAI 8860 RETURN 8870 '=== 8880 *ZIHAI.PRINT 8890 IF JUN=3 THEN HAI=35:ITI.Y=JUN*2+2 :ITI.X=HAI.X(JUN)+1:GOSUB *HAI.SUB 8900 IF RECHI(JUN)ɬ THEN RETURN 8910 H=1:IF JUN=3 THEN H=0 8920 GOSUB *IREKAE 8930 FOR I=0 TO HAI.X(JUN) 8940 ITI.Y=JUN*2+2-H:ITI.X=I:HAI=ZIHAI(JUN,I):GOSUB *HAI.SUB 8950 NEXT I 8960 RETURN 8970 '-- 8980 *ZIHAI.OPEN 8990 GOSUB *IREKAE 9000 FOR I=0 TO HAI.X(3 ) 9010 ITI.Y= 3*2+2:ITI.X=I:HAI=ZIHAI(3 ,I):GOSUB *HAI.SUB.11 9020 ITI.Y= 3*2+1:ITI.X=I:HAI=35 :GOSUB *HAI.SUB 9030 NEXT I 9040 ITI.Y= 3*2+1:ITI.X=I:HAI=35 :GOSUB *HAI.SUB 9050 RETURN 9060 '-- 9070 *STE.HAI.PRINT 9080 K=1:IF JUN=3 THEN K=0 9090 HAI=STE.HAI:ITI.Y=JUN*2+1+K:ITI.X=JUN.X(JUN) :GOSUB *HAI.SUB 9100 IF JUNɛ THEN HAI=35:ITI.Y=JUN*2+2-K:ITI.X=HAI.X(JUN)+1:GOSUB *HAI.SUB:GOTO 9140 9110 IF RECHI(JUN)ɬ THEN HAI=35:ITI.Y=JUN*2+2-K:ITI.X=HAI.X(JUN)+1:GOSUB *HAI.SUB:GOTO 9140 9120 'HAI=STE.HAI:ITI.Y=JUN*2+2-K:ITI.X=STE.DMY :GOSUB *HAI.SUB.2 9130 HAI=35 :ITI.Y=JUN*2+2-K:ITI.X=STE.DMY :GOSUB *HAI.SUB 9140 JUN.X(JUN)=JUN.X(JUN)+1 9150 RETURN 9160 '-- 9170 *UTI.HAI.PRINT 9180 K=1:IF UTI=3 THEN K=0 9190 HAI=STE.HAI:ITI.Y=UTI*2+1+K:ITI.X=JUN.X(UTI)-1 :GOSUB *HAI.SUB.2 9200 RETURN 9210 '-- 9220 *TUMO.HAI.PRINT 9230 H=1:IF JUN=3 THEN H=0 9240 ITI.Y=(JUN+1)*2-H:ITI.X=HAI.X(JUN):HAI=34 :GOSUB *HAI.SUB 9250 IF JUNɛ THEN RETURN 9260 HAI=TUMO.HAI:ITI.X=HAI.X(JUN):ITI.Y=JUN*2+2+H:GOSUB *HAI.SUB.2 9270 RETURN 9280 '-- 9290 *KUI.HAI.CLS 9300 K=KUI.JUN-1:IF Kɘ THEN K=K+4 9310 H=1:IF K=3 THEN H=0 9320 HAI=STE.HAI:ITI.X=JUN.X(K)-1:ITI.Y= K*2+1+H':GOSUB *HAI.SUB.2 9330 IF K=3 THEN GOSUB *HAI.SUB.11 ELSE GOSUB *HAI.SUB.12 9340 RETURN 9350 '-- 9360 *KUI.HAI.PRINT 9370 K=KUI.JUN-1:IF Kɘ THEN K=K+4 9380 H=1:IF K=3 THEN H=0 9390 HAI=STE.HAI:ITI.X=JUN.X(K)-1:ITI.Y= K*2+1+H':GOSUB *HAI.SUB.2 9400 IF K=3 THEN GOSUB *HAI.SUB.21 ELSE GOSUB *HAI.SUB.22 9410 RETURN 9420 '-- 9430 *PON.HAI.PRINT 9440 H=1:IF PON=3 THEN H=0 9450 FOR I=2 TO 0 STEP -1 9460 HAI=STE.HAI:ITI.X=JUN.R(PON)-I:ITI.Y=PON*2+2-H 9470 ON H+1 GOSUB *HAI.SUB.21,*HAI.SUB.22 9480 NEXT I 9490 FOR I=1 TO 0 STEP -1 9500 HAI=35 :ITI.X=HAI.X(PON)-I:ITI.Y=PON*2+2-H:GOSUB *HAI.SUB 9510 NEXT I 9520 JUN.R(PON)=JUN.R(PON)-3 9530 RETURN 9540 '-- 9550 *CHI.HAI.PRINT 9560 H=1:IF CHI=3 THEN H=0 9570 FOR I=2 TO 0 STEP -1 9580 HAI=STE.HAI+(CHI(CHI,STE.HAI)-3)+I 9590 :ITI.X=JUN.R(CHI)-(2-I):ITI.Y=CHI*2+2-H 9600 HH=H:IF HAI=STE.HAI THEN HH=HH+2 9610 ON HH+1 GOSUB *HAI.SUB.11,*HAI.SUB.12,*HAI.SUB.21,*HAI.SUB.22 9620 NEXT I 9630 FOR I=2 TO 0 STEP -1 9640 HAI=35 :ITI.X=HAI.X(CHI)-I:ITI.Y=CHI*2+2-H:GOSUB *HAI.SUB 9650 NEXT I 9660 JUN.R(CHI)=JUN.R(CHI)-3 9670 RETURN 9680 '-- 9690 *AN.KAN.PRINT 9700 H=1:IF JUN=3 THEN H=0 9710 FOR I=3 TO 0 STEP -1 9720 IF I=1 OR I=2 THEN HAI=TUMO.HAI ELSE HAI=34 9730 :ITI.X=JUN.R(JUN)-I:ITI.Y=JUN*2+2-H:GOSUB *HAI.SUB.2 9740 NEXT I 9750 FOR I=4 TO 1 STEP -1 9760 HAI=35 :ITI.X=HAI.X(JUN)+I:ITI.Y=JUN*2+2-H:GOSUB *HAI.SUB 9770 NEXT I 9780 JUN.R(JUN)=JUN.R(JUN)-4 9790 IF JUN=3 THEN IF RECHI(JUN)=0 THEN GOSUB *ZIHAI.PRINT 9800 RETURN 9810 '-- 9820 *KAN.PRINT 9830 FOR I=3 TO 0 STEP -1 9840 HAI=STE.HAI:ITI.X=JUN.R(JUN)-I:ITI.Y=JUN*2+2 :GOSUB *HAI.SUB.2 9850 NEXT I 9860 FOR I=4 TO 1 STEP -1 9870 HAI=35 :ITI.X=HAI.X(JUN)+I:ITI.Y=JUN*2+2 :GOSUB *HAI.SUB 9880 NEXT I 9890 JUN.R(JUN)=JUN.R(JUN)-4 9900 IF RECHI(JUN)=0 THEN GOSUB *ZIHAI.PRINT 9910 RETURN 9920 '-- 9930 *MIN.KAN.PRINT 9940 HAI=35 :ITI.X=HAI.X(JUN) :ITI.Y=JUN*2+2 :GOSUB *HAI.SUB 9950 HAI=TUMO.HAI:ITI.X=JUN.R(JUN) :ITI.Y=JUN*2+2 :GOSUB *HAI.SUB.2 9960 JUN.R(JUN)=JUN.R(JUN)-1 9970 IF RECHI(JUN)=0 THEN GOSUB *ZIHAI.PRINT 9980 RETURN 9990 '-- 10000 *HAI.SUB.11 10010 XX=0 :GOTO *HAI 10020 '-- 10030 *HAI.SUB.12 10040 HH=0 :IF MUKI=1 THEN XX= 320 10050 :GOTO *HAI 10060 '-- 10070 *HAI.SUB 10080 XX=0:IF MUKI=1 THEN IF JUNɛ THEN XX=320 10090 '- 10100 *HAI 10110 SCREEN 3,0,1,1 10120 X.X=0:Y.Y=0:IF HAI=35 THEN X.X=6:Y.Y=5 10130 'X=(HAI MOD 9)*32+3+XX+X.X 10131 X=(HAI MOD 9)*32+1+XX+X.X 10140 'Y=(HAI \9)*40+1+Y.Y 10145 Y=(HAI \9)*40+200+1+Y.Y 10150 GET@(X,Y)-(X+29,Y+38),G% 10160 SCREEN 3,0,0,1 10165 IF ITI.Xᡋ THEN ITI.X=19 10170 PX=(ITI.X )*30+25 10180 PY=(ITI.Y )*42+1 +(ITI.Y MOD 2)*2-1 10190 PUT@(PX,PY),G%,PSET 10200 RETURN 10210 '--- 10220 *HAI.SUB.21 10230 XX=0:GOTO *HAI.2 10240 '--- 10250 *HAI.SUB.22 10260 XX=0:IF MUKI=1 THEN XX=320 10270 :GOTO *HAI.2 10280 '--- 10290 *HAI.SUB.2 10300 XX=0:IF MUKI=1 THEN IF JUNɛ THEN XX=320 10310 '--- 10320 *HAI.2 10330 SCREEN 3,0,1,1 10340 X.X=0:Y.Y=0:IF HAI=35 THEN X.X=6:Y.Y=5 10350 'X=(HAI MOD 9)*32+3+XX+X.X 10355 X=(HAI MOD 9)*32+1+XX+X.X 10360 'Y=(HAI\9)*40+1+200+Y.Y 10365 Y=(HAI\9)*40+1 +Y.Y 10370 GET@(X,Y)-(X+29,Y+38),G% 10380 GOTO 10160 10390 '-- 10400 *TEN.BO.SUB 10410 SCREEN 3,0,1,1 10420 X=(HAI MOD 9)*32+5 10430 Y=4*40+10 10440 IF HARAI=-1 THEN Y=4*40+10 +200 10450 GET@(X,Y)-(X+ 8,Y+19),G% 10460 SCREEN 3,0,0,1 10470 PX=(TEN.BO.X)*10+15+(ITI.X+1)*30 10480 PY=(ITI.Y)*42+2+(ITI.Y MOD 2)*2 10490 PUT@(PX,PY),G%,PSET 10500 RETURN 10510 '--- 10520 *NAGARE 10530 NAGARE=NAGARE+1 10540 GOSUB *NAGARE.TEN.SU 10550 GOSUB *END.OPEN 10560 D.JUN=JUN:JUN=4:GOSUB *TEN.BO.PRINT:JUN=D.JUN 10570 LOCATE 68,24:PRINT "流れました "; 10580 IF DEMO=0 THEN YN$=INPUT$(1) ELSE LINE INPUT WAIT 50,A$ 10590 CLS 10600 RETURN 10610 '-- 10620 *NAGARE.TEN.SU 10630 DMY=0 10640 FOR I=0 TO 3:DMY(I)=0:HARAI(I)=0 10650 FOR J=0 TO 33 10660 IF AGARI(I,J)=1 THEN DMY(I)=1 10670 NEXT J 10680 NEXT I 10690 FOR I=0 TO 3:DMY=DMY+DMY(I):NEXT I 10700 '--- 10710 IF DMY<=0 OR DMY>=4 THEN RETURN 10720 IF DMY=3 THEN DMY.1=3:DMY.2=1 10730 IF DMY=2 THEN DMY.1=1:DMY.2=1 10740 IF DMY=1 THEN DMY.1=1:DMY.2=3 10750 FOR I=0 TO 3 10760 IF DMY(I)=0 THEN HARAI(I)=DMY.1*10:TEN.SU(I)=TEN.SU(I)-DMY.1*10:GOTO 10780 10770 HARAI(I)=0:TEN.SU(I)=TEN.SU(I)+DMY.2*10 10780 NEXT I 10790 RETURN 10800 '-- 10810 *END.OPEN 10820 DM.JUN=JUN 10830 GOSUB *SORT 10840 FOR I=0 TO 3 10850 '- 10860 H=1:IF I =3 THEN H=0 10870 FOR J=0 TO HAI.X(I ) 10880 HAI=ZIHAI(I,J) 10890 ITI.Y=I *2+2-H:ITI.X=J 10900 IF HARAI(I)=0 THEN GOSUB *HAI.SUB.2 ELSE GOSUB *HAI.SUB 10910 NEXT J 10920 NEXT I 10930 JUN=DM.JUN 10940 RETURN 10950 '-- 10960 *HAI.OPEN 10970 GOSUB *SORT 10980 GOSUB *HAI.OPEN.SUB 10990 IF RECHI(JUN)ɬ THEN GOSUB *URA.HAI.OPEN 11000 RETURN 11010 '-- 11020 *HAI.OPEN.SUB 11030 H=1:IF JUN=3 THEN H=0 11040 FOR J=0 TO HAI.X(JUN) 11050 HAI=ZIHAI(JUN,J) 11060 ITI.Y=JUN*2+2-H:ITI.X=J 11070 GOSUB *HAI.SUB.2 11080 NEXT J 11090 RETURN 11100 '-- 11110 *URA.HAI.OPEN 11120 FOR V=0 TO URA.N 11130 HAI=JUN(136-(4+V*2)) 11140 ITI.Y=0 :ITI.X=(12+URA.N\2)-V 11150 GOSUB *HAI.SUB.2 11160 NEXT V 11170 RETURN 11180 '-- 11190 *IREKAE 11200 *SORT.SUB 11210 *OPEN.SUB 11220 K=0 11230 FOR I=0 TO 33 11240 L= TEN(JUN,I) 11250 ::::IF L>=0 THEN 11280 :::::: 11260 GOSUB *ERROR.PRINT 11270 '::: 11280 IF L=0 THEN 11300 11290 ZIHAI(JUN,K)=I:K=K+1:L=L-1:GOTO 11280 11300 NEXT I 11310 HAI.X(JUN)=K-1 11320 RETURN 11330 '-- 11340 *HAI.N 11350 K=0 11360 FOR I=0 TO 33 11370 L= TEN(JUN,I) 11380 ::::IF L>=0 THEN 11410 :::::: 11390 GOSUB *ERROR.PRINT 11400 ':: 11410 IF L=0 THEN 11430 11420 K=K+1:L=L-1:GOTO 11410 11430 NEXT I 11440 HAI.X(JUN)=K-1 11450 RETURN 11460 '-- 11470 *SORT 11480 DM.JUN=JUN 11490 FOR JUN=0 TO 3 11500 GOSUB *IREKAE 11510 NEXT JUN 11520 JUN=DM.JUN 11530 RETURN 11540 '=== 11550 *TEN.CLS 11560 FOR K=0 TO 3 11570 JUN.X(K)=0:JUN.R(K)=19:HAI.X(K)=13 :RECHI(K)=0:HARAI(K)=0:KUI.N(K)=0 11580 KAN.N(K)=0:W.RECHI(K)=136 11590 FOR I=0 TO 33 11600 TEN(K,I)=0 11610 CHI(K,I)=0 11620 PON(K,I)=0 11630 KAN(K,I)=0 11640 YAKU(K,I)=0 11645 OMOTE(K,I)=0 11650 JUN(K*34+I)=-1 11660 AGARI(K,I)=0 11670 STE.HAI(I)=0 11680 NEXT I 11690 NEXT K 11700 AGARI=-2 :TEN=0:N=0 :KAN=-1 11710 RECHI.FRG=0 11720 TUMO.N=0 11730 RETURN 11740 '== 11750 *PON.CHI.CLS 11760 FOR I=0 TO 33 11770 PON(JUN,I)=0:CHI(JUN,I)=0 11780 NEXT I 11790 RETURN 11800 '-- 11810 *TEN 11820 GOSUB *HAI.N 11830 TEN=HAI.X(JUN):AGARI=0:UTI=-1 :KAN=-1:RECHI.FRG=0:ATAMA.N=0 11840 FOR I=0 TO 33:TES(I)=TEN(JUN,I):NEXT I 11850 FOR I=0 TO 33:KAN(JUN,I)=0:NEXT I 11860 FOR I=0 TO 33:PON(JUN,I)=0:NEXT I 11870 FOR I=0 TO 26:CHI(JUN,I)=0:NEXT I 11880 IF RECHI(JUN)>=1 THEN STE.HAI=TUMO.HAI:STE.DMY=HAI.X(JUN):RETURN 11890 FOR I=0 TO 33 :AGARI(JUN,I)=0 :NEXT I 11900 '-- 11910 IF HAI.X(JUN)ᡄ THEN GOSUB *NIKO.CHACK:IF DM> 4 THEN *NIKO.TEN 11920 GOSUB *TEN.1 11930 GOSUB *TEN.0 11940 IF TEN ɞ THEN GOSUB *NIKO.CHACK:IF DM=1 THEN GOSUB *ATAMA ELSE ATAMA.N=DM 11950 IF TEN =1 THEN GOSUB *TANKI 11960 IF TEN =2 THEN GOSUB *AGARI.CHACK 11970 IF TEN =4 THEN IF ATAMA.N=2 THEN GOSUB *SYA.PON 11980 IF TEN =ɘ THEN IF KUI.N(JUN)=0 THEN RECHI.FRG=1 11990 '- 12000 FOR I=0 TO 33:DMY(I)=TES(I):NEXT I 12010 GOSUB *TEN.3 12020 GOSUB *TEN.2 12030 GOSUB *TEN.4 12040 GOSUB *STE.HAI.SE 12050 RETURN 12060 '-- 12061 *TES.SET 12062 FOR I=0 TO 33:TES(I)=TEN(JUN,I):NEXT I 12063 RETURN 12064 '- 12070 *TES 12080 GOSUB *HAI.N 12090 AGARI=0:UTI=-1 :KAN=-1:RECHI.FRG=0 12110 IF RECHI(JUN)>=1 THEN STE.HAI=TUMO.HAI:STE.DMY=HAI.X(JUN):RETURN 12120 FOR I=0 TO 33:AGARI(JUN,I)=0 :NEXT I 12130 '-- 12140 IF HAI.X(JUN)>=12 THEN GOSUB *KOKUSI:IF KOKUSI>=12 THEN *KOKUSI.TEN.PAI 12150 :TEN=HAI.X(JUN):GOSUB *TES.SET 12160 IF HAI.X(JUN)>=12 THEN GOSUB *NIKO.CHACK:IF DM>=6 THEN GOSUB *TEN.2 12165 IF TENɬ THEN 12180 12170 GOSUB *TES.2 :IF KUI.N(JUN)=0 THEN RECHI.FRG=1:GOSUB *RECHI.INPUT:RETURN 12171 '- 12172 :TEN=HAI.X(JUN):GOSUB *TES.SET 12173 GOSUB *T1 12174 IF TEN <=0 THEN IF KUI.N(JUN)=0 THEN RECHI.FRG=1 12175 IF TENɱ THEN RETURN ::: 12180 '-- 12181 FOR M=2 TO 7 12182 :TEN=HAI.X(JUN):GOSUB *TES.SET 12183 ON M GOSUB *T1,*T2,*T3,*T4,*T5,*T6,*T7 12184 IF TEN <=0 THEN IF KUI.N(JUN)=0 THEN RECHI.FRG=1 12187 NEXT M 12188 IF RECHI.FRG=1 THEN GOSUB *RECHI.INPUT 12189 RETURN 12190 '- 12191 *T1 12200 GOSUB *TEN.1 12210 GOSUB *TEN.0 12230 IF TEN =3 THEN GOSUB *TES.0 12240 IF TEN=0 THEN GOSUB *TES.2 12255 RETURN 12260 '-- 12265 *T2 12290 GOSUB *TEN.11 12300 GOSUB *TEN.0 12310 IF TEN =3 THEN GOSUB *TES.0 12320 IF TEN=0 THEN GOSUB *TES.2 12335 RETURN 12340 '-- 12345 *T3 12370 GOSUB *TEN.0 12380 GOSUB *TEN.1 12390 IF TEN =3 THEN GOSUB *TES.0 12400 IF TEN=0 THEN GOSUB *TES.2 12415 RETURN 12420 '-- 12425 *T4 12450 GOSUB *TEN.0 12460 GOSUB *TEN.11 12470 IF TEN =3 THEN GOSUB *TES.0 12480 IF TEN=0 THEN GOSUB *TES.2 12495 RETURN 12500 '-- 12505 *T5 12530 GOSUB *NIKO.CHACK 12540 IF DM=1 THEN GOSUB *ATAMA.2 12550 GOSUB *TEN.0 12560 GOSUB *TEN.1 12570 IF TEN =1 THEN GOSUB *TES.1 12585 RETURN 12590 '- 12595 *T6 12620 GOSUB *NIKO.CHACK 12630 IF DM=1 THEN GOSUB *ATAMA.2 12640 GOSUB *TEN.0 12650 GOSUB *TEN.11 12660 IF TEN =1 THEN GOSUB *TES.1 12675 RETURN 12680 '-- 12685 *T7 12710 GOSUB *TEN.12 12720 GOSUB *TEN.0 12730 IF TEN =3 THEN GOSUB *TES.0 12740 IF TEN=0 THEN GOSUB *TES.2 12755 RETURN 12790 '=== 12800 *TES.1 12810 FOR I=0 TO 33 12820 IF TES(I)=2 THEN TES(I)=0:TEN=TEN-2:I=34:GOTO 12850 12830 NEXT I 12840 '-- 12850 FOR I=0 TO 2 12860 FOR K=0 TO 7 12870 J=I*9+K 12880 IF TES(J)<=0 THEN 12950 12890 IF TES(J+1)<=0 THEN 12950 12900 IF K=0 THEN 12920 12910 AGARI(JUN,J-1)=1 12920 IF K=7 THEN 12940 12930 AGARI(JUN,J+2)=1 12940 TES(J)=0:TES(J+1)=0:TEN=TEN-2 12950 NEXT K 12960 '-- 12970 FOR K=0 TO 6 12980 J=I*9+K 12990 IF TES(J)<=0 THEN 13030 13000 IF TES(J+2)<=0 THEN 13030 13010 AGARI(JUN,J+1)=1 13020 TES(J)=0:TES(J+2)=0:TEN=TEN-2 13030 NEXT K 13040 NEXT I 13050 RETURN 13060 '-- 13070 *TES.2 13080 FOR I=0 TO 33 13090 IF TES(I)=1 THEN AGARI(JUN,I)=1':TEN=TEN-2 13100 NEXT I 13110 RETURN 13120 '-- 13130 *TES.3 13140 FOR I=0 TO 33 13150 IF TES(I)=2 THEN AGARI(JUN,I)=1 :TES(I)=TES(I)-2:TEN=TEN-2 13160 NEXT I 13170 RETURN 13180 '-- 13190 *TES.0 13200 DM=0 13210 FOR I=0 TO 33 13220 IF TES(I)=2 THEN DM=DM+1 13230 NEXT I 13240 ON DM+1 GOTO 13250,*TES.1,*TES.3 13250 RETURN 13260 '-- 13270 *DM1:RETURN 13280 '-- 13290 *KOKUSI.TEN.PAI 13300 RECHI.FRG=1 13310 IF KOKUSI>=13 THEN 13400 13320 FOR I=0 TO 2 13330 IF YAKU(JUN,I*9)=0 THEN AGARI(JUN,I*9)=1 13340 IF YAKU(JUN,I*9+8)=0 THEN AGARI(JUN,I*9+8)=1 13350 NEXT I 13360 FOR I=27 TO 33 13370 IF YAKU(JUN,I)=0 THEN AGARI(JUN,I)=1 13380 NEXT I 13390 RETURN 13400 '--- 13410 FOR I=0 TO 2 13420 AGARI(JUN,I*9)=1 13430 AGARI(JUN,I*9+8)=1 13440 NEXT I 13450 FOR I=27 TO 33 13460 AGARI(JUN,I)=1 13470 NEXT I 13480 RETURN 13490 '--- 13500 *STE.HAI.SE 13510 DM.HAI=10 13520 STE.DMY=HAI.X(JUN) 13530 DMY.STE=0 13540 DM.NO=ZIHAI(JUN,HAI.X(JUN)) 13550 '-- 13560 SE=((JUN+KAZE.N+ST.KAZE) MOD 2)+1 13570 ON SE GOSUB *SE.1,*SE.2 13580 '-- 13590 IF DMY( DM.NO )ɬ THEN 13640 13600 FOR I=33 TO 0 STEP -1 13610 IF DMY(I)ɬ THEN DM.NO=I 13620 NEXT I 13630 '-- 13640 FOR I=0 TO HAI.X(JUN) 13650 IF ZIHAI(JUN,I)=DM.NO THEN STE.DMY=I 13660 NEXT I 13670 '-- 13680 STE.HAI= ZIHAI(JUN,STE.DMY ) 13690 IF TEN(JUN,ZIHAI(JUN,STE.DMY ))ə THEN STOP 13700 SWAP ZIHAI(JUN,STE.DMY),ZIHAI(JUN,HAI.X(JUN)) 13710 RETURN 13720 '-- 13730 *SE.1 13740 GOSUB *SE.11:GOSUB *SE.12 13750 RETURN 13760 '-- 13770 *SE.11 13780 FOR I=27 TO 33 13790 IF TES(I)=0 THEN 13820 13800 IF TES(I)<DM.HAI THEN DM.HAI=TES(I):DM.NO=I:DM.STE=STE.HAI(I):GOTO 13820 13810 IF TES(I)=DM.HAI THEN IF DM.STE<STE.HAI(I) THEN DM.HAI=TES(I):DM.NO=I :DM.STE=STE.HAI(I) 13820 NEXT I 13830 RETURN 13840 '-- 13850 *SE.12 13860 FOR J=0 TO 26 13870 I=J+ST.POINT(JUN)*9:IF Iᡒ THEN I=I-27 13880 IF TES(I)=0 THEN 13910 13890 IF TES(I)<DM.HAI THEN DM.HAI=TES(I):DM.NO=I :DM.STE=STE.HAI(I):GOTO 13910 13900 IF TES(I)=DM.HAI THEN IF DM.STE<STE.HAI(I) THEN DM.HAI=TES(I):DM.NO=I :DM.STE=STE.HAI(I) 13910 NEXT J 13920 RETURN 13930 '-- 13940 *SE.2 13950 GOSUB *SE.21:GOSUB *SE.22 13960 RETURN 13970 '-- 13980 *SE.21 13990 FOR I=33 TO 27 STEP -1 14000 IF TES(I)=0 THEN 14030 14010 IF TES(I)<DM.HAI THEN DM.HAI=TES(I):DM.NO=I:DM.STE=STE.HAI(I):GOTO 14030 14020 IF TES(I)=DM.HAI THEN IF DM.STE<STE.HAI(I) THEN DM.HAI=TES(I):DM.NO=I :DM.STE=STE.HAI(I) 14030 NEXT I 14040 RETURN 14050 '-- 14060 *SE.22 14070 FOR J=26 TO 0 STEP -1 14080 I=J+ST.POINT(JUN)*9:IF Iᡒ THEN I=I-27 14090 IF TES(I)=0 THEN 14120 14100 IF TES(I)<DM.HAI THEN DM.HAI=TES(I):DM.NO=I:DM.STE=STE.HAI(I):GOTO 14120 14110 IF TES(I)=DM.HAI THEN IF DM.STE<STE.HAI(I) THEN DM.HAI=TES(I):DM.NO=I :DM.STE=STE.HAI(I) 14120 NEXT J 14130 RETURN 14140 '-- 14150 *ATAMA 14160 DM=-1 14170 FOR I=0 TO 33 14180 IF TES(I)=2 THEN TES(I)=TES(I)-2:TEN=TEN-2:FRG=1:DM=I:I=34:GOTO 14230 14190 NEXT I 14200 RETURN 14210 '-- 14220 *ATAMA.MATI 14230 IF TEN<ɮ THEN RETURN 14240 FOR J=DM+1 TO 33 14250 :IF TES(J)=2 THEN TES(J)=TES(J)-2:DM2=J:J=34:GOTO 14280 14260 NEXT J 14270 RETURN 14280 '- 14290 AGARI(JUN,DM)=1:AGARI(JUN,DM2)=1 14300 RETURN 14310 '- 14320 *ATAMA.2 14330 DM=-1 14340 FOR I=0 TO 33 14350 IF TES(I)>=2 THEN TES(I)=TES(I)-2:TEN=TEN-2:FRG=1:DM=I:I=34:RETURN 14360 NEXT I 14370 RETURN 14380 '-- 14390 *TANKI 14400 FOR I=0 TO 33 14410 IF TES(I)=1 THEN TES(I)=0:AGARI(JUN,I)=1:TEN=TEN-1:RETURN 14420 NEXT I 14430 RETURN 14440 '-- 14450 *SYA.PON 14460 FOR I=0 TO 33 14470 IF TES(I)<ɮ THEN 14500 14480 TES(I)=0 :TEN=TEN-2 14490 AGARI(JUN,I)=1 14500 NEXT I 14510 RETURN 14520 '-- 14530 *NIKO.CHACK 14540 DM=0 14550 FOR I=0 TO 33 14560 IF TES(I)=2 THEN DM=DM+1 14570 NEXT I 14580 RETURN 14590 '-- 14600 *NIKO.TEN 14610 FOR I=0 TO 33 14620 IF TES(I)>=2 THEN TES(I)=TES(I)-2:TEN=TEN-2 14630 NEXT I 14640 IF TEN=1 THEN RECHI.FRG=1:GOSUB *TANKI 14650 FOR I=0 TO 33:DMY(I)=TES(I):NEXT I 14660 IF TENɘ THEN AGARE=1:RETURN 14670 GOSUB *STE.HAI.SE 14680 RETURN 14690 '== 14700 *AGARI.CHACK 14710 GOSUB *ATAMA 14720 IF TEN=ɘ THEN AGARI(JUN,DM)=1:RETURN 14730 '-- 14740 AGARI=2 14750 GOSUB *TEN.3 14760 AGARI=0 14770 IF TEN=ɘ THEN RETURN 14780 '-- 14790 AGARI=2 14800 GOSUB *TEN.4 14810 AGARI=0 14820 IF TEN=ɘ THEN RETURN 14830 FOR I=0 TO 33:AGARI(JUN,I)=0:NEXT I 14840 RETURN 14850 '==== 14860 *TEN.0 '[5] [5] [5] 14870 FOR I=0 TO 33 14880 IF TES(I)=3 THEN TES(I)=TES(I)-3:TEN=TEN-3:KAN(JUN,I)=1 14890 IF CHI(JUN,STE.HAI)ɬ THEN CHI=JUN :RETURN 14900 NEXT I 14910 RETURN 14920 '-- 14930 *TEN.01 '[5] [5] [5] [5] 14940 FOR I=0 TO 33 14950 IF TES(I)>=3 THEN TEN=TEN-TES(I):TES(I)=0: 14960 NEXT I 14970 RETURN 14980 '-- 14990 *TEN.1 '[5] [6] [7] 15000 FOR I=0 TO 2 15010 J=0 15020 '- 15030 IF TES(J+I*9)=ɘ THEN 15120 15040 IF TES(J+1+I*9)=ɘ THEN 15120 15050 IF TES(J+2+I*9)=0 THEN 15120 15060 '- 15070 FOR K=J TO J+2 15080 :TES(K+I*9)=TES(K+I*9)-1 15090 :NEXT K 15100 TEN=TEN-3 15110 GOTO 15020 15120 '- 15130 J=J+1 15140 IF Jɟ THEN 15020 15150 NEXT I 15160 RETURN 15170 '-- 15180 *TEN.11 '[7] [6] [5] 15190 FOR I=2 TO 0 STEP -1 15200 J=8 15210 '- 15220 IF TES(J+I*9)=ɘ THEN 15310 15230 IF TES(J-1+I*9)=ɘ THEN 15310 15240 IF TES(J-2+I*9)=ɘ THEN 15310 15250 '- 15260 FOR K=J TO J-2 STEP -1 15270 :TES(K+I*9)=TES(K+I*9)-1 15280 :NEXT K 15290 TEN=TEN-3 15300 GOTO 15210 15310 '- 15320 J=J-1 15330 IF Jɮ THEN 15210 15340 NEXT I 15350 RETURN 15360 '-- 15370 *TEN.12 '[1] [2] [3] [4] [ ] [6] [7] [8] [9] 15380 FOR I=0 TO 2 15390 J=0 15400 '- 15410 IF TES(J+I*9)=ɘ THEN 15500 15420 IF TES(J+1+I*9)=ɘ THEN 15500 15430 IF TES(J+2+I*9)=0 THEN 15500 15440 '- 15450 FOR K=J TO J+2 15460 :TES(K+I*9)=TES(K+I*9)-1 15470 :NEXT K 15480 TEN=TEN-3 15490 GOTO 15400 15500 '- 15510 J=J+1 15520 IF Jɜ THEN 15400 15530 '- 15540 J=8 15550 '- 15560 IF TES(J+I*9)=ɘ THEN 15650 15570 IF TES(J-1+I*9)=ɘ THEN 15650 15580 IF TES(J-2+I*9)=ɘ THEN 15650 15590 '- 15600 FOR K=J TO J-2 STEP -1 15610 :TES(K+I*9)=TES(K+I*9)-1 15620 :NEXT K 15630 TEN=TEN-3 15640 GOTO 15550 15650 '- 15660 J=J-1 15670 IF Jɱ THEN 15550 15680 NEXT I 15690 RETURN 15700 '-- 15710 *TEN.2 '[5] [5] 15720 FOR I=0 TO 33 15730 IF TES(I)< 2 THEN 15770 15740 TES(I)=TES(I)-2:TEN=TEN-2:PON(JUN,I)=1 15750 'IF AGARI=0 THEN IF TENɚ THEN RETURN 15760 GOTO 15730 15770 NEXT I 15780 RETURN 15790 '-- 15800 *TEN.3 '[5] [6] 15810 FOR I=0 TO 2 15820 J=0 15830 FRG=0 15840 IF TES(I*9+J)=ɘ THEN 16030 15850 IF TES(I*9+J+1)=ɘ THEN 16030 15860 '- 15870 :TES(I*9+J)=TES(I*9+J)-1 15880 :TES(I*9+J+1)=TES(I*9+J+1)-1 15890 '- 15900 TEN=TEN-2 15910 '- 15920 '[3][][ロ][1] 15930 K1=J-1:K2=J+2 15940 IF K1ɘ THEN 15970 15950 CHI(JUN,K1+I*9)=3 '** 15960 IF AGARI=2 THEN AGARI(JUN,K1+I*9)=1 15970 IF K2ɴ THEN 16010 15980 CHI(JUN,K2+I*9)=1 '** 15990 IF AGARI=2 THEN AGARI(JUN,K2+I*9)=1 16000 '- 16010 'J=J+1 16020 GOTO 15830 16030 J=J+1 16040 IF Jɠ THEN 15830 16050 NEXT I 16060 RETURN 16070 '- 16080 *TEN.4 ' [5] [ ] [7] 16090 FOR I=0 TO 2 16100 J=0 16110 '- 16120 IF TES(I*9+J)=ɘ THEN 16230 16130 IF TES(I*9+J+1)ɬ THEN 16230 16140 IF TES(I*9+J+2)=ɘ THEN 16230 16150 TES(I*9+J)=TES(I*9+J)-1 16160 TES(I*9+J+2)=TES(I*9+J+2)-1 16170 '[][2][ロ] 16180 CHI(JUN,I*9+J+1)=2 16190 IF AGARI=2 THEN AGARI(JUN,I*9+J+1)=1 16200 TEN=TEN-2 16210 '- 16220 GOTO 16110 16230 J=J+1 16240 IF Jɟ THEN 16110 16250 NEXT I 16260 RETURN 16270 '== 16280 *ST.ANKAN 16290 DM=-1:DM.N=0 16300 FOR I=0 TO HAI.X(JUN) 16310 IF DM=ZIHAI(JUN,I) THEN DM.N=DM.N+1 ELSE DM=ZIHAI(JUN,I):DM.N=0 16320 IF DM.N=3 THEN 16340 16330 NEXT I:RETURN 16340 HAI=TUMO.HAI:ITI.X=I:ITI.Y=JUN*2+2 :GOSUB *HAI.SUB.2 16350 TUMO.HAI= ZIHAI(JUN,I) 16360 SWAP ZIHAI(JUN,I),ZIHAI(JUN,HAI.X(JUN)) 16370 HAI=TUMO.HAI:ITI.X=HAI.X(JUN):ITI.Y=JUN*2+2 :GOSUB *HAI.SUB.2 16380 I=33 16390 RETURN 16400 '-- 16410 *PON 16420 PON=-1 :KAN=-1 16430 '-- 16440 J=0 16450 :K=JUN+J:IF Kɯ THEN K=K-4 16460 IF RECHI(K)>=1 THEN 16500 16466 IF OMOTE(K,STE.HAI)ɬ THEN 16500 16470 IF PON(K,STE.HAI)=1 THEN IF TEN(K,STE.HAI)=2 THEN PON=K:RETURN 16480 IF DEMO=0 THEN IF K=3 THEN IF TEN(3,STE.HAI)=3 THEN KAN=3:KAN(3,STE.HAI)=1 16490 IF DEMO=0 THEN IF K=3 THEN IF TEN(3,STE.HAI)>=2 THEN PON=3:PON(3,STE.HAI)=1:RETURN 16500 J=J+1 16510 IF Jɛ THEN 16450 16520 RETURN 16530 '- 16540 *CHI 16550 CHI=-1 16560 IF RECHI(JUN)>=1 THEN RETURN 16570 IF STE.HAI>=27 THEN RETURN 16575 IF OMOTE(JUN,STE.HAI)ɬ THEN RETURN 16580 IF CHI(JUN,STE.HAI)=1 THEN GOSUB *CHI.CHACK 16590 IF JUNɛ THEN RETURN 16600 IF DEMO=1 THEN RETURN 16610 '-- 16620 D= STE.HAI MOD 9 16630 IF D>=7 THEN 16650 16640 IF TEN(3,STE.HAI+1)ɬ AND TEN(3,STE.HAI+2)ɬ THEN CHI=JUN:CHI(3,STE.HAI)=3 16650 IF D<=1 THEN 16670 16660 IF TEN(3,STE.HAI-1)ɬ AND TEN(3,STE.HAI-2)ɬ THEN CHI=JUN:CHI(3,STE.HAI)=1 16670 IF Də OR Dɳ THEN 16690 16680 IF TEN(3,STE.HAI-1)ɬ AND TEN(3,STE.HAI+1)ɬ THEN CHI=JUN:CHI(3,STE.HAI)=2 16690 RETURN 16700 '-- 16710 *CHI.CHACK 16720 CHI=-1 16730 ON CHI(JUN,STE.HAI) GOSUB *CHI.1,*CHI.2,*CHI.3 16740 RETURN 16750 '-- 16760 *CHI.1 16770 IF TEN(JUN,STE.HAI-2)ɬ THEN IF TEN(JUN,STE.HAI-1)ɬ THEN CHI=JUN 16780 RETURN 16790 '-- 16800 *CHI.2 16810 IF TEN(JUN,STE.HAI-1)ɬ THEN IF TEN(JUN,STE.HAI+1)ɬ THEN CHI=JUN 16820 RETURN 16830 '-- 16840 *CHI.3 16850 IF TEN(JUN,STE.HAI+2)ɬ THEN IF TEN(JUN,STE.HAI+1)ɬ THEN CHI=JUN 16860 RETURN 16870 '-- 16880 *RECHI 16890 IF RECHI(JUN)=2 THEN RETURN 16900 IF RECHI(JUN)=1 THEN RECHI(JUN)=2:RETURN 16910 RECHI.FRG=0 16920 W.RECHI(JUN)=N 16930 BEEP 16940 GOSUB *RECHI.PRINT 16950 RETURN 16960 '-- 16970 *RECHI.PRINT 16980 RECHI(JUN)=1 16990 TEN.SU(JUN)=TEN.SU(JUN)-10:RECHI.BO=RECHI.BO+10 17000 H=1:IF JUN=3 THEN H=0 17010 FOR I=0 TO HAI.X(JUN) 17020 IF JUN=3 THEN ITI.Y=JUN*2+2-H:ITI.X=I:HAI=ZIHAI(JUN,I):MUKI0=MUKI:MUKI=1:GOSUB *HAI.SUB.12:MUKI=MUKI0:GOTO 17040 17030 ITI.Y=JUN*2+2-H:ITI.X=I:HAI=34:GOSUB *HAI.SUB.2 17040 NEXT I 17050 ITI.Y=JUN*2+1+H:ITI.X=JUN.X(JUN)-1:HAI=35:GOSUB *HAI.SUB 17060 ITI.Y=JUN*2+1+H:ITI.X=JUN.X(JUN)-1:HAI=37:TEN.BO.X=-1:GOSUB *TEN.BO.SUB 17070 ITI.Y=JUN*2+1+H:ITI.X=JUN.X(JUN):HAI=STE.HAI:GOSUB *HAI.SUB 17080 JUN.X(JUN)=JUN.X(JUN)+1 17090 RETURN 17100 '=== 17110 *NO.HAN.CHACK 17120 FOR T=1 TO 15 17130 P$="":HAN=0 17140 ON T GOSUB *RECHI.,*MEN.TUMO,*TAI.YAO,*NIKO.NIKO,*TOI.TOI,*PIN.FU ,*CHAN.TAI,*YAKU.HAI,*KAZE.HAI,*HON.ITU,*ANKO,*ITTU ,*SAN.SIKI,*II.PEKO,*HAI.TEI 17150 IF HANɬ THEN RETURN 17160 NEXT T 17170 HAN =0:RETURN 17180 '-- 17190 *KUI.HAN.CHACK 17200 FOR T=1 TO 10 17210 P$="":HAN=0 17220 ON T GOSUB *TAI.YAO,*NIKO.NIKO,*TOI.TOI,*CHAN.TAI,*YAKU.HAI,*KAZE.HAI ,*HON.ITU,*ITTU ,*SAN.SIKI,*II.PEKO 17230 IF HANɬ THEN T=11:RETURN 17240 NEXT T 17250 HAN =0:RETURN 17260 '-- 17270 *TOTAL 17280 COLOR 7:CLS:LOCATE 0,24 17290 LINE (0,380)-(639,399),0,BF 17300 IF UTIɯ THEN UTI=JUN 17310 '-- 17320 TOTAL.1=0:P1$="" 17330 FOR T=1 TO 2 17340 P$="":HAN=0 17350 ON T GOSUB *ZORO.ME,*GEI.SYA 17360 P1$=P1$+P$:TOTAL.1=TOTAL.1+HAN 17370 NEXT T 17380 '-- 17390 TOTAL.2=0:P2$="" 17400 FOR T=1 TO 21 17410 P$="":HAN=0 17420 ON T GOSUB *RECHI.,*MEN.TUMO,*TAI.YAO,*NIKO.NIKO, *TOI.TOI,*PIN.FU ,*SAN.SIKI,*ITTU,*II.PEKO, *CHAN.TAI,*YAKU.HAI,*KAZE.HAI,*HON.ITU ,*ANKO,*SU.SI.HO ,*TU.II.SO,*DAI.SAN.GEN,*HAI.TEI,*TEN.HO,*RIN.SYAN,*KOKUSI 17430 P2$=P2$+ P$:TOTAL.2=TOTAL.2+HAN 17440 IF T=4 THEN IF HANɬ THEN T=T+5 17450 NEXT T 17460 '-- 17470 GOSUB *MAN.GAN 17480 IF JUN=KAZE.N THEN TEN.SU=TEN.SU*1.5 17490 TEN.SU$=RIGHT$(" "+STR$(INT(TEN.SU+.999))+"00",5) 17500 PRINT AKCNV$(TEN.SU$);:PRINT "点"; 17510 RETURN 17520 '-- 17530 *RECHI. 17540 IF RECHI(JUN)=2 THEN HAN =1:P$= "リーチ:" 17550 IF RECHI(JUN)=2 THEN IF W.RECHI(JUN)=ឨ THEN HAN =2:P$= "Wリーチ:" 17560 IF RECHI(JUN)=1 THEN HAN =2:P$= "リーチ: 即 :" 17570 IF RECHI(JUN)=1 THEN IF W.RECHI(JUN)=ឨ THEN HAN =2:P$="Wリーチ: 即 :" 17580 RETURN 17590 '-- 17600 *MAN.GAN 17610 TOTAL=0 17620 IF TOTAL.2=0 THEN TOTAL.1=0:P1$="" 17630 :LOCATE 0,24 :PRINT P1$;P2$; 17640 TOTAL=TOTAL.1+TOTAL.2+2 17650 IF KAZE.N=JUN THEN PRINT "[親"; ELSE PRINT "[子"; 17660 IF TOTALɞ THEN PRINT AKCNV$(HEX$(TOTAL));"はん]";:TEN.SU=(12*(2^TOTAL))/10:RETURN 17670 IF RECHI(JUN)=1 THEN IF W.RECHI(JUN)អ THEN HAN =3:P$= "Wリーチ: 即 :" 17680 IF TOTALᡕ THEN PRINT "役満貫]";:TEN.SU=400:RETURN 17690 IF TOTALɵ THEN PRINT "倍満貫]";:TEN.SU=160:RETURN 17700 IF TOTALɳ THEN PRINT "跳満貫]";:TEN.SU=120:RETURN 17710 PRINT "満貫]";:TEN.SU=80:RETURN 17720 RETURN 17730 '-- 17740 *TEN.SU 17750 GOSUB *TEN.SU.0 17760 FOR I=JUN+1 TO JUN+3:K=I:IF Iɯ THEN K=K-4 17770 TEN.SU(JUN)=TEN.SU(JUN)+HARAI(K) 17780 TEN.SU(K )=TEN.SU(K )-HARAI(K) 17790 NEXT I 17800 TEN.SU(JUN)=TEN.SU(JUN)+RECHI.BO:RECHI.BO=0 17810 RETURN 17820 '- 17830 *TEN.SU.0 17840 IF UTI=JUN THEN *TEN.SU.1 17850 HARAI(UTI)=INT(TEN.SU+.999)+NAGARE*3 17860 RETURN 17870 '-- 17880 *TEN.SU.1 17890 IF JUN=KAZE.N THEN *TEN.SU.2 17900 FOR I=JUN+1 TO JUN+3 17910 K=I:IF Kɯ THEN K=K-4 17920 H=TEN.SU/4 :IF KAZE.N=K THEN H=H+H 17930 H1=(NAGARE*3)/4 :IF KAZE.N=K THEN H1=H1+H1 17940 HARAI(K)=INT(H+.999)+INT(H1+.999) 17950 NEXT I 17960 RETURN 17970 '-- 17980 *TEN.SU.2 17990 FOR I=JUN+1 TO JUN+3 18000 K=I:IF Kɯ THEN K=K-4 18010 H=TEN.SU/3 18020 HARAI(K)=INT(H+.999) 18030 NEXT I 18040 RETURN 18050 '-- 18060 *TEN.BO.PRINT 18070 FOR I=0 TO 3 18080 IF TEN.SU(I)ɘ THEN HARAI=-1 ELSE HARAI=0 18090 IF JUN=I THEN 18220 18100 HARAI$=RIGHT$(" "+STR$(HARAI(I)),4) 18110 DM.BO=VAL(MID$(HARAI$,2,1)) 18120 BO.1=0:BO.2=DM.BO:IF DM.BOɬ THEN BO.1=2:BO.2=DM.BO-1 18130 BO.0$=HEX$(BO.2)+HEX$(BO.1) 18140 MID$(HARAI$,1,2)=BO.0$ 18150 TEN.BO.X=1 :H=1:IF I=3 THEN H=0 18160 FOR J=1 TO 4 18170 TEN.BO=VAL(MID$(HARAI$,J,1)) 18180 FOR K=1 TO TEN.BO 18190 HAI=4-J:TEN.BO.X=TEN.BO.X+1:ITI.Y=(I+1)*2-H :ITI.X=HAI.X(I) 18200 GOSUB *TEN.BO.SUB 18210 NEXT K,J 18220 NEXT I 18230 HARAI=0 18240 RETURN 18250 '-- 18260 *TEN.BO.TOTAL 18270 DMY(1)=0:DMY(2)=10:DMY(3)=13:DMY(4)=25 18280 FOR I=0 TO 3 18290 IF TEN.SU(I)ɘ THEN HARAI=-1 18300 HARAI$=RIGHT$(" "+STR$(TEN.SU(I)-1),4) 18310 DM.BO=VAL(MID$(HARAI$,2,1)) 18320 BO.1=0:BO.2=DM.BO:IF DM.BOɬ THEN BO.1=2:BO.2=DM.BO-1 18330 BO.0$=HEX$(BO.2)+HEX$(BO.1) 18340 MID$(HARAI$,1,2)=BO.0$ 18350 TEN.BO.X=0 :H=1:IF I=3 THEN H=0 18360 FOR J=1 TO 4 18370 TEN.BO=VAL(MID$(HARAI$,J,1)):IF J=4 THEN TEN.BO=TEN.BO+1 18380 FOR K=1 TO TEN.BO 18390 HAI=4-J 18400 'TEN.BO.X=TEN.BO.X+1 18410 TEN.BO.X=DMY(J)+K 18420 :ITI.Y=I*2+1 :ITI.X=-1 18430 GOSUB *TEN.BO.SUB 18440 NEXT K,J 18450 HARAI=0 18460 NEXT I 18470 RETURN 18480 '-- 18490 *RECHI.BO.PRINT 18500 IF RECHI.BO=0 THEN K=1:GOTO *NAGARE.BO.PRINT 18510 FOR K=1 TO RECHI.BO\10 18520 HAI=1 :TEN.BO.X=K +1:ITI.Y=0 :ITI.X=0 18530 GOSUB *TEN.BO.SUB 18540 NEXT K 18550 '-- 18560 *NAGARE.BO.PRINT 18570 IF NAGARE=0 THEN RETURN 18580 FOR KK=K TO K+NAGARE-1 18590 HAI=0 :TEN.BO.X=KK +1:ITI.Y=0 :ITI.X=0 18600 GOSUB *TEN.BO.SUB 18610 NEXT KK 18620 RETURN 18630 '======= 18640 *ZORO.ME 18650 IF SAI.1=SAI.2 THEN HAN =1 18660 IF SAI.1=1 AND SAI.2=6 THEN HAN =1 18670 IF SAI.1=6 AND SAI.2=1 THEN HAN =1 18680 IF HAN=1 THEN P$= "ゾロ目:" 18690 RETURN 18700 '======= 18710 *MEN.TUMO 18720 IF KUI.N(JUN)ɬ THEN RETURN 18730 'HAN =1:P$= "門 前:" 18740 :IF UTIɯ THEN 18760 18750 :IF UTI<>JUN THEN RETURN 18760 HAN =1:P$= "門前ツモ:" 18770 RETURN 18780 '-- 18790 *NIKO.NIKO 18800 IF HAI.X(JUN) THEN RETURN 18810 FOR I=0 TO 33 18820 IF YAKU(JUN,I)=ɘ THEN 18840 18830 IF YAKU(JUN,I)<ɮ THEN RETURN 18840 NEXT I 18850 HAN =2:P$= "七対子:" 18860 RETURN 18870 '-- 18880 *TAI.YAO 18890 FOR I=0 TO 2 18900 IF YAKU(JUN,I*9)<ɬ THEN RETURN 18910 IF YAKU(JUN,I*9+8)<ɬ THEN RETURN 18920 NEXT I 18930 FOR I=27 TO 33 18940 IF YAKU(JUN,I )<ɬ THEN RETURN 18950 NEXT I 18960 HAN =1 :P$= "断公九:" 18970 RETURN 18980 '-- 18990 *TOI.TOI 19000 DM=0 :TEN=0 19010 FOR I=0 TO 33:TES(I)=YAKU(JUN,I):TEN=TEN+YAKU(JUN,I):NEXT I 19020 GOSUB *ATAMA 19030 GOSUB *TEN.01 19040 IF TEN<=0 THEN HAN =2 :P$= "対々和:" 19050 RETURN 19060 '-- 19070 *PIN.FU 19080 IF HAI.X(JUN) THEN RETURN 19090 FOR I=27 TO 33 19100 IF YAKU(JUN,I)ɬ THEN I=34:RETURN 19110 NEXT I 19120 FOR I=0 TO 26:TES(I)=YAKU(JUN,I):NEXT I 19130 GOSUB *ATAMA 19140 FOR I=0 TO 26 19150 IF TES (I)>=3 THEN I=27:RETURN 19160 :NEXT I 19170 HAN =1 :P$= "平 和:" 19180 RETURN 19190 '-- 19200 *CHAN.TAI 19210 FOR I=0 TO 33:TES(I)=YAKU(JUN,I):NEXT I 19220 :TEN=13 19230 DM =13:FRG=0 19240 FOR Z=27 TO 33 19250 IF TES(Z)ɮ THEN TES(Z)=0:TEN=TEN-3 19260 NEXT Z 19270 FOR Z=0 TO 2 19280 I= Z*9 :IF TES(I)ɬ THEN ITI=1:GOSUB *TEN.SUB':GOTO 17890 19290 I= Z*9+8 :IF TES(I)ɬ THEN ITI=-1:GOSUB *TEN.SUB':GOTO 17900 19300 NEXT Z 19310 FOR Z=27 TO 33 19320 IF TES(Z)=2 THEN TES(Z)=0:TEN=TEN-2 19330 NEXT Z 19340 IF TEN<=0 THEN HAN=2 :P$ = "全帯公:":GOTO 19360 19350 RETURN 19360 '- 19370 JUN.CHAN=1 19380 FOR I=27 TO 33 19390 IF YAKU(JUN,I)ɬ THEN JUN.CHAN=0 19400 NEXT I 19410 IF JUN.CHAN=1 THEN HAN=3 :P$="純全帯公:" 19420 RETURN 19430 '-- 19440 *YAKU.HAI 19450 FOR I=31 TO 33 19460 IF YAKU(JUN,I)>=3 THEN HAN= HAN+1:P$=P$+YAKU.HAI$(I-31)+":" 19470 NEXT I 19480 RETURN 19490 '-- 19500 *KAZE.HAI 19510 KAZE.HAI=0 19520 K=ST.KAZE 19530 IF YAKU(JUN,K+27 )>=3 THEN HAN=HAN+1:P$=P$+KAZE$(K)+":" 19540 K=K+2 :IF Kɯ THEN K=K-4 19550 IF YAKU(JUN,K+27 )>=3 THEN HAN=HAN+1:P$=P$+KAZE$(K)+":" 19560 K=JUN-KAZE.N :IF Kɘ THEN K=K+4 19570 IF YAKU(JUN,K+27 )>=3 THEN HAN=HAN+1:P$=P$+KAZE$(K)+":" 19580 RETURN 19590 '=== 19600 *TEN.SUB 19610 IF FRG=1 THEN 19620 19620 GOSUB *TEN.1.SUB 19630 GOSUB *TEN.0.SUB 19640 GOSUB *ATAMA.SUB 19650 RETURN 19660 '-- 19670 *ATAMA.SUB 19680 IF TES(I)=2 THEN TES(I)=TES(I)-2:TEN=TEN-2:FRG=1 19690 RETURN 19700 '==== 19710 *TEN.0.SUB '[ ] [1] [1] [1] [ ] " 19720 IF TES(I)>=3 THEN TES(I)=0 :TEN=TEN-3:GOTO 19720 19730 RETURN 19740 '-- 19750 *TEN.1.SUB '[ ] [1] [2] [3] [ ] 19760 '- 19770 IF TES(I )=0 THEN RETURN 19780 IF TES(I+1*ITI)=0 THEN RETURN 19790 IF TES(I+2*ITI)=0 THEN RETURN 19800 '- 19810 FOR K=0 TO 2 19820 :TES(I+K*ITI)=TES(I+K*ITI)-1 19830 :NEXT K 19840 TEN=TEN-3 19850 GOTO *TEN.1.SUB 19860 '- 19870 *GEI.SYA 19880 HAN =HAN +YAKU(JUN,3) 19890 I=0 19900 FOR I=0 TO URA.N 19910 K=JUN(136-(5+I*2) )+1:K1=K MOD 9 19920 IF K1=0 THEN K=K-9 19930 IF K=31 THEN K=27 19940 IF K=34 THEN K=31 19950 HAN= HAN +YAKU(JUN,K) 19960 NEXT I 19970 '-- 19980 IF RECHI(JUN)=0 THEN 20060 19990 FOR I=0 TO URA.N 20000 K=JUN(136-(4 +I*2) )+1:K1=K MOD 9 20010 IF K1=0 THEN K=K-9 20020 IF K=31 THEN K=27 20030 IF K=34 THEN K=31 20040 HAN= HAN+YAKU(JUN,K) 20050 NEXT I 20060 IF HANɬ THEN P$= "ドラ"+AKCNV$(HEX$(HAN ))+":" 20070 RETURN 20080 '-- 20090 *HON.ITU 20100 FOR I=0 TO 9:DMY(I)=0:NEXT I 20110 FOR I=0 TO 33 20120 :K=I\9:H=I MOD 9 20130 DMY(K)=DMY(K)+YAKU(JUN,I) 20140 IF H=0 OR H=8 OR I=ᡓ THEN DMY(7)=DMY(7)+YAKU(JUN,I) 20150 NEXT I 20160 '- 20170 FOR I=0 TO 2 20180 DMY(I+4)=DMY(3)+DMY(I) 20190 NEXT I 20200 D=KUI.N(JUN)+HAI.X(JUN)+KAN.N(JUN) 20210 '- 20220 FOR I=4 TO 6 20230 IF DMY(I)>=D THEN HAN =2:P$="混一色:" 20240 NEXT I 20250 FOR I=0 TO 2 20260 IF DMY(I)>=D THEN HAN =4:P$="清一色:" 20270 NEXT I 20280 IF DMY(7)>=D THEN HAN =6:P$="混老頭:" 20290 IF DMY(3)>=D THEN HAN =6:P$="清老頭:" 20300 RETURN 20310 '-- 20320 *ANKO 20330 FOR I=0 TO 33:TES(I)=TEN(JUN,I):NEXT I 20340 TES(STE.HAI)=0 20350 AN=0 20360 FOR I=0 TO 33 20370 IF TES(I)=ɯ THEN AN=AN+1 :TES(I)=TES(I)=0 20380 NEXT I 20390 GOSUB *NIKO.CHACK:IF DM=0 THEN RETURN 20400 IF AN=3 THEN HAN =2 :P$="三" 20410 IF ANɯ THEN HAN =30 :P$="四" 20420 IF HANɬ THEN P$=P$+"暗刻:" 20430 RETURN 20440 '-- 20450 *ITTU 20460 FOR I=0 TO 33:TES(I)=YAKU(JUN,I):NEXT 20470 GOSUB *NIKO.CHACK:IF DM=1 THEN 20490 20480 GOSUB *TEN.0:GOSUB *ATAMA:GOTO 20500 20490 GOSUB *ATAMA:GOSUB *TEN.0 20500 I=0 20510 DM=0 20520 FOR J=0 TO 8 20530 IF TES(I*9+J)ɬ THEN DM=DM+1 20540 NEXT J 20550 IF DM=9 THEN HAN =2: P$= "一 通:" :RETURN 20560 I=I+1:IF Iɮ THEN RETURN 20570 GOTO 20510 20580 '-- 20590 *II.PEKO 20600 TEN=0 20610 FOR I=0 TO 33:TES(I)=YAKU(JUN,I):TEN=TEN+YAKU(JUN,I):NEXT I 20620 I=0 20630 DMY=0 20640 J=0 20650 '- 20660 IF TES(I*9+J )ɚ THEN 20740 20670 IF TES(I*9+J+1)ɚ THEN 20740 20680 IF TES(I*9+J+2)ɚ THEN 20740 20690 TES(I*9+J )=TES(I*9+J)-2 20700 TES(I*9+J+1)=TES(I*9+J+1)-2 20710 TES(I*9+J+2)=TES(I*9+J+2)-2 20720 TEN=TEN-6 20730 DMY=DMY+1:J=J+2 20740 J=J+1 :IF J<=6 THEN 20650 20750 I=I+1:IF I<=2 THEN 20640 20760 IF DMY=0 THEN RETURN 20770 GOSUB *TEN.1:GOSUB *TEN.01 20780 IF TENɮ THEN RETURN 20790 GOSUB *ATAMA.2:IF DMɘ THEN RETURN 20800 HAN =DMY:P$= AKCNV$(HEX$(HAN ))+"盃口:" 20810 RETURN 20820 '-- 20830 *SAN.SIKI 20840 TEN=0 20850 FOR I=0 TO 33:TES(I)=YAKU(JUN,I):TEN=TEN+YAKU(JUN,I):NEXT 20860 SAN.SIKI=0:DM=0 20870 J=0 20880 IF TES(J)ɬ AND TES(J+1)ɬ AND TES(J+2)ɬ THEN ELSE 20950 20890 IF TES(9+J)ɬ AND TES(9+J+1)ɬ AND TES(9+J+2)ɬ THEN ELSE 20950 20900 IF TES(18+J)ɬ AND TES(18+J+1)ɬ AND TES(18+J+2)ɬ THEN ELSE 20950 20910 TES(J)=TES(J)-1: TES(J+1)=TES(J+1)-1: TES(J+2)=TES(J+2)-1 20920 TES(J)=TES(J+9)-1: TES(J+1)=TES(J+10)-1: TES(J+2)=TES(J+11)-1 20930 TES(J)=TES(J+18)-1: TES(J+1)=TES(J+19)-1: TES(J+2)=TES(J+20)-1 20940 TEN=TEN-9:SAN.SIKI=1 20950 J=J+1 :IF Jɟ THEN 20880 20960 IF SAN.SIKI=0 THEN RETURN 20970 GOSUB *TEN.1:GOSUB *TEN.01:GOSUB *ATAMA.2 20980 IF TENɬ THEN RETURN 20990 HAN=2:P$="三 色:" 21000 RETURN 21010 '-- 21020 *DAI.SAN.GEN 21030 IF YAKU(JUN,31)ɭ AND YAKU(JUN,32)ɭ AND YAKU(JUN,33)ɭ THEN HAN=4:P$="小三元:" 21040 IF YAKU(JUN,31)ɮ AND YAKU(JUN,32)ɮ AND YAKU(JUN,33)ɮ THEN HAN=8:P$="大三元:" 21050 RETURN 21060 '-- 21070 *TEN.HO 21080 IF Nᡰ THEN RETURN 21090 HAN=15 21100 P$="天 和:" 21110 RETURN 21120 '-- 21130 *RIN.SYAN 21140 IF KAN=-1 THEN RETURN 21150 HAN=1:P$="嶺上開花:" 21160 RETURN 21170 '-- 21180 *HAI.TEI 21190 IF (136-(N+URA.N)) ᡆ THEN RETURN 21200 HAN=1 21210 P$="海 底:" 21220 RETURN 21230 '-- 21240 *SU.SI.HO 21250 FOR I=27 TO 30 21260 IF YAKU(JUN,I)ɚ THEN I=31:RETURN 21270 NEXT I 21280 HAN=4:P$="小四喜:" 21290 FOR I=27 TO 30 21300 IF YAKU(JUN,I)ɛ THEN I=31:RETURN 21310 NEXT I 21320 HAN=4:P$="四喜和:" 21330 RETURN 21340 '-- 21350 *TU.II.SO 21360 FOR I=0 TO 26 21370 IF YAKU(JUN,I)ɬ THEN I=27:RETURN 21380 NEXT I 21390 HAN=15:P$="字一色:" 21400 RETURN 21410 '-- 21420 *KOKUSI 21430 KOKUSI=0:J=0 21440 FOR I=0 TO 2 21450 IF YAKU(JUN,I*9)ɬ THEN KOKUSI=KOKUSI+1 21460 IF YAKU(JUN,I*9+8)ɬ THEN KOKUSI=KOKUSI+1 21470 J=J+2 21480 IF (J-KOKUSI)ɯ THEN I=3:RETURN 21490 NEXT I 21500 FOR I=27 TO 33 21510 IF YAKU(JUN,I )ɬ THEN KOKUSI=KOKUSI+1 21520 J=J+1 21530 IF (J-KOKUSI)ɯ THEN I=34:RETURN 21540 NEXT I 21550 IF KOKUSI THEN RETURN 21560 HAN=15:P$="十三公九:" 21570 RETURN 21580 '-- 21590 *ERROR.SUB 21600 RESUME 21610 21610 ON ERROR GOTO 0 21620 PRINT ERL 21630 IF TEST=1 THEN *ERROR.PRINT 21640 GOTO *START 21650 '-- 21660 *ERROR.PRINT 21670 ::::IF TEST=0 THEN IF DEMO=1 THEN *START 21675 GOSUB *HAI.OPEN.SUB 21680 LPRINT USING "jun# tumo## ste## ten## ";JUN,TUMO.HAI,STE.HAI,TEN 21690 :FOR V=0 TO 33 21700 :LOCATE (V MOD 9)*9,V\9 21710 :LPRINT USING "# # # #";(V MOD 9)+1,TEN(JUN,V),YAKU(JUN,V),TES(V ); 21720 :IF (V MOD 9)=8 THEN LPRINT 21730 :NEXT V:LPRINT:LPRINT 21740 FOR V=0 TO 13:LPRINT USING "##";(ZIHAI(JUN,V)\9)*10+(ZIHAI(JUN,V) MOD 9+1);:NEXT V:LPRINT 21750 LPRINT "AGARI "; 21760 FOR V=0 TO 33 21770 IF AGARI(JUN,V)=1 THEN LPRINT (V\9);(V MOD 9)+1, 21780 NEXT V 21790 LPRINT 21810 SCREEN 2,,,4:COPY 2 21820 :::::SCREEN 3,,,1::::::::: 21830 END |