タイピングソフト重打ちのカスタマイズの方法

※なお、このスクリプトの著作権は、やまちゃりさんにあります。このスクリプトを修正して
 公開するのは自由ですが、その際は、著作者を明らかにしてください。また、edugame.com
 にもリンクをはっていただけるとうれしく思います。

ソースの強調している部分を、お持ちのエディタ、ワープロソフト、HTML作成ソフトなどでなおしてみてください。
ウィンドウズに付属のメモ帳でもかまいません。このままカット&ペーストして修正されてもけっこうです。
どんなソフトかためしてみたい方、ダウンロードして遊んでみたい方は、下記からどうぞ。
4年 ごんぎつね ・やまちゃりさんのオリジナル作品 ・まるごとダウンロード

太い字は、変更可能、赤い字は、解説
ファイル名なども変更可能ですが、画像ファイルの名前を変えた方がかんたんです。

edu-type.htmの中身
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0052)http://su.valley.ne.jp/~yamacha/UchiPack/Omouchi.htm -->
<HTML><HEAD><TITLE>重打ち!!Neo</TITLE>
<META http-equiv=Content-Type content="text/html; charset=shift_jis"><!--
(転籍の際に以下のコメント部分は、変更・削除等しないようにお願いします。)

ここで使われているソースコードは転籍自由です。
むしろたくさんの人の目に触れることを望みますので、遠慮なくどうぞ。
感想・質問・改善案・バグ報告等お待ちしております。

製作者 :やまちゃり
MAIL:yamacha@su.valley.ne.jp
HP  :おもくてごめん。
URL :http://su.valley.ne.jp/~yamacha/
-->
<SCRIPT language=JavaScript src="edu-type/WordData.js"></SCRIPT>//問題ファイル名と保存場所ト

<SCRIPT language=JavaScript>
<!--
var Running = false; //ゲーム中かどうか
var STime, CTime; //時間計測用変数
var P_Name, P_Time, T_Point, B_Point; //クッキー用

function Start(){
var flg;
P_Name = getCookie("PlayerName");
P_Time = getCookie("PlayTimes");
T_Point = getCookie("TotalPoint");
B_Point = getCookie("BestPoint");
if(P_Time == "")
P_Time = 0;
if(P_Name == "")
P_Name = "TEST PLAYER";
PlayerName.innerText = P_Name;
if(T_Point == "")
T_Point = 0;
if(B_Point == "")
B_Point = 0;
WriteRecord();
Reset();
}

function NameChange(){
flg = confirm("現在の名前を変更しますか?\n※変更すると今までの記録は消去されます。");
if(flg == true){
P_Name = prompt("名前を入れてください。\nクッキーに記録するので外部から読み取られることはありません。",P_Name);
P_Time = 0;
T_Point = 0;
B_Point = 0;
PlayerName.innerText = P_Name;
BestPoint.innerText = 0;
AvePoint.innerText = 0;
PlayTimes.innerText = 0;
};
}

function getCookie(keyname){
tmp = document.cookie + ";";
index1 = tmp.indexOf(keyname, 0);
if(index1 != -1){
tmp = tmp.substring(index1, tmp.length);
index2 = tmp.indexOf("=", 0) + 1;
index3 = tmp.indexOf(";",index2);
return(unescape(tmp.substring(index2, index3)));
}

return("");
}

function setCookie(keyname,val){
tmp = keyname + "=" + escape(val) + ";";
tmp += "expires=Thu, 31-Dec-2005 23:59:59;";
document.cookie = tmp;
}

function WriteRecord(){
setCookie("PlayerName",P_Name);
setCookie("PlayTimes",P_Time);
setCookie("BestPoint",B_Point);
setCookie("TotalPoint",T_Point);
PlayerName.innerText = P_Name;
if(P_Time != 0){
BestPoint.innerText = B_Point;
AvePoint.innerText = parseInt(T_Point / P_Time);
PlayTimes.innerText = P_Time;
};
}

