SdCタイピング+/仕様書

 『SdCタイピング+』の仕様書です。ウェブスペースに設置するときに参照してください。また、『SdCタイピング+/設置手順』も併せてお読み下さい。

※SdCクイズ+はこれに酷似した仕様になっています。

目次

  1. 設定ファイル記述
    1. DATA
    2. STAGE
    3. EVENT
    4. LOAD
    5. DISCARD
    6. //
  2. ソース記述
    1. LOADLIST
    2. CAPS
    3. ROMAN
    4. MENU
    5. MENUPICTURE
    6. TITLE
    7. COLOR
    8. REQUEST
    9. TEST

設定ファイル記述

 設定ファイルはテキストファイルとして編集します。行ごとに“命令”を書いていく、スクリプトのようなものと考えて差し支えありませんが、記述方式は HTML/XHTML と似たものを採用しています。
 なお、設定ファイルについては自由に公開して構いません。配布する場合は、拡張子を ".stp" に統一しておくことをお薦めします。

 本プログラムが認識する命令、制御ワードは、以下の6通りです。また、各種パラメータ(属性名 param と属性値 value の組)が重要な役割を果たします。これらを組み合わせて設定ファイルを書き込んでいきます。

DATA
問題文を蓄積します。キー入力文と画面出力文のセットをタブ文字で区切って記述します。
STAGE
蓄積された問題文からタイピング問題を出題します。パラメータによって時間制限などを設定できます。
EVENT
パラメータで指定したメッセージや画像を出力したりします。ゲームに効果を入れるときに使います。
LOAD
別の設定ファイルを読み込み、その内容を該当箇所に挿入します。
DISCARD
蓄積されている問題文を破棄します。ジャンルを切り替えるときなどに使います。
//
コメントで、プログラムからは無視されます。設定ファイルにメモをつけるためのものです。

 制御ワードは各行の先頭に記述します。後続の文字を入れる前に半角スペースを挿入しましょう。(なお、制御ワードおよび属性名は大文字・小文字を区別しません。)そして、1つの制御ワードに関する記述が終わったら、必ず改行を入れて下さい。
 プログラムは設定ファイルを順に読み込んで実行すると考えてよいです。以下、各制御ワードの機能と記述方法について説明していきます。

DATA

 問題文を蓄積します。(蓄積するだけであって、タイピングがはじまるわけではありません。)

キー入力文 [Tab] 画面出力文

 上記のように、行ごとで、左側にキー入力を行う文、右側に画面に出力する文を、タブ文字 [Tab] で区切って指定します。("[Tab]" と入力するわけではありませんから注意してください。)
 なお、問題文は画面横幅に対応して自動で折り返されますが、それでも収まりきらない部分はカットされます。

※ 行頭に制御ワード+半角スペース "DATA " を書いてもよいのですが、省略できるのです。

キー入力文

 ひらがな・カタカナ・ほとんどの全角記号(※)、半角英数字記号が記述できます。

