上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

前回
http://mastermathematics.blog28.fc2.com/blog-entry-78.html

次回
未定

MJ5の牌山生成アルゴリズム、そこそこの評価を得ているようですが・・・・・・。

したらば本スレにも意見しましたがとりあえず一言。

「あんなややこしいプログラム組む必要無し。」

アレ作った人にどうしてこんなプログラムにしたのか問い詰めたい。
あと、公式の牌山Viewerで誰かのシード値の1文字を変えてみたり、不確定要素に1を足して再生成してみたらわかったんだけど、

サイコロの目も連動して変わってるよね。

それっておかしくね?
全自動卓でさ、卓の下で牌山をせっせせっせと作ってるのと、
卓の中央にあるサイコロを回すのって、
別事象ですよね? この2つの作業は何ら関係は持たないはずですが。

それに、プレイヤー乱数シード。あれ怪しいですね。
SAKU零号機さんも言ってたんですけど、
「シード値が本当に正当な疑似乱数で決定されているかどうかがわからないとヤラセなしとは証明不可能では?」と。


まさにその通りです。
プレイヤー乱数シードこそ完全ランダムで作るべきなのに、
「セキュリティの都合上、生成方法は公開できない」と言っている時点で牌山生成に何らかの法則が存在すると自白しているようなものです。


で。

まさかまさかの鉄板理系向けの説明(ソースの一部を公開したこと)だったので私も心底驚いていますw
つーことで、こちらも牌山生成Flashの牌山生成部分のソースを公開しなければいけませんね!











1 function yamakettei(){
2    var serial:Array = new Array();
3    for(var i:Number = 0 ; i < 136 ; i++){
4      serial.push(i);
5    }
6
7  for(var i:Number = 1 ; i <=136 ; i++){
8    var serialbuf:Number = Math.floor(Math.random() * serial.length);
9    _root["pai" + i].paikettei(serial[serialbuf]);
10     serial.splice(serialbuf,1);
11   }
12 }


ごめんwwwたったこれだけなんだwwwwww


つまりはそういうことですよ。
あんなややこしいプログラムを組む必要は無い、と。

まぁ、コチラのプログラムは文系の方でもわかりやすく見れると思いますwww
では、説明していきます。

2~5行目
配列変数serialを作り、そこに0~135の数字を入れていきます。
serial = [0,1,2,3,4,5, ・・・・・・ ,134,135]
となります。
0~135は、前回説明したシリアル番号1~136に対応しています。
まぁこれは前回の復習ですが、0,1,2,3が1m、4,5,6,7が2m、・・・・・・132,133,134,135が7j(中のこと)に対応しています。
自動卓を開けて、136枚の麻雀牌を穴の中に入れた状態、と考えてください。

7~11行目
次は牌を片隅から1つずつ決めていきます。
配列serialの中から数字をランダムに選び、牌を決定。その後決定した牌は配列serialから削除(spliceの文)しています。
_root["pai" + i].paikettei(serial[serialbuf])
の1文は指定した牌にシリアル番号を送り、そのシリアル番号を「4p」「8s」「5j」等に変換して画像ロードをしているだけです。

具体的に示すと、
serial = [0,1,2,3,4,5・・・・・・133,134,135]
ここからシリアル番号4が選ばれると
serial = [0,1,2,3,5・・・・・・133,134,135]
ここからシリアル番号134が選ばれると
serial = [0,1,2,3,5・・・・・・133,135]

というふうに減っていき、最後の方は

serial = [12,47,69,114]
serial = [47,69,114]
serial = [47,69]
serial = [47]
serial = [](無し、つまり牌山生成完了)

という流れになります。



要約すれば、牌が自動卓の中に入り、ドラムの中から牌を拾って山の片っ端から決定しているだけっていう、
全自動麻雀卓の役割を忠実に再現した設計となっております。


ちなみにサイコロの決定は全く別の箇所で行っています。
上でも述べた通り、
牌山を決定するのとサイコロの目を決定するのは全くの別事象だからです。




さてと、
ゲーム企業がプログラムの1部を公開しなきゃいけないという異常事態。
まぁセガへの信頼回復には1歩進みましたが、
これでも稼働台数が減っていって、MJシリーズ終焉寸前に追い込まれてしまったら、それこそシステムの完全作り直しが必要になるでしょうねw



前回
http://mastermathematics.blog28.fc2.com/blog-entry-78.html

次回
未定
スポンサーサイト
真・最近の記事V1.1

プロフィール

数学不敗

Author:数学不敗




↓マウスカーソルを上に置くと拡大します。
MJ4-6
MJ4-5
MJ4-1
MJ3
MJ2
SNC3
MFC


MJ4・攻略ブログ
MJ4ブログランキングに参加中ッ!

月別アーカイブ
カテゴリ
FC2カウンター

Twitter

StarFirstWatch

3ET製StarWatch
Present's by サンエタ

リンク

このブログをリンクに追加する

ブロとも申請フォーム
QRコード

QRコード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。