友達と麻雀を遊んでいて、やっかいなのが得点計算。麻雀のルールは知っていてもこれだけは苦手という人も多いんじゃないかな? これは得点計算をサポートするプログラム。
十字ボタン上下で項目を選択、左右で変更すると、自動的に画面下に得点が表示されるぞ。Rボタンでリセットされるのでうまく使い分けよう。
麻雀のルールが分かっていれば、そう迷うところはないだろう。「2−8」は中張牌、「19@」は么九牌を示している。計算結果の「オヤ」「コ」はそれぞれ上がった親または子に支払う点数なのは言うまでもないね。
sou51
元プログラマ。現在プログラマ以外の職を求職中。
19@
」と表現しておるが、これをフォントの書き換えやグラフィックでもっと分かりやすく置き換えたり、じゃな。
- ’マーシ゛ャン テンスウ ケイサン フ゜ロク゛ラム
- CLEAR:CLS
- ’ヘンスウ ショキカ
- ’CUR=カーソルイチ
- ’HAN=アカ゛リ ハンスウ
- ’ 1-12:ハンスウ
- ’ 13:ヤクマン
- ’ 14:タ゛フ゛ルヤクマン
- ’ 15:トリフ゜ルヤクマン
- ’AGARI=アカ゛リカタ
- ’ 0:メンセ゛ンロン
- ’ 1:ロン
- ’ 2:ツモ
- ’ 3:ツモヒ゜ンフ
- ’ATAMA=シ゛ャントウ カ゛ ヤクハイ ナラ 1
- ’MACHI=マチカタ。タンキ、ヘ゜ンチャン、カンチャン ナラ 1
- ’CHITOI=チートイツ ナラ 1
- CUR=0:HAN=1:AGARI=0:ATAMA=0:MACHI=0:CHITOI=0
- ’コーツ カンツ ノ カス゛
- ’ 0:チュンシ゛ャンハイ アンコ/アンカン
- ’ 1:ヤオチュウハイ アンコ/アンカン
- ’ 2:チュンシ゛ャンハイ ミンコ/ミンカン
- ’ 3:ヤオチュウハイ ミンコ/ミンカン
- DIM KOUTSU(4),KANTSU(4)
- ’アカ゛リカタ テ゛ カサン サレル フ テイキ゛
- DIM AGRFU(4)
- AGRFU(0)=10:AGRFU(1)=0:AGRFU(2)=2:AGRFU(3)=0
- ’ヒョウシ゛ヨウ モシ゛レツ テイキ゛
- DIM MNGNST$(16),MNGNSCR(16),AGRSTR$(4),ATMSTR$(2),MCSTR$(2)
- MNGNST$(0)=”マンカ゛ン”:MNGNSCR(0)=2000
- MNGNST$(1)=”マンカ゛ン”:MNGNSCR(1)=2000
- MNGNST$(2)=”マンカ゛ン”:MNGNSCR(2)=2000
- MNGNST$(3)=”マンカ゛ン”:MNGNSCR(3)=2000
- MNGNST$(4)=”マンカ゛ン”:MNGNSCR(4)=2000
- MNGNST$(5)=”マンカ゛ン”:MNGNSCR(5)=2000
- MNGNST$(6)=”ハネマン”:MNGNSCR(6)=3000
- MNGNST$(7)=”ハネマン”:MNGNSCR(7)=3000
- MNGNST$(8)=”ハ゛イマン”:MNGNSCR(8)=4000
- MNGNST$(9)=”ハ゛イマン”:MNGNSCR(9)=4000
- MNGNST$(10)=”ハ゛イマン”:MNGNSCR(10)=4000
- MNGNST$(11)=”3ハ゛イマン”:MNGNSCR(11)=6000
- MNGNST$(12)=”3ハ゛イマン”:MNGNSCR(12)=6000
- MNGNST$(13)=”ヤクマン”:MNGNSCR(13)=8000
- MNGNST$(14)=”タ゛フ゛ルヤクマン”:MNGNSCR(14)=16000
- MNGNST$(15)=”トリフ゜ルヤクマン”:MNGNSCR(15)=24000
- AGRSTR$(0)=”メンセ゛ンロン 10フ”
- AGRSTR$(1)=”ロン 0フ”
- AGRSTR$(2)=”ツモ 2フ”
- AGRSTR$(3)=”ツモ(ヒ゜ンフ) 0フ”
- ATMSTR$(0)=”ソノタ 0フ”
- ATMSTR$(1)=”ヤクハイ 2フ”
- MCSTR$(0)=” ソノタ 0フ”
- MCSTR$(1)=”タンキ・カンチャン・ヘ゜ンチャン 2フ”
- GOSUB @DRAW
- ’メインルーフ゜
- @LOOP
- LBTNS=BTNS
- BTNS=BUTTON()
- ’ウエ ホ゛タン
- IF((NOT LBTNS)AND 1)AND(BTNS AND 1)THEN GOSUB @UP
- ’シタ ホ゛タン
- IF((NOT LBTNS)AND 2)AND(BTNS AND 2)THEN GOSUB @DOWN
- ’ヒタ゛リ ホ゛タン
- IF((NOT LBTNS)AND 4)AND(BTNS AND 4)THEN GOSUB @LEFT
- ’ミキ゛ ホ゛タン
- IF((NOT LBTNS)AND 8)AND(BTNS AND 8)THEN GOSUB @RIGHT
- ’Rホ゛タン
- IF((NOT LBTNS)AND 512)AND(BTNS AND 512)THEN GOSUB @RBTN
- GOTO @LOOP
- ’------
- ’フ ケイサン
- ’------
- @FUCALC
- IF CHITOI==1 GOTO @CHIFU
- FU=20+KOUTSU(0)*4+KOUTSU(1)*8+KOUTSU(2)*2+KOUTSU(3)*4
- FU=FU+KANTSU(0)*16+KANTSU(1)*32+KANTSU(2)*8+KANTSU(3)*16
- FU=FU+ATAMA*2+MACHI*2+AGRFU(AGARI)
- ’ツモヒ゜ンフ ハ 20フ コテイ
- IF AGARI==3 THEN FU=20
- ’10タンイ ニ キリアケ゛
- KFU=FU:FU=FU+9:FU=FU-(FU%10)
- GOTO @FUEND
- ’チートイツ ハ 25フ コテイ
- @CHIFU
- FU=25:KFU=FU
- @FUEND
- ’------
- ’キホンテン ケイサン
- ’------
- ’5ハン イシ゛ョウ ハ マンカ゛ン
- IF HAN>4 GOTO @MNGNC
- ’チートイ/ツモヒ゜ンフ ノ トキ ハ 2ハン イシ゛ョウ ニ スル
- HAN=HAN+((HAN==1)AND((CHITOI==1)OR(AGARI==3)))
- ’ハ゛ソ゛ロ ト ハンスウフ゛ン ハ゛イハ゛イ ニ シテイク
- BASE=FU*4:FOR I=1 TO HAN:BASE=BASE*2:NEXT
- ’キホンテン カ゛ 2000 コエタラ マンカ゛ン
- IF BASE>=2000 GOTO @MNGNC
- GOTO @MNEND
- ’マンカ゛ン トクテン
- @MNGNC
- BASE=MNGNSCR(HAN)
- @MNEND
- RETURN
- ’------
- ’キー ニュウリョク
- ’------
- @UP
- IF CHITOI==0 AND AGARI!=3 THEN CUR=(CUR+12)%13:GOTO@UPEND
- IF CUR==0 THEN CUR=10:GOTO@UPEND
- IF CUR==10 THEN CUR=1:GOTO@UPEND
- CUR=0
- @UPEND
- GOSUB@DRAW
- RETURN
- ’----
- @DOWN
- IF CHITOI==0 AND AGARI!=3 THEN CUR=(CUR+1)%13:GOTO@DOWNEND
- IF CUR==1 THEN CUR=10:GOTO@DOWNEND
- IF CUR==10 THEN CUR=0:GOTO@DOWNEND
- CUR=1
- @DOWNEND
- GOSUB@DRAW:RETURN
- ’----
- @LEFT
- ON CUR GOSUB @LHAN,@CHI,@L2A3,@L1A3,@L2M3,@L1M3,@L2A4,@L1A4,@L2M4,@L1M4,@LAGR,@JTU,@MCH
- GOSUB @DRAW:RETURN
- ’----
- @RIGHT
- ON CUR GOSUB @RHAN,@CHI,@R2A3,@R1A3,@R2M3,@R1M3,@R2A4,@R1A4,@R2M4,@R1M4,@RAGR,@JTU,@MCH
- GOSUB @DRAW:RETURN
- ’----
- @RBTN
- CUR=0:HAN=1:AGARI=0:ATAMA=0:MACHI=0:CHITOI=0
- FOR I=0 TO 3:KOUTSU(I)=0:KANTSU(I)=0:NEXT
- GOSUB @DRAW:RETURN
- ’------
- ’カク コウモク ノ サユウ ニュウリョク
- ’------
- ’ハン
- @LHAN
- HAN=HAN-(HAN>1):RETURN
- @RHAN
- HAN=HAN+(HAN<15):RETURN
- ’チュンシ゛ャン アンコ
- @L2A3
- KOUTSU(0)=KOUTSU(0)-(KOUTSU(0)>0):RETURN
- @R2A3
- KOUTSU(0)=KOUTSU(0)+(KOUTSU(0)<4):RETURN
- ’ヤオチュウ アンコ
- @L1A3
- KOUTSU(1)=KOUTSU(1)-(KOUTSU(1)>0):RETURN
- @R1A3
- KOUTSU(1)=KOUTSU(1)+(KOUTSU(1)<4):RETURN
- ’チュンシ゛ャン ミンコ
- @L2M3
- KOUTSU(2)=KOUTSU(2)-(KOUTSU(2)>0):RETURN
- @R2M3
- KOUTSU(2)=KOUTSU(2)+(KOUTSU(2)<4):RETURN
- ’ヤオチュウ ミンコ
- @L1M3
- KOUTSU(3)=KOUTSU(3)-(KOUTSU(3)>0):RETURN
- @R1M3
- KOUTSU(3)=KOUTSU(3)+(KOUTSU(3)<4):RETURN
- ’チュンシ゛ャン アンカン
- @L2A4
- KANTSU(0)=KANTSU(0)-(KANTSU(0)>0):RETURN
- @R2A4
- KANTSU(0)=KANTSU(0)+(KANTSU(0)<4):RETURN
- ’ヤオチュウ アンカン
- @L1A4
- KANTSU(1)=KANTSU(1)-(KANTSU(1)>0):RETURN
- @R1A4
- KANTSU(1)=KANTSU(1)+(KANTSU(1)<4):RETURN
- ’チュンシ゛ャン ミンカン
- @L2M4
- KANTSU(2)=KANTSU(2)-(KANTSU(2)>0):RETURN
- @R2M4
- KANTSU(2)=KANTSU(2)+(KANTSU(2)<4):RETURN
- ’ヤオチュウ ミンカン
- @L1M4
- KANTSU(3)=KANTSU(3)-(KANTSU(3)>0):RETURN
- @R1M4
- KANTSU(3)=KANTSU(3)+(KANTSU(3)<4):RETURN
- ’チートイツ
- @CHI
- CHITOI=1-CHITOI:AGARI=AGARI AND 2
- RETURN
- ’アカ゛リカタ
- @LAGR
- AGARI=(AGARI+2+(CHITOI!=1))%4:RETURN
- @RAGR
- AGARI=(AGARI+1+(CHITOI==1))%4:RETURN
- ’シ゛ャントウ
- @JTU
- ATAMA=1-ATAMA:RETURN
- ’マチカタ
- @MCH
- MACHI=1-MACHI:RETURN
- ’------
- ’カ゛メン ヒ゛ョウカ゛
- ’------
- @DRAW
- GOSUB @FUCALC
- ’----
- COLOR 7-(CUR!=0)*7
- LOCATE 3,2:?”ハンスウ”
- LOCATE 12,2
- IF HAN>=13 GOTO @MNGNN
- ?HAN”ハン ”
- GOTO @HANEND
- @MNGNN
- ?MNGNST$(HAN)” ”
- @HANEND
- ’----
- COLOR 7-(CUR!=1)*7
- LOCATE 3,4:?”チートイツ”
- LOCATE 12,4
- IF CHITOI==0 GOTO @CNO
- ?”YES”:GOTO @CEND
- @CNO
- ?”NO ”
- @CEND
- ’----
- ’ENABLE ハ チートイ、ツモヒ゜ンフ テ゛ カンケイナイ コウモク ヲ ハイイロ ニ スル
- ENABLE=(CHITOI==0)AND(AGARI!=3)
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=2)*7
- LOCATE 3,6:?”2-8アンコ”
- LOCATE 12,6:?KOUTSU(0)” x 4 = ”KOUTSU(0)*4”フ ”
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=3)*7
- LOCATE 3,7:?”19@アンコ”
- LOCATE 12,7:?KOUTSU(1)” x 8 = ”KOUTSU(1)*8”フ ”
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=4)*7
- LOCATE 3,8:?”2-8ミンコ”
- LOCATE 12,8:?KOUTSU(2)” x 2 = ”KOUTSU(2)*2”フ ”
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=5)*7
- LOCATE 3,9:?”19@ミンコ”
- LOCATE 12,9:?KOUTSU(3)” x 4 = ”KOUTSU(3)*4”フ ”
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=6)*7
- LOCATE 3,11:?”2-8アンカン”
- LOCATE 12,11:?KANTSU(0)” x 4 = ”KANTSU(0)*4”フ ”
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=7)*7
- LOCATE 3,12:?”19@アンカン”
- LOCATE 12,12:?KANTSU(1)” x 8 = ”KANTSU(1)*8”フ ”
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=8)*7
- LOCATE 3,13:?”2-8ミンカン”
- LOCATE 12,13:?KANTSU(2)” x 2 = ”KANTSU(2)*2”フ ”
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=9)*7
- LOCATE 3,14:?”19@ミンカン”
- LOCATE 12,14:?KANTSU(3)” x 4 = ”KANTSU(3)*4”フ ”
- ’----
- COLOR 7-(CUR!=10)*7
- LOCATE 3,16:?”アカ゛リ”
- LOCATE 12,16:?AGRSTR$(AGARI)
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=11)*7
- LOCATE 3,17:?”シ゛ャントウ”
- LOCATE 12,17:?ATMSTR$(ATAMA)
- ’----
- COLOR 2:IF ENABLE==1 THEN COLOR 7-(CUR!=12)*7
- LOCATE 3,18:?”マチ”
- LOCATE 6,18:?MCSTR$(MACHI)
- ’----
- IF HAN>4 OR BASE >=2000 THEN GOTO @MANGAND
- COLOR 0:LOCATE 4,20:?FU”フ(”KFU”フ) ”HAN”ハン キホンテン ”BASE”テン ”
- GOTO @MANGEND
- @MANGAND
- COLOR 0:LOCATE 4,20:?MNGNST$(HAN)” ”
- @MANGEND
- ’----
- IF AGARI>1 GOTO @TSUMOD
- ’ロン アカ゛リ ノ ヒョウシ゛
- ’オヤアカ゛リ ハ キホンテンx6(100テン タンイ キリアケ゛)
- OYA=BASE*6+90:OYA=OYA-(OYA%100)
- LOCATE 4,21:?”オヤ ”OYA” ”
- ’コアカ゛リ ハ キホンテンx4(100テン タンイ キリアケ゛)
- KO=BASE*4+90:KO=KO-(KO%100):IF KO<1000 THEN KO=1000
- LOCATE 4,22:?”コ ”KO” ”
- GOTO @SEND
- ’ツモ アカ゛リ ノ ヒョウシ゛
- @TSUMOD
- ’オヤアカ゛リ ハ キホンテンx2(100テン タンイ キリアケ゛)
- OYA=BASE*2+90:OYA=OYA-(OYA%100)
- LOCATE 4,21:?”オヤ ”OYA”オール ”
- ’コアカ゛リ ノ オヤ ハ オヤアカ゛リ ト オナシ゛
- ’オヤアカ゛リ ノ コ ハ キホンテンx1(100テン タンイ キリアケ゛)
- KO=BASE+90:KO=KO-(KO%100)
- LOCATE 4,22:?”コ ”OYA” / ”KO” ”
- @SEND
- RETURN