※ 以下の記号 ー=〜_|「」{}<>+−*/;:、。,.・?!“”‘’^`&#¥$%@

 ひらがな・カタカナを指定した部分は、ローマ字入力とみなされ、大文字小文字の区別がなくなり、また、キーコンフィグを自動認識するようになります。(例えば、「しゃ」を「sya」「sha」「SYA」「SHA」他で認識するなど。)なお、キーコンフィグは MS-IME に準拠させました。さらに全角記号は半角記号に変換されます。

 半角英数字を指定した部分は、英字入力とみなされ、大文字小文字の区別を行い、また、キーコンフィグが無効になります。(例えば、"Chiba city" は "cHIBA CITY" や "Tiba city" にはなりません。)

 ただし、アプレットに渡すパラメータ ROMAN が "false" ですと上記のような変換は行われず、キー入力文通りの入力を要求します。

※ ROMAN="false" のときに含まれるキー入力文の中の漢字なども同様です。

画面出力文

 キー入力とは完全に独立して記述できます。
 ただし、カタカナ語や英語など、キー入力文と全く同じでよい場合は省略できます。つまり、次の2つの DATA は全く同じです。

スターダストクラウン [Tab] スターダストクラウン
スターダストクラウン

※ ローマ字入力モード(ROMAN="true")で一字でも漢字などが含まれていれば再入力が必要になります。

STAGE

 蓄積された DATA から、指定された方式で問題を取り出し、出題します。
(なお、蓄積 DATA が存在していて、かつ一度も STAGE が現れずに設定ファイルが終了した場合、プログラムが自動挿入しますので、極端な話、問題文を羅列するだけで設定ファイルは完成します。)

STAGE param1="value1" param2="value2" ......

 上記のように、"STAGE" のあと、パラメータ(属性名と属性値のセット)を半角スペースで区切って指定していきます。属性値は二重引用符 " で囲み、属性名と等号 = で結ぶようにしてください。
 以下、パラメータと値について説明していきます。全部で13個ありますが、各パラメータには既定値が設定されているので、すべて省略可能です。また、好きな順序で指定して構いません。

※すべて省略し "STAGE" だけを指定することもできます。(各項目は規定値になります。)

NUMBER

 出題する問題数を整数で指定します。負の数(例:"-1")を指定すると蓄積されている DATA の数と同じだけ(つまりすべて)出題し、"0" を指定すると、蓄積数の約25%を出題します。大きな数を指定しても、蓄積されている DATA が尽きれば STAGE は終了します。
 はじめの既定値は "0" ですが、直前の指定が既定値になります。

SEQUENCE

 蓄積されている DATA が順序づけられているものかどうかを指定します。"true" だと指定した順に問題文を読み込み、"false" だとランダムな順序で読み込みます。
 はじめの既定値は "false" ですが、直前の指定が既定値になります。

USEONCE

 一度出題した問題を破棄するかどうかを指定します。"true" だと同じ問題は(同じゲームの巡においては)繰り返し出題されません。"false" だと同じ問題が繰り返し選ばれることがあります。
 "false" の場合、使用された問題文は、蓄積 DATA の末尾に再び付け加えられます。(したがって、SEQUENCE="true" であっても、同一の問題文をリピートするわけではありません。)また、USEONCE を "false" にしている場合、NUMBER で DATA 以上の数を指定しても規定回数の出題が為されることになります。
 はじめの既定値は "true" ですが、直前の指定が既定値になります。

WAIT

 問題文と問題文の間隔(一つの問題文を完成させた後、次の問題までの時間)を整数で指定します。負の数(例:"-1")だとキーボード入力などがもう一度あるまで休止します。"0" だと直ちに次の問題に移ります。それ以外は、指定されたミリ秒(たとえば "1000" で一秒)が経過するか、あるいはキーボードからの入力などがあるまで休止します。
 はじめの既定値は "-1" ですが、直前の指定が既定値になります。

LIFE

 プレイヤーの LIFE を正の整数で指定します。ゼロ以下の整数は無効です。
 アプレット起動時に、自動的に LIFE="60" が割り振られていますが、この LIFE が 0 以下になるとゲームオーバーということになります。
 ただし、LIFE が 0 以下であっても、その後に、LIFE を正の値に指定する STAGE があればコンティニューできます。(EVENT の GAMEOVER の説明も参照してください。)
 既定値はなし(それまでの LIFE を引き継ぎます)で、一度指定してもその値は既定値になりません。

LIFEPLUS

 プレイヤーの LIFE を増減させる値を整数で指定します。正の値で増加、負の値で減少です。
 既定値は "0" で、一度指定してもその値は既定値になりません。

MISS

 キータイプを一度ミスしたときに減少させる LIFE の量を整数で指定します。"0" であればミスをしても LIFE は減少しません。負の数(例:"-1")ですと、一度でもミスすれば、直ちに LIFE がゼロになります。
 既定値は "0" ですが、直前の指定が既定値になります。

TIMELIMIT

 時間制限を指定します。秒数を表す整数または "auto" で指定します。"0" であれば、最初から時間制限をオーバーしていることになります。(後述の TIMEOUT と組み合わせると、タイムトライアルモードが実現できます。)負の数(例:"-1")であれば、時間制限はなしです。
 "auto" の場合、後述の SPEED を基準に、キー入力文の文字数に応じて問題文ごとに秒数が決まります。
 負の数でない値を指定する場合、後述の TIMEOUT と組み合わせて意味を持ちます。
 既定値は "-1" ですが、直前の指定が既定値になります。

SPEED

 TIMELIMIT="auto" の場合のみ有効です。
 要求する打鍵速度(一分あたりのタイプ数、HIT/MINUTE)を整数で指定します。負の数や "0" は TIMELIMIT のそれと同じ意味になります。なお、ひらがな・カタカナは一文字あたり2回のキータイプが必要なものとして計算します。
 既定値は "180" ですが、直前の指定が既定値になります。

※ 60÷SPEED で1文字あたりの所要時間を計算できます。(例えば SPEED="180" の場合、1キータイプあたり約 0.33 秒に相当する速度になるわけです。)したがって、60÷SPEED×文字数 が制限時間(秒)に設定されます。

TIMEOUT

 TIMELIMIT が負でない場合のみ有効です。
 時間制限をオーバーしたときに、一秒ごとに減少させる LIFE の量を整数で指定します。"0" であれば時間制限を超過しても LIFE は減少しません。"-1" ですと、時間制限をオーバーした途端に、直ちに LIFE がゼロになります。
 既定値は "1" ですが、直前の指定が既定値になります。

GUIDE

 キー入力文を表示するかどうかを指定します。
 "true" なら、キー入力文(を英数字に変換したもの)が画面に出力され、次に入力すべき文字が強調表示されます。(キーコンフィグによって途中で変わることもありますが。)
 "false" なら、ユーザの入力した部分のみが表示されます。(例えば英字入力で使用してもよいでしょうし、クイズなどにも応用できるかもしれません。)
 既定値は "true" ですが、直前の指定が既定値になります。

BACKSPACE

 入力ミスをバックスペースで修正しなければならないかどうかを指定します。
 "false" なら、打ち間違えても次に正しい入力をすれば先に進めます。しかし、"true" なら、打ち間違えた数だけ [Back Space] で入力を取り消さなければなりません。(ちなみに、この [Back Space] はタイプ数にはカウントしません。)
 なお、実際とは異なり、いずれの場合も既に入力した正しいタイプが取り消されることはありません。
 既定値は "false" ですが、直前の指定が既定値になります。

RESULT

 中間結果を表示するかどうかを指定します。
 "true" なら、該当 STAGE が終了するか、あるいはゲームオーバーになったところで、タイプ数、ミス数、打鍵成功率、正打鍵分速などの中間結果が表示されます。(そしていったん、中間成績はクリアされます。)"false" なら、成績表示はありません。(該当する STAGE の成績は次の STAGE に引き継がれます。)
 いずれの場合でも、すべての STAGE や EVENT が終わった後に、最終総合結果が表示されます。
 既定値は "true" ですが、直前の指定が既定値になります。

EVENT

 指定されたイベント(メッセージや画像の表示など)を起こします。

EVENT param1="value1" param2="value2" ......

 上記のように、"EVENT" のあと、パラメータ(属性名と属性値のセット)を半角スペースで区切って指定していきます。属性値は二重引用符 " で囲み、属性名と等号 = で結ぶようにしてください。
 以下、パラメータと値について説明していきます。全部で7個ありますが、各パラメータには既定値が設定されているので、すべて省略可能です。また、好きな順序で指定して構いません。

※すべて省略し "EVENT" だけを指定することもできます。(各項目は規定値になります。)

MESSAGE

 画面に文字列を表示します。表示したい文字列を指定してください。
 "\n"(円記号またはバックスラッシュ + n )を挿入しておけばその位置で強制改行します。また、改行記号が一つもない場合に限り、文字列が画面横幅よりも長いときに自動的な折り返しが行われます。
 文字列は基本的にセンタリングされますが、冒頭に "BOTTOM:" を記述すると画面下側に配置されます。画面上側に配置するためには "TOP:" を記述します。さらに、冒頭に "LARGE:" を記述すると、フォントサイズが大きくなります。( "BOTTOM:LARGE:" の順序はどちらでも構いません。)
 既定値は ""(何も表示しない)で、一度指定してもその値は既定値になりません。

WAIT

 待機時間をミリ秒で指定します。"-1" なら、ユーザのキータイプなどがあるまで待ちます。"0" なら直ちに EVENT を終了します。1 以上なら、指定されたミリ秒が経過するか、ユーザのキータイプなどがあるまで待ちます。
 既定値は "-1" ですが、直前の指定が既定値になります。

COLOR

 指定したカラーで画面を一度クリアします。塗りつぶしたい色を #rrggbb の形式で指定してください。
 既定値は“塗りつぶしなし”で、一度指定してもその値は規定値になりませんが、描画された結果は引き継がれます。

PICTURE

 画面に背景画像を表示します。表示したい画像(GIF 形式または JPEG 形式が無難)を、呼び出し元設定ファイルからの相対アドレスで指定します。
 画像がアプレット領域よりも小さい場合はセンタリングし、大きい場合は左上を優先して描画します。また、画像はそれまでの画面に重ねて描画されます。
 既定値は ""(何も表示しない)で、一度指定してもその値は既定値になりませんが、描画された結果は引き継がれます。

EFFECT

 MESSAGE または COLOR または PICTURE が有効なときのみ意味を持ちます。"true" なら、画面が切り替わるときにエフェクトがあります。"false" なら瞬間的に切り替えます。
 既定値は "true" ですが、直前の指定が既定値になります。

GAMEOVER

 ゲームオーバー時に有効になる EVENT かどうかを指定します。
 通常、LIFE がゼロ以下になってゲームオーバーになると、最終結果を表示するまで、以降の EVENT や STAGE はすべてスキップしますが、GAMEOVER="true" であるはじめの EVENT は表示します。(STAGE の LIFE および次項 EXIT の説明も参照してください。)
 逆に、GAMEOVER="true" の EVENT は LIFE が正のときにはスキップされます。ゲームオーバー時に特別な演出をしたいときに利用してください。
 "false" なら、ゲームオーバー時にはスキップされます。
 既定値は "false" で、一度指定してもその値は規定値になりません。

EXIT

 GAMEOVER="true" のときのみ有効です。
 ゲームオーバー時にその EVENT だけで終了させるかどうかを指定します。
 通常、LIFE がゼロ以下になったとき、ゲームオーバー後に存在するはじめの EVENT GAMEOVER="true" のみが有効になります。しかし、EXIT="false" を指定しておくと、その次の EVENT GAMEOVER="true" も有効になります。(なお、 EXIT="false" の指定は何度でもできます。)
 "true" なら、ゲームオーバー時に読み込まれた場合、その EVENT 以降は GAMEOVER および EXIT の値に関わらずスキップされます。
 既定値は "true" で、一度指定してもその値は規定値になりません。

LOAD

 別の設定ファイルを読み込み、元の設定ファイルの LOAD が記述されていた位置に、その内容を挿入します。

LOAD "FILENAME"

 "LOAD" の後に、半角スペース1つ空けて、設定ファイルを、呼び出し元設定ファイルからの相対アドレスで指定してください。ファイル名は二重引用符 " で囲まなければなりません。

 例えば、問題文だけの設定ファイルを作りたい場合、繰り返し同じ EVENT などを挿入したい場合に利用できるでしょう。

※ 設定ファイルの再帰的な LOAD はしないでください。

DISCARD

 蓄積された問題文をすべて破棄します。(蓄積はゼロになります。)問題のジャンルを完全に入れ替えたいときなどに利用してください。
 なお、ゲームの開始時には自動的に実行されますから、DATA の後にのみ入れれば十分です。

DISCARD

 DISCARD は上記のように単独で作用します。(パラメータの裏設定もあるのですが、まあ必要ないでしょう。)

//

 メモなどを記述するときに指定してください。

// コメント文

ソース記述

 下記のサンプルソースを適切に書き換えます。( [ ] 内および value="" の " " 内が設定対象です。)基本的に半角英数で、正確に記入してください。(コピーしてもよいでしょう。)また、param の name 属性値は大文字を使用します。

<p>
<applet archive="Typing.zip" code="Typing/Typing.class" width="[WIDTH]" height="[HEIGHT]">
<param name="LOAD" value="[LOAD LIST]">
<!-- 以下、省略可能なオプション -->
<param name="CAPS" value="false">
<param name="ROMAN" value="true">
<param name="MENU" value="[MENU LIST]">
<param name="MENUPICTURE" value="[MENUPICTURE]">
<param name="TITLE" value="[TITLE]">
<param name="COLOR" value="#404040">
<param name="REQUEST" value="false">
<param name="TEST" value="false">
<!-- 以上、省略可能なオプション -->
Java アプレットの実行が有効な環境では [TITLE] をプレイすることができます。
</applet>
</p>
<p><cite>
アプレット配布元:<a href="http://stardustcrown.com/">Stardust Crown</a>(著作:永施 誠)
</cite></p>

※HTML4.01 Transitional または同 Frameset における記述例です。

applet 要素

 もしも、アプレットを設置する HTML 文書と Typing.zip ファイルが異なる階層にあるなら、applet を次のように変更してください。

<applet codebase="[URL]" archive="Typing.zip" code="Typing/Typing.class" width="[WIDTH]" height="[HEIGHT]">

 [URL] は HTML 文書から見た Typing.zip の属する階層の相対アドレスに書き換えます。

WIDTH および HEIGHT

 アプレットのサイズを指定します。全ステージを通して一定ですので、用意した画像や問題文の長さなどに即して決めた方がよいと思われます。

LOAD

 アプレットの動作を決める設定ファイルを、設置 HTML 文書からの相対アドレスで指定します。複数の設定ファイルを ";" (セミコロン)で区切って指定することもできます。
 設定ファイルの数は、10以下で、かつ MENU が画面に収まりきる範囲内でなければなりません。

例:

<param name="LOAD" value="mode1.stp;mode2.stp">

 上記の例では、アプレット起動時に、ユーザが "mode1.stp" によるものか、"mode2.stp" によるものか、いずれかのモードを選択することになります。

オプション

 また、オプション用のパラメータ( param )も用意されています。これらはいずれも省略可能です。

CAPS

 ローマ字表示の大文字/小文字を指定します。
 "true" を設定するとローマ字を指定するアルファベットが大文字になります。(例:「ほし→HOSI」)"false" を設定するとローマ字指定のアルファベットは小文字です。(例:「ほし→hosi」)
 省略すると "false" とみなされます。

ROMAN

 キー入力モードを指定します。
 "true" を設定するとローマ字入力モードで起動し、キー入力文のうち、ひらがな・カタカナはローマ字に、全角記号類は半角記号に置換されます。普通はキーボードからの入力をダイレクトで読み取ることになるでしょう。
 "false" を設定するとローマ字入力モードは解除され、キー入力文のひらがな・カタカナをローマ字に変換しません。例えば「あ」でしたら、「a」ではなく、本当に「あ」を入力しなければなりません。日本語をそのまま認識させたいときなどに利用してください。
 省略すると "true" とみなされます。

 LOAD で複数の設定ファイルを指定しているときのみ有効です。
 はじめのモード選択で、各設定ファイルに対応するメニュー項目を指定します。説明文などを ";"(セミコロン)で区切ってください。ちなみに、メニュー番号は自動で割り振られるので必要ありません。
 設定ファイルの数に対して多い分は無視され、不足している分は設定ファイル名で補完されます。ただし、後述の MENUPICTURE が有効な場合、補完はありません。(例えば画像でメニュー項目を表示するときなどに利用してください。)
 "BOTTOM:"、"LARGE:" といった指定で位置やフォントサイズを変更できます。仕組みはEVENT の MESSAGEと同じです。
 省略すると "" (指定なし)とみなされます。

 LOAD で複数の設定ファイルを指定しているときのみ有効です。
 はじめのモード選択のときに表示する画像ファイルを、設置 HTML 文書からの相対アドレスで指定します。
 省略すると "" (指定なし)とみなされます。

TITLE

 ゲームのタイトルを指定します。
 省略すると "SdC TYPING plus" になります。

COLOR

 初期の背景色を指定します。これは、ウェブなどにおけるカラー指定と同じく "#rrggbb" の形式にしてください。("red" や "blue" などの表記、省略形は認識しません。)
 省略すると "#404040"(ダークグレー)になります。

REQUEST

 アプレット起動時にフォーカスを要求するかどうかを指定します。
 一般に、起動時にはプログラム側にフォーカスがないため、いったんアプレット領域をクリックするなどしないとキータイプを認識してくれません。このパラメータを "true" に設定することで、すぐにキータイプを認識するようになります。
 しかしながら、逆にブラウザのフォーカスは奪われるので、たとえばキーボードで操作していたユーザは戸惑うかもしれません。メリットとデメリットを十分に吟味して設定しましょう。
 省略すると "false" とみなされます。

TEST

 テストモードを指定します。"true" なら全てのタイピングが最初から打ち込み済みになり、ステージをすぐにクリアできます。(動作検証時に利用してください。)
 省略すると "false" とみなされます。

著作・制作/永施 誠
e-mail; webmaster@stardustcrown.com