|
|
|
TOP
サイトマップ
タイピングゲームを作る講座
ゲーム
DIABLO
チャット BBS リンク集 顔文字 逆アクセスランキング |
|
|
サンプルをダウンロードしてください。 2-2-1.講座概要 さて今回の講座ではひらがなからローマ字の問題を作成する方法を学びます。 なぜそんなことをするのか? それには理由があります。 まず第一にキーセッティング機能を搭載したい場合に作りやすいからです。 キーセッティング機能を搭載する場合は同時に入力方法をユーザーに指定してもらうのですが、 毎回セッティングするのは苦労するのでクッキーを使わないとあまり使われない機能になってしまうかもしれません。 そして次の良い点としては、例えばローマ字の問題を作成者が作ったとします。 そうすると少なからず問題が増えるごとに入力方法が別の問題ができてしまいます。 『ジルバ』という文字列があったとして、作成者がこのローマ字の問題を作るとします。 そうすると 『jiruba』、『ziruba』 二つの入力方法があり、作成者が必ず統一された入力方法で問題を作成するとは限りません。 そういう理由もあって『ひらがな』から『ローマ字』の作成をスクリプトでしてしまおうというのが 今回の講座です。 実際のサンプルをやっても前回の講座と同じですがスクリプトは格段に量が増えております。 2-2-2.JavaScript解説 今回のHTML部分は前回講座と同じものなので解説はしません。 今回は前回のスクリプトを変更していってますので、前回のスクリプトを改造して作成するのもいいでしょう。
まずは変更した箇所ですが、ひらがなからローマ字に変換する関数change()の追加と、startset()関数内で
ローマ字のリストを作成していた部分をひらがなの文字に変換して変数の名前も変更しました。
同じような変数がいくつもあってまぎらわしいのでそこは変更しておくといいかもしれません・・・。
あとはひらがなをローマ字に変換する際に利用するひらがなリスト、ローマ字変換用のリストを作成しました。
ここでローマ字変換用の部分は入力方法によって変更することで固定した入力方法にすることができます。
change()関数内の特殊変換部分も同じようにすることで変換できます。
さて実際にchange()関数で行われてることを見てみましょう。
ただ例外がありまして、例えば『きゃっと』という文字列があったとします。
}else if(sellect.charAt(i+1)=="ゃ"){ sellectという変数はランダムに選んだ問題のひらがな部分が入っています。 さてスクリプト量が長いので一行づつ解説はしませんが、やっていることはみな同じです。 ただ一部違う部分があるので、そこを解説します。
}else if(sellect.charAt(i)=="っ"){ さてこの部分ですが上のelse if文では現在の文字が小さい『っ』の時です。小さい『っ』は特殊で次に来る文字によって 変わってきます。例えば『はってん』という文字列の場合『hattenn』、『はっかん』という文字列の場合は『hakkann』 とそれぞれ『t』と『k』の連続によって打つことができますが、ひらがなでは同じ小さい『っ』です。 これを実現する為に次の文字をhiraganachangeリストより探し、その一番目の文字を取り出しています。 なぜこれで実現できるかというと、小さい『っ』の後の文字の2回続きによって小さい『っ』というものが打てる からです。実際に取り出すのは見つかったhiraganachangeリストと同じ要素番号のro_machangeリストの0番目の 文字です。 さて次のelse文ですが、これは今までの条件でひっかからなかった場合通常通りの変換を行う処理です。 現在見ているひらがなとhiraganachangeリストを見比べて同じだったらro_machangeリストから同じ要素番号の ものを取り出して文字列の作成をしています。
さて、今回の講座終了です。
少し難しい処理なので、わからない場合は質問掲示板にどうぞ。
本当にわからない場合はローマ字の問題リストを普通に作っていただいても問題ありませんし、
スクリプトをコピーするだけでもかまいません。 |