第12話 連想配列の利用法

--------------------- 第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でした。

----------------------------------------------------------------------