タグ:麻雀の検索結果

【ソフト制作】麻雀点数計算ソフト page.1

現代人の麻雀の点数計算 ネット麻雀など、点数計算を覚えないでもいい環境で麻雀をやっている方は、多いのではないでしょうか。 自分は、最近は忙しくて麻雀はしていなかったですが、以前やっていた時はネット麻雀をやってたので、点数計算はあまり覚えてないです。 まぁ、ずっとネット環境でやるだけならいいのですが、もし友達と現実生活で麻雀をやるなどなったとき、点数計算が出来ないと少し恥ずかしいですよね。 それどころか、もし全員が点数計算できないと、いろいろとグダグダしたり、ミスをしたりなどとしたら大変ですよね。 そこで、点数を計算するソフトがあったら楽ですよね! そんなわけで、点数計算ソフトを作成しようと思いました。時間を見つけて制作していきたいと思っています。 点数計算ソフトの概要 それでは、現在計画をしている点数計算ソフトの概要は、以下の通りです。 ー WindowsApp版 WebApp版 動作OS OS-Windows Webブラウザーを入れられるOS(スマホ可) 動作可能環境予想 Windows8.1 以上 動きが鈍くないOS 使用言語 C++ HTML/CSS, PHP or Javascript 値段 無料 無料 このアプリケーションの名前はまだ決まっていません。 予定制作期間は、WindowsApp版, WebApp版、それぞれ2か月~半年程度です。 予定制作費用は、0円です。 WindowsApp版の開発環境はVC++です。ビルドもVC++のビルド機能を使用します。 制作人数は一人です。 それでは、これから頑張っていきたいと思います。

【ソフト制作】MSC(麻雀点数計算ソフト) page.2

現状どうなっているか 現在は、インプットを作成しています。 百聞は一見に如かずという事で、取り敢えず映像を載せます。 現在作ったのは、手牌の入力部分と、リーチ・ダブリーの選択部分を作成しました。 入力部分は、定義済みのコントロールを使用していますが、 リーチ・ダブリーの選択部分や?マークは、ボタンのコントロールを使わず、普通にマウス入力を捕らえて動かしています。 なぜボタン類を使わなかったかというと、画像をボタンに張り付けるのが面倒でしたし、自作のほうが自由に管理できるからです。 細かいコードに関しては、Twitterのダイレクトメッセージなどで質問してください。 今後の方針 とりあえずは、インプット部分の表示方法と牌の羅列からの雀頭、面子の判断方法を思考中です。 表示方法は、思うままに作れそうです。 雀頭、面子の判断方法ですが、正直言うとめちゃくちゃ難しいです。 まず、入力された手牌は、全て数の配列に変換して、それを並べ替える事で、判定しやすくします。 現在考えているフローチャートは未完成ですが、一応以下のようになってます。 雀頭・面子の判定はとても難しくて、例えば、「34555」という形から雀頭を発見するのは、人間の頭では簡単ですが、システムに読ませるのはとても難しいです。 このようなパターンを保存すればプログラムは簡単になるのですが、判定が遅くなるので、しっかりと基礎的なやり方をしようと思ってます。 また、人間の手で、分かりにくい手を全て発見するのは相当難しいですので、そういう面を考慮しても、正攻法でやるほうがいいです。 現在はこんな感じですね。とりあえずこれで終了しておきます。 以上、ソフト制作についての話でした。

【ソフト制作】MSC(麻雀点数計算ソフト) page.3