function Reset(){
Running = false;
CTime = 60;
Time.innerText = "60.0 秒";
Point.innerText = 0;
PointC.innerText = 0;
TypeArea.innerText = "S";
JapArea.innerText = "「Sでゲーム開始」";

/**デバッグ用
t1 = isNaN(P_Name);
t2 = isNaN(P_Time);
t3 = isNaN(B_Point);
t4 = isNaN(T_Point)
alert(t1+"/"+t2+"/"+t3+"/"+t4+"*****"+document.cookie);
**/

}

function InputKey(){
var chara = String.fromCharCode(event.keyCode);
var l, r, t;

if(!Running){
if(event.keyCode == 83){
Running = true;
t = new Date();
STime = t.getTime();
TimeCount();
r = Math.floor(Math.random() * WordNum);
TypeArea.innerText = Word[r].R_word;
JapArea.innerText = Word[r].J_word;
}
}
else if((47 <= event.keyCode && event.keyCode <= 58) || (64 <= event.keyCode && event.keyCode <= 90)){ //数字とアルファベット以外は受け付けない
if(chara == TypeArea.innerText.charAt(0)){
PointC.innerText ++;
T_Point ++;
l = TypeArea.innerText.length;
if(l == 1){
Point.innerText ++;
r = Math.floor(Math.random() * WordNum);
TypeArea.innerText = Word[r].R_word;
JapArea.innerText = Word[r].J_word;
}
else
TypeArea.innerText = TypeArea.innerText.substr(1,l - 1);
}
}
}

function TimeCount(){ //時間計測部
var t, s, ms;
if(CTime > 0 && Running){
setTimeout("TimeCount()",100);
t = new Date();
CTime = 600 - Math.floor((t.getTime() - STime) / 100);
s = Math.floor(CTime / 10);
ms = Math.floor(CTime % 10);
Time.innerText = s + "." + ms + " 秒";
}
else{
Running = false;
Time.innerText = "0.0 秒";
ClearJudge();
}
}

function ClearJudge(){ //クリア後のコメント
var pf = "おわりです!!\nあなたのランクは、\n";//¥nは改行のマーク
P_Time ++;
if(parseInt(B_Point) < parseInt(PointC.innerText)){
B_Point = PointC.innerText;
alert("おめでとうございます。\n新記録です!");
}
WriteRecord();

if(PointC.innerText < 10) //得点に応じたメッセージ <10などの数字は回答数
alert(pf + "11級「はいはいクラス」です。\n\nもう一度チャレンジしよう!");
else if(PointC.innerText < 30)
alert(pf + "10級「一輪車クラス」です。\n\nまだまだですね。先は長いぞ!");
else if(PointC.innerText < 50)
alert(pf + "9級「三輪車クラス」です。\n\nなかなかやるねえ。でも、まだまだだね。");
else if(PointC.innerText < 70)
alert(pf + "8級「50M走クラス」です。\n\nうん、少しはできるようだな!");
else if(PointC.innerText < 90)
alert(pf + "7級「自転車クラス」です。\n\nうでが、あがってきたね。");
else if(PointC.innerText < 110)
alert(pf + "6級「原付スクータークラス」です。\n\nまあまあですね。1回目でこのくらい打てればすごいです。");
else if(PointC.innerText < 130)
alert(pf + "5級「250CCバイククラス」です。\n\nいいぞ!だいぶ速くなったようだ。");
else if(PointC.innerText < 150)
alert(pf + "4級「自動車クラス」です。\n\nお、けっこう打てるね。この調子!");
else if(PointC.innerText < 170)
alert(pf + "3級「新幹線クラス」です。\n\nやるねえ、かなりのうでまえです。");
else if(PointC.innerText < 190)
alert(pf + "2級「飛行機クラス」です。\n\nすごいねえ!ここまで打てる人はそうそういないよ。");
else if(PointC.innerText < 210)
alert(pf + "1級「スペースシャトルクラス」です。\n\n先生よりすごいんじゃないの?!");
else
alert(pf + "名人!「光クラス」です!!\nすばらしい!別の問題にチャレンジしてみよう!");
}

document.onkeydown = InputKey;
//-->
</SCRIPT>

