氏名:宮崎 紀行 「麻雀の点数計算プログラムと一人打ち麻雀」 ●プログラムの目的と機能 このプログラムは卓上ゲーム麻雀において、上がった手牌の点数計算をする。またそれを使って、 一人打ち麻雀もプレイできる。 麻雀の点数計算プログラム 牌を種類ごとに配列へと分ける 同じ牌が 2 つ以上ある配列から同じ 牌を抜き出し、それを仮対子とする。 暗刻を抜き出す 順子を抜き出す 上がれる形にな っているか NO 暗刻を抜き出す前の状 態に戻す。 順子を抜き出す 暗刻を抜き出す NO 上がれる形にな っているか YES 役があるか? NO 上がれません ここでは、プログラム実行によりどのような結果が得られるかに ついて示す。具体例を挙げて説明する。 手牌の入力 YES ●プログラムの使用方法 YES 上がれます モードを選択してください。 1:麻雀の点数計算プログラム 2:一人打ち麻雀 :1 手牌を入力して下さい。 (1萬2萬3萬→1m2m3m 1索2索3索→1s2s3s 1筒2筒3筒→1p2p3p) (東→Z1 南→Z2 西→Z3 北→Z4 白→Z5 発→Z6 中→Z7) (1m1m1m1m 等でカンした場合は 1m1m1m と表記してください。) (鳴いた面子も普通に入力してください。) :1m1m1m2m3m4m5m6m7m8m9m1s1s1s /* ←ここで上がり形の牌を入力 */ 上がり牌は何ですか?:5m /* 後に出てくる待ちの形を知るため */ 表ドラを教えてください。(5m 表示のときは 6m と入力してください。):0 カンをしていますか?(yes:1 no:0):0 /* なしの時は 0 を入力↑← */ 立直はかけましたか?(yes:1 no:0):0 /* ↓ 1 2 はつまり東場の南風 */ 場風と自風を入力してください。(東:1 南:2 西:3 北:4):1 2 上がり方を入力してください。(ツモ:1 ロン:2 ):1 /* 役、符数に関係する */ 鳴いていますか?(yes:1 no:0):0 /* ↓牌を種類ごとに配列へと分ける */ m[1]=3 m[2]=1 m[3]=1 m[4]=1 m[5]=1 m[6]=1 m[7]=1 m[8]=1 m[9]=1 s[1]=3 s[2]=0 s[3]=0 s[4]=0 s[5]=0 s[6]=0 s[7]=0 s[8]=0 s[9]=0 p[1]=0 p[2]=0 p[3]=0 p[4]=0 p[5]=0 p[6]=0 p[7]=0 p[8]=0 p[9]=0 zihai[1]=0 zihai[2]=0 zihai[3]=0 zihai[4]=0 zihai[5]=0 zihai[6]=0 zihai[7]=0 k:ann_n = 0 toitsu = 1m1m syuntsu = 1m2m3m syuntsu = 4m5m6m /* ↑カンの個数 ↑対子の牌 ↑順子の牌 */ syuntsu = 7m8m9m anko = 1s1s1s syuntsu = 3 toitsu = 1 anko = 1 /* 順子+暗刻=4 && 対子が一個なら上がりが成立 */ agari_hai = 5m 待ちはカンチャンです。 /* 待ちがわかる。これによって役、符数が変わる */ m_toitsu = 1m1m /* ちなみに、カンチャンでは平和はつかない */ s_anko2[1]=1s1s1s /* ←完成形の面子 */ m_syuntsu2[1]=1m2m3m m_toitsu = 1m1m m_syuntsu2[2]=4m5m6m m_toitsu = 1m1m m_syuntsu2[3]=7m8m9m m_toitsu = 1m1m 点数計算に入ります。 ↓の内訳 (最初からつく符)+(カンチャン)+(1 ソー暗刻)+(ツモ) 符数は 32 の1の位切り上げで 40 です。 /* ちなみに 20+2+8+2 = 32 */ 面前ツモっ! /* 一ハン役 */ 一気通貫っ! /* 二ハン役 */ ハン数は 3 です! /* 合計三ハン */ 符数は 40 です。点数は、16×2×2×2(ハン数)× 40 (符数)/*点数計算の計算式*/ = 5200 (2600(親),1300(子))点(点数の10桁は切り上げ)/*ツモなので皆から徴収*/ ●感想 プログラム作成にあたって思い入れ(苦い)のある部分は、待ちの形 を調べるところ。調べる方法として、後一枚何があればいいかを一枚 飜数、符数を調べる 点数を出力 一枚調べる方法なども考えたが、それはさすがに行がいく。いろいろ 考えて、結局地道に書いた部分と計算で書いた部分とになった。なん にせよ、うまく出力できるようになってよかった。もし次回機会があ れば、4人麻雀のプログラミングをしたい。CPU の動作を考えるの がしんどうそうだが・・・。
© Copyright 2025 ExpyDoc