現状どうなっているか 百聞は一見に如かず、という事で、まずはこれを見てください。 こんな感じです。 入力部のデザインは出来るだけ統一してみました。 また、説明書などを見ずに簡単に操作できるようなソフトになる事を目指して作っているので、結構大きめな画像を用いています。 画像がぼやけないように、画像は原寸大のまま使用しています。 ちなみに、画像は全てビットマップ(.bmp)です。 どなたか、C/C++ のWinAPIでPNGファイルを表示する方法は知らないでしょうか? 知っていたら教えて頂きたいです。 簡易的なデザインになっているのは、配慮ではなく、僕のデザインセンスがないだけです。 何かアドバイスがあれば教えてくださると嬉しいです。 今後の方針 さて、今後の方針ですが、結構決まってきました。 特殊アガリはすぐに判断できるので、通常アガリだけに着目した点数計算方法について書きます。 (a-1) 手牌情報を保存するための構造体のポインター(pT1, pT2)を作成 (a-2) ここからループ開始 |(b-1) pT1 に new 演算子を使い、配列の要素数を +1 する。 |(b-2) 雀頭となりうる牌(2つ以上ある牌)を探し、それを雀頭として計算を開始する。 |(b-3) ここからループ開始 ||(c-1) pT2 に new 演算子を使い、配列の要素数を +1 する。 ||(c-2) pT2 の要素の中にすでに存在しているパターンをさけて面子を作成 ||(c-3) すべてのパターンが無くなったら、ループ終了 |(b-4) pT2 の中から最大の点数を pT1[(pT1の要素数) - 1] に代入 |(b-5) pT2 のメモリーを開放して、これ以上、雀頭となりうる牌がない場合、ループ終了 (a-3) pT1 の中で最大の点数となるものを最終的な計算結果とする。 という感じです。 プログラムで見ると、結構分かりやすいかもしれません。 TEHAI *pT1, *pT2; //TEHAIは手牌の構造体とする for (int i = 0;; i++) { pT1 = new TEHAI[1]; if (/*これ以上雀頭が存在しないければ*/) break; else //新たな雀頭を指定 for (int j = 0;; j++) { pT2 = new TEHAI[1]; /* pT2 にデータを代入 */ if (/*これ以上面子のパターンがない場合*/) break; } pT1[i] = pT2の最大の点数の要素; delete [] pT2; } という感じです。 ちなみに、青文字になっている、pT2 の要素の中にすでに存在しているパターンをさけて面子を作成、についてですが、 これはまだ方法が見つかっていません。 面子の組み合わせを考えるというのは、結構難関で、中々思いつかないので、まだ保留中です。 以上、麻雀点数計算ソフトの報告でした。

【ソフト制作】MSC(麻雀点数計算ソフト) page.4

MSCの完成度 今回は、MSCが一定の場所まで完成したので、それを報告します。 現在、MSCは、役満の判定まで完成しています。 今回までに進んだもの 今回は、役満の判定に加えて、バグの改善が行われました。 進んだものは、以下のものです。 役満の判定 ・国士無双 判定方法:幺九牌が一枚ずつ(アガリ牌を含む) + もう一枚幺九牌 ・国士無双十三面待ち 判定方法:幺九牌が一枚ずつ + もう一枚幺九牌(アガリ牌) ・四暗刻 判定方法:ツモ + 暗槓・暗刻が4つ(アガリ牌を含む) + 頭 ・四暗刻単騎待ち 判定方法:暗槓・暗刻が4つ + 頭(アガリ牌を含む) ・大三元 判定方法:すべての三元牌の刻子 ・緑一色 判定方法:緑一色に不必要な牌が無い ・字一色 判定方法:字牌以外が無い ・小四喜 判定方法:風牌の刻子が3つ + 風牌の頭 ・大四喜 判定方法:風牌の刻子が4つ ・清老頭 判定方法:1, 9牌以外が無い ・四槓子 判定方法:槓子が4つ ・九連宝燈 判定方法:同色の1112345678999(アガリ牌を含む) + 同色牌もう一枚 ・純正九連宝燈 判定方法:同色の1112345678999 + 同色牌もう一枚(アガリ牌) バグに関して ・forループにおける、i, j の書き間違いによる配列のアクセス違反を修正 ・鳴き牌判定時の、鳴き面子判定中のループを終了するための条件分岐のミスを修正 ・鳴き面子の個数をベースとしたループのループ回数を修正 ・文字列を牌番号に変換する関数を多少修正 最後に だいぶ進みました。 これからは、面前牌の役、面子や頭の振り分けを行っていきます。

最近人気な記事


【プログラミング】C/C++ のメリットデメリット

【数学】オイラー積について軽く触れてみる

【ぐろこーんの大学受験論】長文・文章問題を解くには、語彙力(単語力)が必要

【ぐろこーんの大学受験論】現代文は部分ごとに考えて正解を導くらしい

【数学】ラグランジュの補間を求める[長記事]

総括管理人のおすすめ


【数学】ラグランジュの補間を求める[長記事]

【数学】グラフの長さを求める公式を求めてみた PART 1

【数学】グラフの長さを求める公式を求めてみた PART 2

【数学】[分からない人向け]直線を表すベクトル、p = sa + tb (s + t = 1) って結局どういうイメージなのか

【数学】[分からない人向け]ベクトルの一次独立のイメージの仕方