N88−BASIC「トヨタ麻雀」プログラムリスト

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