--------------------- 第12話 連想配列の利用法 --------------------------
はじまり、はじまり~。
<そろそろね。>
何が?
<番外編は終わりが近くなると、暗黒面(ダークサイド)の話が出てくる。>
分かってるジャン!。
<で、今回は?>
本家掲示板では、先ず出て来ない内容にするか?
<Netゲーム関連?>
部分的に関係するかも。パスクラにも通ずるものがあり、ある意味危険でもある。
そこで対応としては、「危険なナイフはしまって置く」事とし、スクリプト全文は表示しないこととする。
<どうして、そんな回りくどいことするの?>
単純にコピペされて悪用されるのを防ぐ為だ。
<そんなの理解出来る人には意味無いじゃん?>
そうだが、出来る人はすでにやっているからね。
<単純拡散を防ぐ為だね?>
と言うより、善意の人の手助けをしたいのだ。
世の中には、あと一歩の所で「プログラミングの楽しさ」を知らずにいる人も多いと思うから。
私の望みは、UWSCの機能云々よりも「創る喜びを体感してもらいたい」のだ。
そのツールとしてUWSCは最も手軽で、習得した内容は実務に遊びに役に立つ。
そして、何より「創る事は楽しい」。ある意味、理想的じゃない?
<だね。・・・で、本題は?>
忘れるとこだった。概要は次の通り。
画面上の文字"UWSC"を取得したいのだが、どうしても直接取得できず。画像認識することにした。
ところが、一文字づつ登録順に認識するので"CSUW"となってしまう。もっと簡単に"UWSC"と取得出来ないか?
<まかせて! Liners様に学んで少しは成長したのよ!>
<え~っと、えっと。 分かったX座標を取得して並べ替えるのね!>
良い所に気が付いたね。
<でしょ♪ で、X座標格納用の配列と、ファイル名とアルファベット格納用の配列と、ソレを関連付ける配列を用意して>
<それぞれに代入して、最後に並び替える>
スクリプトは? モデルでいいよ。
Dim X[] = 40, 30, 10, 20 //取得X座標(取得順)
Dim A[] = "C", "S", "U", "W" //取得文字(取得順)
// 関連付け配列(分からない)
// ソート(分からない)
// 文字列表示 ??
<えっ?? 意外に難しい! 関連付けってどうやるの?>
こうゆう場合は2次元配列を使う。例えば最初の"C"でX座標が40の場合は
Dim X[4, 2]
X[0, 0] = "40" // X座標部
X[0, 1] = "C" // データ部
2次元のX座標部にソートを掛けて、データ部も一緒に入れ替える。
もしくは、X[],A[]とかに配列を分けているなら、A[]も一緒に入れ替える。
<え~~何だかとっても複雑ぅ。最初は簡単に出来ると思ったのにぃ。>
<ソートのスクリプトも出来ていないし面倒だなぁ~~~~>
<召還魔法♪ Help Me! Liners! お願い助けて!>
召還すな!!
まだまだだね。重要な事を忘れているよ。
<えっ???>
難しい。面倒。複雑。ソート。文字列と来たら?
<連想配列ぅ! ・・・んっ??? こんなに複雑なのに使えるの?>
コレを見てね。
HASHTBL A = HASH_SORT // キーはソート
A[40] = "C"; A[30] = "S"; A[10] = "U"; A[20] = "W" // A[x座標] = 文字 (実際には両辺代入でループ内変更1行)
MsgBox(A[0, HASH_VAL] + A[1, HASH_VAL] + A[2, HASH_VAL] + A[3, HASH_VAL])
<えっ?? 絵~~~~~~~~~~~~~~~~~~~!!>
<な、ナンなのコレ? 実質たったの3行よ。3行! 信じらんない。>
<///// 簡単にもほどがある! /////>
<今だから理解できるわ! 連想配列の威力がコンナに凄いなんて・・・>
<こんなのパスクラや画像認識に悪用されたらヤバイですよ。! このお話は、封印しましょ。封印!>
そうだね。この辺までにしとこか。
<へっ? 本当は、まだあるのね! な、なんて奴!!>
----------------------------------------------------------------------
提供は: マジヤバ!(ギリ封印前) ダークLinersでした。
----------------------------------------------------------------------