LAST UPDATE 1998/08/22


『 その10-1 』




■ ブロック移動処理 ■

 ■ フィリピンの言葉

 日本にも方言はある。しかしそれは主に単語単位での違いであり、文法までがまるで違うということはない。ところがフィリピンではそういうことが起こるらしい。私の住むマニラではタガログ語が使われている。ところが観光地として有名なセブ島では、ビサヤ語なのである。その他、イロンゴ、セブワノ、イロカノ、ビクラノ、パンパンゲニオなどを基本としそれぞれがさらに多くの方言を持っているそうで(ビサヤ語というのはセブワノの方言だそうである)、それぞれ文法までが違うそうである。テレビ放送はタガログ語と英語で、それらが共通語だとの事だ。

  「フィリピンにいくつぐらい言語がある?」
  「知らん」

ということで、フィリピン人にも多すぎて数がわからないそうである。
 そんな事情もあってか、フィリピンではほとんどの人が英会話ができる。学校での英語の教育は実践力をつけるという目的で行われるため、高校を卒業するころまでに十分な英会話力が身につく。ところで、フィリピンには中学校はない。小学校を卒業すると次は4年間の高校になる。
 どこかの国のように、高い学費や教材費を払って習いに行ってもさっぱり実践力が身につかない状況とは大違いである。
 ところが、やはりフィリピンは英語がネイティブではない。だからおかしな表現がたくさんある。それでもちゃんと意味が通じるわけだから、英文法というのはあまり重要でないのだとつくづく思う。例えば…

  I'll be late, because very traffic.
   You angry me.

なのである。文法的には

  I'll be late, because the traffic is very heavy.
   You are angry at me.

 のはずである。上の英語でも十分に意味が通じる。私の場合は日本で英語教育を受けているわけだから、一般的なフィリピン人と比べて文法には滅法強い。しかし、単語力や聞き取り力が不足している。いくら文法を知っていても、単語を知らなければうまく表現できないし、相手が何を言っているのかわからなければ会話は成立しない。英会話もプログラミング同様多少デタラメな方が良いのかもしれない。



 ■ キースキャン

 ブロックはキーボードで操作する。ということはキーが押された状態を受け取らなくてはならない。イベントはKeyDownを使えば使えば良いのだが、どのコントロールのKeyDownを使えば良いのであろうか。このイベントは現在フォーカスを持っているコントロール上でしか発生しない。
image131.gif  そこで、フォームのプロパティーを見てほしい。KeyPreviewというのがある。値はFalseになっている。これをTrueにすると、他のコントロールでKeyDownイベントが発生するよりも優先してForm/KeyDownが発生することになっている。
 これで全てがうまくいくかというと、あまいのである。コントロールのフォーカスというのは矢印キーや[Tab]キーで移すことができる。
 例えばゲームをスタートさせるために、[Start]ボタンをクリックする。ということはゲームが始まった時点ではCom_Startというコントロールがフォーカスを持っていることになる。
image168.gifあり
image167.gifなし
フォーカスありとなし
コマンドボタンはフォーカスを持っていると四角い点線で囲まれるのですぐにわかる。
 こうなった状態で矢印キーを押すと、TabIndexで指定された順番に従ってフォーカスが移る。キーボード派にとっては便利な機能だが、ゲームでは大変迷惑な機能である。それらの迷惑に対処するために2つのことが必要になる

    1) [Start]ボタンがクリックされた後で、そのフォーカスをPicに移す。
    2) Junctionモードの時には必要のないコントロールをDisableにしておく。

 ■ フォーカスを移す

 Com_Start_Clickのコードを表示してその最後の方に以下のコードを追加する。 これで、イニシャライズと最初の表示が終わった後で、ピクチャーボックスにフォーカスが移動する。 image128.gif







その 10 -1 | その 10-2 | その 10-3 | その 10-4 | その 10-5 | その 10-6 | その 10-7

『 サルのゲーム製作講座 』 目次 | その 1 | その 2 | その 3 | その 4 |
その 5 | その 6 | その 7 | その 8 | その 9 | その 10


もどる

e-mail: sc_3da@magical2.egg.or.jp