- ベストアンサー
タイピングゲームの異なるローマ字入力
こんにちは。 javascriptでタイピングゲームを作っています。 基本的な構造はできたのですが、異なるローマ字打ちを どの様に作ればいいかわかりません。 word="kyatto,cyatto,cyotto" //キャット、チャット、ちょっと list=new Array(); list=word.split(","); 変数wordがタイプするローマ字の中身です。 例えば、最初の「kyatto」を「kixyaxtsuto」や「kyaxtuto」 などでも読み込めるようにするにはどうすればいいでしょうか? 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
語彙が少ないなら、考え方は #1 多いなら、それぞれの語のハッシュを用意しておくと楽? 参考までに。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title></title> <script type="text/javascript"> var romanAlphabetMap = { 0x0074 : [ // t /[\u305F\u3061\u3064\u3066\u3068]/, // たちつてと { 0x0069 : /^([\u3061\u30C1])/, // i : ちチ 0x0079 : { // y 0x0061 : /^(\u3061\u3083|\u30C1\u30E3)/ // a : ちゃチャ } } ], 0x006C : [ // l /[\u3083\u3085\u3087]/, // ゃゅょ { 0x0079 : { // y 0x0061 : /^[\u3083\u30E3]/ // a : ゃャ } } ], 0x0078 : [ // x /[\u3083\u3085\u3087]/, // ゃゅょ { 0x0079 : { // y 0x0061 : /^[\u3083\u30E3]/ // a : ゃャ } } ] }; var p = romanAlphabetMap; var word = 'ちゃ'; //@cc_on function typeGameHandler( evt ) { var keyCode = evt./*@if(1) keyCode @else@*/ which /*@end@*/; if( 'undefined' == typeof p[ keyCode ] ) { alert( 'Mistake!!' ); /*@if(1) evt.returnValue = false; @else@*/ evt.preventDefault( ); /*@end@*/ } else { p = p[ keyCode ]; if( p instanceof Array && word.search( p[0] ) == 0 ) { p = p[1]; } else if( p instanceof RegExp && word.search( p ) == 0 ) { word = word.replace( p, '' ); p = romanAlphabetMap; word == '' && alert( 'Complete!!' ); } } } </script> </head> <body> <p><input type="text" onkeypress="typeGameHandler( event );"></p> </body> </html> 途中で飽きた。
その他の回答 (2)
- babu_baboo
- ベストアンサー率51% (268/525)
いつも勉強になります! ありがとうございます。
- babu_baboo
- ベストアンサー率51% (268/525)
ごみみたいなものをなげてみる! var word_list = { 'kyatto' : ['kyatto', 'kixyaxtsuto', 'kyaxtuto'], 'atoha' : ['atowa'] } function arryMatch (key, list) { var i, spl, kl = key.length, s, ret = []; for (i = 0; spl = list[i]; i++) { s = spl.substr(0, kl); if (s === key) ret.push(s); } return ret; } var chk = arryMatch('kya', word_list['kyatto']); alert (chk.length);
お礼
大変勉強になりました。 有難うございます。
お礼
大変勉強になりました。 有難うございます。