ここでは、タイピングアプリのソースコードを公開しています。単純なタイピングでは少し、つまらないと思ったので、ゲーム仕立てにしてみました。
技術的な、ポイントとしては、音声の再生や、ドラクエのような1文字表示といったところでしょうか。画像や、音声をつかったプログラムは、何とも楽しいものです。今回のサンプルで、プログラムに興味を持ってくれる方がいたら幸いです。
ルールについて、少しだけ説明します。【Question】に表示されている単語を、入力し、入力が終わったら、【Enter】キーを押してください。それにより、入力内容が判定されます。
※タイピングの入力という点を重視し、全角(2バイト)文字の入力には対応していません。キー入力1回ずつでの、半角1文字単位での正誤判定としています。但し、SHIFTキーとの同時押しは、1回のキー入力とみなします。
ソースコードが以下からダウンロード出来ますので、参考にしてみてください。ソースコードは、Microsoft社の製品 エクセル向けに書いたものなので、利用するには、ご使用のコンピュータに、エクセルがインストールされていることが、必須条件です。
以下がエクセルで動作しているサンプル画像です。
ダメージを受けた時などに、アニメーションするように改善したいところなのですが、VBAのタイマーの分解能が、1秒という仕様となっているので、思ったようなアニメーションを実装することが出来ません。非常に、残念なところです。この仕様制限の中で、どれくらいビジュアル面で、凝ったものが作れるかが、ポイントと思われます。
ちなみに、何かしらのイベント関数の中で、ウェイトをいれて、アニメーションするように実装しても、それは、うまく表示されません。それは、再描画処理が、そのイベント関数を抜けてから、呼ばれるからです(Windowsプログラムの仕組み)。
キーが押された、マウスがクリックされた、選択位置が変わったなどの、イベントの順番が、入れ替わって処理されると困りますよね。ですので、キューというデータ構造にて、これらのイベントがOSにより、順序制御されています。こういったイベントの中に、VBAでは実装できませんが、描画更新のイベントも存在しているのです。
アニメーションを実装する場合、通常は、マルチスレッドにより、実装するのですが、ExcelのVBAでは基本的には、マルチスレッドは使えないようです。
唯一、同一イベント関数内で、再描画処理が呼ばれるのが、セルの設定です(Excel固有な仕組み)。これを利用したのが、ドラクエのような1文字表示です。
再描画をすると、その分処理が重たくなりますので、よく高速化のために、Application.ScreenUpdating=Falseを使用して、再描画を停止させます。今回は、このことを逆方向に利用して、視覚的な効果を狙った実装にしてあります。
今回のサンプルに利用している、音声データは、サイト『ポケットサウンド』からダウンロードした素材です。サイトにリンクをはることで、商用でも、フリーで利用できる非常に良心的なサイトです。
サイト:ポケットサウンド
※利用規約を守って、利用するようにしましょう。
作者は、本ソフトウェアの使用または使用不能から生じるコンピュータの故障、情報の消失、その他あらゆる直接的及び間接的被害に関して一切の責任を負いません。
ご使用にあたり、改善の要望、不具合の発生等ありましたら、画面下のアドレスまで、ご連絡頂きますよう、宜しくお願いいたします。ご面倒、ご不便をお掛けしますが、宜しくお願いいたします。