「タイプング」の編集履歴(バックアップ)一覧はこちら

タイプング」(2007/12/18 (火) 20:08:59) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**実行画面 #flash(http://www42.atwiki.jp/zasetsukinshi?cmd=upload&act=open&pageid=19&file=typing.swf, width=400, height=250) **ソース ***アクション - 1フレーム /* * キー入力を感知したら入力したキーのキーコードを受け取るキーリスナーを定義 */ var KeyListener:Object = new Object(); Key.addListener(KeyListener); /* * テキストを読み込み、配列に格納したら次フレームへ移行 */ var textData_Array:Array = new Array(); //テキストを格納する配列 var textScale_Array:Array = new Array(); //テキストの読みを格納する配列 var textIndex_Array:Array = new Array(); //文字の入力パターンを格納する配列 var loadText:LoadVars = new LoadVars(); //一時的に、読み込んだテキストを格納する変数 var loadPattern:LoadVars = new LoadVars(); //一時的に、ローマ字の入力パターンを格納する変数 var mess = "データを読み込んでいます..."; var iLength:Number; var jLength:Number; var kLength:Number; storage = function(){ mess = "テキストデータの適化中..."; //問題分を一字毎に細分化 iLength = textScale_Array.length; for(i = 0; i < iLength; i++){ textScale_Array[i] = textScale_Array[i].split(""); } //読み込んだパターンを配列に格納 //textIndex_Array[読み一字分の表記][読み一字分のローマ字表記][ローマ字一字分のアルファベット表記] iLength = textIndex_Array.length; for(i = 0; i < iLength; i++){ textIndex_Array[i] = textIndex_Array[i].split("-"); jLength = textIndex_Array[i].length; for(j = 0; j < iLength; j++){ textIndex_Array[i][j] = textIndex_Array[i][j].split(""); } } /* //読み込んだパターンをすべて表示 iLength = textIndex_Array.length for(i = 0; i < iLength; i++){ jLength = textIndex_Array[i].length for(j = 0; j < jLength; j++){ trace("[" + i + "] [" + j + "] : " + textIndex_Array[i][j]); } trace(""); } */ nextFrame(); }; loadText.onLoad = function(success:Boolean){ if(success){ //trace(this.toString()); textData_Array = this.textData.split(","); //読み込んだテキストをカンマ(",")で区切って配列に格納 textScale_Array = this.textScale.split(","); //同上 if(textData_Array.length == textScale_Array.length){ storage(); }else{ trace("データが壊れています" + "\ntextData_Array : " + textData_Array.length + "\ntextScale_Array : " + textScale_Array.length); } }else{ trace("Error loading/parsing LoadVars."); } }; loadPattern.onLoad = function(success:Boolean){ if(success){ //trace(this.toString()); textIndex_Array = this.pattern.split("|"); loadText.load("./typing.txt"); }else{ trace("Error loading/parsing LoadVars."); } }; loadPattern.load("./textPattern.txt"); ***アクション - 2フレーム mess = ""; textData = ""; scale = ""; var rand:Number = 0; var inputNext:Number = 0; //textIndex_Array[]に格納されている次の文字の番地を保持する var inputCnt:Number = 0; //現在出ている問題で入力した文字数を保持する変数 var inputTotalCnt:Number = 0; //トータルで入力したキーの数を保持する変数 var inputTotalMiss:Number = 0; var inputDuration:Number = 0; var inputMaxDuration:Number = 0; var cnt:Number = 0; //入力に成功したローマ字を表示させないようにする為のカウントアップ保持変数 var inputKey:Array = new Array(""); //正解を格納する変数 var spStr_Bool:Boolean = new Boolean(false); var endStr:Number = 0;//入力し終えた文字の数 var endRome:Number = 0;//処理中の一文字のうち、入力中のローマ字の数 var lineI:Array = new Array("い", "き", "し", "ち", "に", "ひ", "み", "り", "ぎ", "じ", "ぢ", "び", "ぴ"); var lineVocal:Array = new Array("あ", "い", "う", "え", "お"); rand = Math.floor(Math.random() * textData_Array.length); //引数として与えられた文字が、母音、な行、ん、で無ければtrueを返す vocalCheck = function(str){ switch(str){ case "a": bool = false; break; case "i": bool = false; break; case "u": bool = false; break; case "e": bool = false; break; case "o": bool = false; break; case "n": bool = false; break; default : bool = true; break; } return bool; } //textIndex_Array[]から次の文字が入っている番地を探す searchNext = function(num){ jLength = textIndex_Array.length; for(j = 0; j < jLength; j++){ if(textScale_Array[rand][num+1] == textIndex_Array[j][0][0]){ return j; break; } } } //文章を一つ入力し終えたらtextInit()を呼び出して新しいテキストを表示する textInit = function(){ inputCnt = 0; cnt = 0; rand = Math.floor(Math.random() * textData_Array.length); textData = textData_Array[rand]; scaleInit(); }; //正答となるキーを入力したらローマ字表記を表示するscaleを更新する scaleInit = function(){ cnt = 0; scale = ""; iLength = textScale_Array[rand].length; for(i = endStr; i < iLength; i++){ inputNext = searchNext(i); //入力中の文字が"っ"の場合 if(textScale_Array[rand][i] == "っ"){ //次の文字が母音、な行でない場合 if(vocalCheck(textIndex_Array[inputNext][1][0])){ if(inputCnt <= cnt){ scale += textIndex_Array[inputNext][1][0]; } cnt++; i++; inputNext = searchNext(i); } } //入力中の文字が"ん"の場合 if(textScale_Array[rand][i] == "ん"){ //次の文字が母音、な行でない場合 if(vocalCheck(textIndex_Array[inputNext][1][0])){ if(inputCnt <= cnt){ scale += "n"; } cnt++; i++; inputNext = searchNext(i); } } //通常処理 for(j = 0; j < jLength; j++){ if(textScale_Array[rand][i] == textIndex_Array[j][0][0]){ kLength = textIndex_Array[j][1].length; for(k = 0; k < kLength; k++){ //特殊な文字でなければ普通に入力させる if(inputCnt <= cnt){ scale += textIndex_Array[j][1][k]; } cnt++; //入力中の文字が「い」列で、その後にゃぃゅぇょがある場合 //J以外のい列の後に小文字が入るならば入力を省略する if((textIndex_Array[j][1][1] == "i") && (textIndex_Array[inputNext][1][0] == "x")){ if(textIndex_Array[j][1][0] != "j"){ if(inputCnt <= cnt){ scale += "y"; } cnt ++; } if(inputCnt <= cnt){ scale += textIndex_Array[inputNext][1][textIndex_Array[inputNext][1].length-1]; } cnt++; i++; break; } } break; } //if } //for j } //for i }; //function KeyListener.onKeyDown = function(){ mess = "DOWN -> Code: " + Key.getCode() + "\tACSII: " + Key.getAscii()+"\tKey: " + chr(Key.getAscii()); if(chr(Key.getAscii()).toString() == scale.split("", 1).toString()){ inputTotalCnt++; inputCnt++; inputDuration++; endRome++; scaleInit(); if(scale.length <= 0){ textInit(); } if(inputMaxDuration < inputDuration){ inputMaxDuration = inputDuration; } }else if(!Key.isDown(16)){ mess = "miss tatch"; inputTotalCnt++; inputTotalMiss++; inputDuration = 0; } total = inputTotalCnt; miss = inputTotalMiss; duration = inputDuration; maxDuration = inputMaxDuration; }; textInit(); ***同じ階層に入れた外部読み込み用のテキストtextPattern.txt pattern=あ/a い/i う/u え/e お/o か/ka/ca き/ki く/ku/cu け/ke こ/ko/co さ/sa し/si/shi/ci す/su せ/se/ce そ/so た/ta ち/ti/chi つ/tu/tsu て/te と/to な/na に/ni ぬ/nu ね/ne の/no は/ha ひ/hi ふ/hu/fu へ/he ほ/ho ま/ma み/mi む/mu め/me も/mo や/ya ゆ/yu よ/yo ら/ra り/ri る/ru れ/re ろ/ro わ/wa を/wo ん/nn が/ga ぎ/gi ぐ/gu げ/ge ご/go ざ/za じ/ji/zi ず/zu ぜ/ze ぞ/zo だ/da ぢ/di づ/du で/de ど/do ば/ba び/bi ぶ/bu べ/be ぼ/bo ぱ/pa ぴ/pi ぷ/pu ぺ/pe ぽ/po ぁ/xa/la ぃ/xi/li/xyi/lyi ぅ/xu/lu ぇ/xe/le/xye/xle ぉ/xo/lo っ/xtu/ltu/ltsu ゃ/xya/lya ゅ/xyu/lyu ょ/xyo/lyo A/a B/b C/c D/d E/e F/f G/g H/h I/i J/j K/k L/l M/m N/n O/o P/p Q/q R/r S/s T/t U/u V/v W/w X/x Y/y Z/z 1/1 2/2 3/3 4/4 5/5 6/6 7/7 8/8 9/9 0/0 、/, 。/. !/! ?/? ー/- ***同じ階層に入れた外部読み込み用の問題文typing.txt textData=こんにちは ,おはようございます ,こんばんは ,抹茶プリンは最高! ,ゴノレゴ13 ,提出物を出して下さい ,なんとなく人生を謳歌している ,そんな馬鹿な。 ,白い白馬から落馬して落ちた ,三人寄れば文殊の知恵 ,料理のさしすせそ ,朝食は毎日食べましょう ,ホップ、ステップ、ジャンプ! ,知覚過敏 ,2378テトラクロロジベンゾパラジオキシン ,サンゴ礁の見える海 ,残念で仕方が無い ,朝飯前 ,犯人はヤス ,靖子さん、朝ご飯は? ,重大なエラーが発生しました。直ちに終了して下さい。 &textScale=こんにちは ,おはようございます ,こんばんは ,まっちゃぷりんはさいこう! ,ごのれご13 ,ていしゅつぶつをだしてください ,なんとなくじんせいをおうかしている ,そんなばかな。 ,しろいはくばかららくばしておちた ,さんにんよればもんじゅのちえ ,りょうりのさしすせそ ,ちょうしょくはまいにちたべましょう ,ほっぷ、すてっぷ、じゃんぷ! ,ちかくかびん ,2378てとらくろろじべんぞぱらじおきしん ,さんごしょうのみえるうみ ,ざんねんでしかたがない ,あさめしまえ ,はんにんはやす ,やすこさん、あさごはんは? ,じゅうだいなえらーがはっせいしました。ただちにしゅうりょうしてください。
**実行画面 #flash(http://www42.atwiki.jp/zasetsukinshi?cmd=upload&act=open&pageid=19&file=typing1.swf, width=400, height=250) **ソース ***アクション - 1フレーム /* * キー入力を感知したら入力したキーのキーコードを受け取るキーリスナーを定義 */ var KeyListener:Object = new Object(); Key.addListener(KeyListener); /* * テキストを読み込み、配列に格納したら次フレームへ移行 */ var textData_Array:Array = new Array(); //テキストを格納する配列 var textScale_Array:Array = new Array(); //テキストの読みを格納する配列 var textIndex_Array:Array = new Array(); //文字の入力パターンを格納する配列 var loadText:LoadVars = new LoadVars(); //一時的に、読み込んだテキストを格納する変数 var loadPattern:LoadVars = new LoadVars(); //一時的に、ローマ字の入力パターンを格納する変数 var mess = "データを読み込んでいます..."; var iLength:Number; var jLength:Number; var kLength:Number; storage = function(){ mess = "テキストデータの適化中..."; //問題分を一字毎に細分化 iLength = textScale_Array.length; for(i = 0; i < iLength; i++){ textScale_Array[i] = textScale_Array[i].split(""); } //読み込んだパターンを配列に格納 //textIndex_Array[読み一字分の表記][読み一字分のローマ字表記][ローマ字一字分のアルファベット表記] iLength = textIndex_Array.length; for(i = 0; i < iLength; i++){ textIndex_Array[i] = textIndex_Array[i].split("-"); jLength = textIndex_Array[i].length; for(j = 0; j < iLength; j++){ textIndex_Array[i][j] = textIndex_Array[i][j].split(""); } } /* //読み込んだパターンをすべて表示 iLength = textIndex_Array.length for(i = 0; i < iLength; i++){ jLength = textIndex_Array[i].length for(j = 0; j < jLength; j++){ trace("[" + i + "] [" + j + "] : " + textIndex_Array[i][j]); } trace(""); } */ nextFrame(); }; loadText.onLoad = function(success:Boolean){ if(success){ //trace(this.toString()); textData_Array = this.textData.split(","); //読み込んだテキストをカンマ(",")で区切って配列に格納 textScale_Array = this.textScale.split(","); //同上 if(textData_Array.length == textScale_Array.length){ storage(); }else{ trace("データが壊れています" + "\ntextData_Array : " + textData_Array.length + "\ntextScale_Array : " + textScale_Array.length); } }else{ trace("Error loading/parsing LoadVars."); } }; loadPattern.onLoad = function(success:Boolean){ if(success){ //trace(this.toString()); textIndex_Array = this.pattern.split("|"); loadText.load("./typing.txt"); }else{ trace("Error loading/parsing LoadVars."); } }; loadPattern.load("./textPattern.txt"); ***アクション - 2フレーム mess = ""; textData = ""; scale = ""; var rand:Number = 0; var inputNext:Number = 0; //textIndex_Array[]に格納されている次の文字の番地を保持する var inputCnt:Number = 0; //現在出ている問題で入力した文字数を保持する変数 var inputTotalCnt:Number = 0; //トータルで入力したキーの数を保持する変数 var inputTotalMiss:Number = 0; var inputDuration:Number = 0; var inputMaxDuration:Number = 0; var cnt:Number = 0; //入力に成功したローマ字を表示させないようにする為のカウントアップ保持変数 var inputKey:Array = new Array(""); //正解を格納する変数 var spStr_Bool:Boolean = new Boolean(false); var endStr:Number = 0;//入力し終えた文字の数 var endRome:Number = 0;//処理中の一文字のうち、入力中のローマ字の数 var lineI:Array = new Array("い", "き", "し", "ち", "に", "ひ", "み", "り", "ぎ", "じ", "ぢ", "び", "ぴ"); var lineVocal:Array = new Array("あ", "い", "う", "え", "お"); rand = Math.floor(Math.random() * textData_Array.length); //引数として与えられた文字が、母音、な行、ん、で無ければtrueを返す vocalCheck = function(str){ switch(str){ case "a": bool = false; break; case "i": bool = false; break; case "u": bool = false; break; case "e": bool = false; break; case "o": bool = false; break; case "n": bool = false; break; default : bool = true; break; } return bool; } //textIndex_Array[]から次の文字が入っている番地を探す searchNext = function(num){ jLength = textIndex_Array.length; for(j = 0; j < jLength; j++){ if(textScale_Array[rand][num+1] == textIndex_Array[j][0][0]){ return j; break; } } } //文章を一つ入力し終えたらtextInit()を呼び出して新しいテキストを表示する textInit = function(){ inputCnt = 0; cnt = 0; rand = Math.floor(Math.random() * textData_Array.length); textData = textData_Array[rand]; scaleInit(); }; //正答となるキーを入力したらローマ字表記を表示するscaleを更新する scaleInit = function(){ cnt = 0; scale = ""; iLength = textScale_Array[rand].length; for(i = endStr; i < iLength; i++){ inputNext = searchNext(i); //入力中の文字が"っ"の場合 if(textScale_Array[rand][i] == "っ"){ //次の文字が母音、な行でない場合 if(vocalCheck(textIndex_Array[inputNext][1][0])){ if(inputCnt <= cnt){ scale += textIndex_Array[inputNext][1][0]; } cnt++; i++; inputNext = searchNext(i); } } //入力中の文字が"ん"の場合 if(textScale_Array[rand][i] == "ん"){ //次の文字が母音、な行でない場合 if(vocalCheck(textIndex_Array[inputNext][1][0])){ if(inputCnt <= cnt){ scale += "n"; } cnt++; i++; inputNext = searchNext(i); } } //通常処理 for(j = 0; j < jLength; j++){ if(textScale_Array[rand][i] == textIndex_Array[j][0][0]){ kLength = textIndex_Array[j][1].length; for(k = 0; k < kLength; k++){ //特殊な文字でなければ普通に入力させる if(inputCnt <= cnt){ scale += textIndex_Array[j][1][k]; } cnt++; //入力中の文字が「い」列で、その後にゃぃゅぇょがある場合 //J以外のい列の後に小文字が入るならば入力を省略する if((textIndex_Array[j][1][1] == "i") && (textIndex_Array[inputNext][1][0] == "x")){ if(textIndex_Array[j][1][0] != "j"){ if(inputCnt <= cnt){ scale += "y"; } cnt ++; } if(inputCnt <= cnt){ scale += textIndex_Array[inputNext][1][textIndex_Array[inputNext][1].length-1]; } cnt++; i++; break; } } break; } //if } //for j } //for i }; //function KeyListener.onKeyDown = function(){ mess = "DOWN -> Code: " + Key.getCode() + "\tACSII: " + Key.getAscii()+"\tKey: " + chr(Key.getAscii()); if(chr(Key.getAscii()).toString() == scale.split("", 1).toString()){ inputTotalCnt++; inputCnt++; inputDuration++; endRome++; scaleInit(); if(scale.length <= 0){ textInit(); } if(inputMaxDuration < inputDuration){ inputMaxDuration = inputDuration; } }else if(!Key.isDown(16)){ mess = "miss tatch"; inputTotalCnt++; inputTotalMiss++; inputDuration = 0; } total = inputTotalCnt; miss = inputTotalMiss; duration = inputDuration; maxDuration = inputMaxDuration; }; textInit(); ***同じ階層に入れた外部読み込み用のテキストtextPattern.txt pattern=あ/a い/i う/u え/e お/o か/ka/ca き/ki く/ku/cu け/ke こ/ko/co さ/sa し/si/shi/ci す/su せ/se/ce そ/so た/ta ち/ti/chi つ/tu/tsu て/te と/to な/na に/ni ぬ/nu ね/ne の/no は/ha ひ/hi ふ/hu/fu へ/he ほ/ho ま/ma み/mi む/mu め/me も/mo や/ya ゆ/yu よ/yo ら/ra り/ri る/ru れ/re ろ/ro わ/wa を/wo ん/nn が/ga ぎ/gi ぐ/gu げ/ge ご/go ざ/za じ/ji/zi ず/zu ぜ/ze ぞ/zo だ/da ぢ/di づ/du で/de ど/do ば/ba び/bi ぶ/bu べ/be ぼ/bo ぱ/pa ぴ/pi ぷ/pu ぺ/pe ぽ/po ぁ/xa/la ぃ/xi/li/xyi/lyi ぅ/xu/lu ぇ/xe/le/xye/xle ぉ/xo/lo っ/xtu/ltu/ltsu ゃ/xya/lya ゅ/xyu/lyu ょ/xyo/lyo A/a B/b C/c D/d E/e F/f G/g H/h I/i J/j K/k L/l M/m N/n O/o P/p Q/q R/r S/s T/t U/u V/v W/w X/x Y/y Z/z 1/1 2/2 3/3 4/4 5/5 6/6 7/7 8/8 9/9 0/0 、/, 。/. !/! ?/? ー/- ***同じ階層に入れた外部読み込み用の問題文typing.txt textData=こんにちは ,おはようございます ,こんばんは ,抹茶プリンは最高! ,ゴノレゴ13 ,提出物を出して下さい ,なんとなく人生を謳歌している ,そんな馬鹿な。 ,白い白馬から落馬して落ちた ,三人寄れば文殊の知恵 ,料理のさしすせそ ,朝食は毎日食べましょう ,ホップ、ステップ、ジャンプ! ,知覚過敏 ,2378テトラクロロジベンゾパラジオキシン ,サンゴ礁の見える海 ,残念で仕方が無い ,朝飯前 ,犯人はヤス ,靖子さん、朝ご飯は? ,重大なエラーが発生しました。直ちに終了して下さい。 &textScale=こんにちは ,おはようございます ,こんばんは ,まっちゃぷりんはさいこう! ,ごのれご13 ,ていしゅつぶつをだしてください ,なんとなくじんせいをおうかしている ,そんなばかな。 ,しろいはくばかららくばしておちた ,さんにんよればもんじゅのちえ ,りょうりのさしすせそ ,ちょうしょくはまいにちたべましょう ,ほっぷ、すてっぷ、じゃんぷ! ,ちかくかびん ,2378てとらくろろじべんぞぱらじおきしん ,さんごしょうのみえるうみ ,ざんねんでしかたがない ,あさめしまえ ,はんにんはやす ,やすこさん、あさごはんは? ,じゅうだいなえらーがはっせいしました。ただちにしゅうりょうしてください。

表示オプション

横に並べて表示:
変化行の前後のみ表示: