夕暮ログ

C#やJavascript、最近はAndroidなんかも好きなtinqのブログ。「夕暮れログ」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C#で英字タイピングソフトを作る

後日、GUIでのタイピングサンプルを作りました。一部タイピングクラスも修正されています。
こちらをご覧ください。

自己満足企画。タイピング
パソコンをやる人、特に字を多く打つプログラマーなどは、高速で字を打てるようになりたいものです。
そこで、タイピングゲームを使う、というのはよくあります。
私も、寿司打(すしだ)あたりでやっています。
そんなに早くないので、通常の10000円コースで、3000円ぐらいの儲けです。
秒5タイプぐらい。

で、私の記録などどうでもいいのですが、そんなタイピングゲームを自作してみたいと思います。
日本語にも対応させますが、結構面倒な処理が必要になるため、とりあえず英語版を作りました。
英語版は、かなり簡単にできます。

注意したことは、オブジェクト指向に従い、カプセル化することです。
これにより、コンソールアプリケーションで基本をつくり、そのクラスをそのままフォームアプリケーションへ。
そうすれば、苦労なく開発が行えます。コンソールアプリケーションのほうが、デバッグがかなり楽です。
また、たとえば将来、XNAやマネージドDirectXなどに開発を移し、本格的なタイピングゲームにすることとなった場合も、そのまま利用できます。



適当なので、うまく動かないかもしれませんが、参考までに。
簡単な仕様。
・SetQText関数で、問題を設定する。
・InputChar関数で、入力を行う。大文字小文字は問わない。
・InputCharでは、入力ミス=>Bad、入力が正しい=>Good、問題文の入力が完了=>Endを返す。
・QTextで問題文を、AlreadyInputで入力されたテキスト、RemainTextで残りのテキストを取得(英語が正しいかは聞かないで・・・)
以下プログラム。
enum InputResult
{
    Good,   //入力が正しい。
    Bad,    //ミス
    End     //入力がすべて完了した
}
class Typing
{
    string qtext;
    int location;

    public void SetQText(string text)
    {
        qtext = text;
        location = 0;
    }

    public InputResult InputChar(char c)
    {
        if (Char.ToUpper(qtext[location]) == Char.ToUpper(c))
        {
            location++;
            if (qtext.Length <= (location))
            {
                return InputResult.End;
            }
            return InputResult.Good;
        }
        else
            return InputResult.Bad;
    }

    public string AlreadyInput
    {
        get {
            return qtext.Substring(0,location);
        }
    }

    public string RemainText
    {
        get
        {
            return qtext.Substring(location);
        }
    }

    public string QText
    {
        get { return qtext; }
    }
}
コンソールの場合、SetQTextで問題を設定後、whileでループ。Console.ReadKeyで取得したcharをInputCharに渡して、それをEndがくるまで繰り返す。という感じ。


実は、もう日本語対応のものを作っています。 大体できたのですが、バグが多すぎて、1から作り直さねば・・・
関連記事

コメント

ここをクリックしてコメントを投稿

非公開コメント

トラックバック

http://tinqwill.blog59.fc2.com/tb.php/51-0bc8416b

« next  ホーム  prev »

プロフィール

tinq tinq(もしくはTinqWill)

Sky  For   Every 改装予定

プログラミングお勉強中の高校生。月一くらいは更新したい

最新記事

カテゴリ

月別アーカイブ

検索フォーム

最新コメント

リンク

最新トラックバック

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。