姉妹サイトリンク

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

By ぐろこーん

今回は、MSC(麻雀点数計算ソフト)の制作の進行状況を伝えています。動画と分割区で分かりやすくなっていると思います。

現状どうなっているか

百聞は一見に如かず、という事で、まずはこれを見てください。


こんな感じです。

入力部のデザインは出来るだけ統一してみました。

また、説明書などを見ずに簡単に操作できるようなソフトになる事を目指して作っているので、結構大きめな画像を用いています。

画像がぼやけないように、画像は原寸大のまま使用しています。

ちなみに、画像は全てビットマップ(.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 の要素の中にすでに存在しているパターンをさけて面子を作成、についてですが、

これはまだ方法が見つかっていません。

面子の組み合わせを考えるというのは、結構難関で、中々思いつかないので、まだ保留中です。

以上、麻雀点数計算ソフトの報告でした。

最近人気な記事


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

【数学】[分からない人向け]恒等式について解説

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

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

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

総括管理人のおすすめ


【拡散希望】男女の差について思っている事

【数学】連続する自然数の和で表せる数と規則性(証明)

二次元の女の子の魅力を全力で伝えたい!

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

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