<META content="Microsoft FrontPage 4.0" name=GENERATOR></HEAD>
<BODY bgProperties=fixed background=edu-type/MonoBack.gif onload=Start()>
<CENTER>
<TABLE border=3>
<TBODY>
<TR>
<TD 
style="FONT-WEIGHT: bold; COLOR: #ff8800; BACKGROUND-COLOR: #000000">名前:</TD>
<TD id=PlayerName 
style="FONT-WEIGHT: bold; COLOR: #ffffff; BACKGROUND-COLOR: #000000" 
colSpan=2>TEST PLAYER</TD> 
<TD 
style="FONT-WEIGHT: bold; COLOR: #ff8800; BACKGROUND-COLOR: #000000">最高記録:</TD>
<TD id=BestPoint 
style="FONT-WEIGHT: bold; COLOR: #ffffff; BACKGROUND-COLOR: #000000">0</TD>
<TD 
style="FONT-WEIGHT: bold; COLOR: #ff8800; BACKGROUND-COLOR: #000000">平均記録:</TD>
<TD id=AvePoint 
style="FONT-WEIGHT: bold; COLOR: #ffffff; BACKGROUND-COLOR: #000000">0</TD>
<TD 
style="FONT-WEIGHT: bold; COLOR: #ff8800; BACKGROUND-COLOR: #000000">プレイ回数:</TD>
<TD id=PlayTimes 
style="FONT-WEIGHT: bold; COLOR: #ffffff; BACKGROUND-COLOR: #000000">0</TD></TR></TBODY></TABLE> 
<TABLE cellSpacing=10 background=edu-type/Title.jpg border=3>
<TBODY>
<TR>
<TD style="WIDTH: 255px"></TD>
<TD 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; WIDTH: 120px; COLOR: #ff8800; BACKGROUND-COLOR: #000000" 
align=right>時間:</TD>
<TD id=Time 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; WIDTH: 105px; COLOR: #ff8800; BACKGROUND-COLOR: #000000"></TD></TR>
<TR>
<TD></TD>
<TD 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; COLOR: #ff8800; BACKGROUND-COLOR: #000000" 
align=right>文章数:</TD>
<TD id=Point 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; COLOR: #ff8800; BACKGROUND-COLOR: #000000"></TD></TR>
<TR>
<TD></TD>
<TD 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; COLOR: #ff8800; BACKGROUND-COLOR: #000000" 
align=right>文字数:</TD>
<TD id=PointC 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; COLOR: #ff8800; BACKGROUND-COLOR: #000000"></TD></TR>
<TR>
<TD id=JapArea 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; WIDTH: 500px; COLOR: #ffffff; HEIGHT: 30px; BACKGROUND-COLOR: #000000" 
colSpan=3></TD></TR>
<TR>
<TD id=TypeArea 
style="FONT-WEIGHT: bold; FONT-SIZE: 28px; WIDTH: 500px; COLOR: #ffffff; HEIGHT: 30px; BACKGROUND-COLOR: #000000" 
colSpan=3></TD></TR></TBODY></TABLE>
<FORM><INPUT onclick=if(!Running){Reset();} type=button value=リセット> <INPUT onclick=if(!Running){NameChange();} type=button value=名前変更><BR></FORM>
<TABLE>
<TBODY>
<TR>
<TH><FONT color=#365371 size=+2>遊び方</FONT></TH></TR>
<TR>
<TD><FONT 
color=#365371>・タイピングゲームです。・<b>[S]キー</b>でゲームが始まり時間がカウントダウンされていきます。<BR>・あとは表示されるとおりにひたすらキーを叩いていってください。<BR>・アルファベットと数字(テンキー不可)以外使えません。・特に<B>[Back 
Spase]キーは押さないで下さい。</B><BR>
・[リセット]ボタンを押すと最初からやり直すことができます。
<BR>・最初に<b>[名前変更]ボタン</b>を押して、プレイヤーの名前を変更しましょう。
<BR>・<B>[リセット][名前変更]ボタンはゲーム中には使えません。</B>
<BR>・<B>名前と記録はクッキーに記憶されます。</B>
<BR>・したがって、次回からは変更した名前・記録から始まります。・また、名前等は外部から読み取られることはありません。
<BR>・<B>オフラインでも遊べます。</B>・電話代等がかかっている人は接続を切ってから遊ぶことをおすすめします。</FONT></TD></TR></TBODY></TABLE></CENTER></BODY></HTML>


WordData.jsの中身(別の名前.jsにしても可)
var WordNum = 25; //単語数 0から始めているので最後のWord[ ]の数字+1になります
var Word = new Array(WordNum);
for(i = 0; i <= WordNum - 1; i ++)
Word[i] = new WordData;

function WordData(){ //表示データのオブジェクト
this.J_word;
this.R_word;
}

//表示データ
Word[0].J_word = "辺りの村へ出てきて";//打つ日本語を入力します
Word[0].R_word = "ATARINOMURAHEDETEKITE";//半角大文字で入力
Word[1].J_word = "百しょう家のうら手に";
Word[1].R_word = "HILYAKUSILYOUYANOURATENI";//小さい「ゃ」などの打ち方に注意!
Word[2].J_word = "円いはぎの葉が一まい";
Word[2].R_word = "MARUIHAGINOHAGAITIMAI";
Word[3].J_word = "ふみ折られていました";
Word[3].R_word = "HUMIORARETEIMASITA";
Word[4].J_word = "いわしのかごを積んだ車";
Word[4].R_word = "IWASINOKAGOWOTUNNDAKURUMA";
Word[5].J_word = "連れだって吉兵衛のうちへ";
Word[5].R_word = "TUREDALTUTEKITIBEENOUTIHE";
Word[6].J_word = "ごんはばたりとたおれました";
Word[6].R_word = "GONNHABATARITOTAOREMASITA";
Word[7].J_word = "兵十は火なわじゅうを";
Word[7].R_word = "HILYOUJILYUUHAHINAWAJILYUUWO";
Word[8].J_word = "いたずらをしなけりゃよかった";
Word[8].R_word = "ITAZURAWOSINAKERILYAYOKALTUTA";
Word[9].J_word = "ぐったりと目をつぶったまま";
Word[9].R_word = "GULTUTARITOMEWOTUBULTUTAMAMA";
Word[10].J_word = "いたずらばかりしました";
Word[10].R_word = "ITAZURABAKARISIMASITA";
Word[11].J_word = "つるしてあるとんがらし";
Word[11].R_word = "TURUSITEARUTONGARASI";
Word[12].J_word = "ばたりととり落としました";
Word[12].R_word = "BATARITOTORIOTOSIMASITA";
Word[13].J_word = "ごんをドンとうちました";
Word[13].R_word = "GONNWODONNTOUTIMASITA";
Word[14].J_word = "ひとりぼっちの小ぎつね";
Word[14].R_word = "HITORIBOLTUTINOKOGITUNE";
Word[15].J_word = "ある秋のことでした";
Word[15].R_word = "ARUAKINOKOTODESITA";
Word[16].J_word = "兵十だな";
Word[16].R_word = "HILYOUJILYUUDANA";
Word[17].J_word = "うわあぬすとぎつねめ";
Word[17].R_word = "UWAANUSUTOGITUNEME";
Word[18].J_word = "おれと同じひとりぼっち";
Word[19].R_word = "ORETOONAJIHITORIBOLTUTI";
Word[19].J_word = "月のいいばんでした";
Word[19].R_word = "TUKINOIIBANNDESITA";
Word[20].J_word = "おれはひきあわないなあ";
Word[20].R_word = "OREHAHIKIAWANAINAA";
Word[21].J_word = "そりゃあ神様のしわざだぞ";
Word[21].R_word = "SORILYAAKAMISAMANOSIWAZADAZO";
Word[22].J_word = "かけよってきました";
Word[22].R_word = "KAKEYOLTUTEKIMASITA";
Word[23].J_word = "ごんおまえだったのか";
Word[23].R_word = "GONNOMAEDALTUTANOKA";
Word[24].J_word = "つつ口から細く出ていました";
Word[24].R_word = "TUTUGUTIKARAHOSOKUDETEIMASITA";//問題の追加も可能です

学習ゲーム館へ       TOPへ