60秒間の文字数を競う方式 ⇒ 一定打鍵数の時間(速度)を競う方式 へ 変換中

030511

一秒間ごとの打鍵数を1打鍵ごとの時間への変数がえを行ってる最中。ファイルが存在しない、変数が存在しないなど色々な警告がでてきた。ここまで作っての基盤を変えるのは大変だな。もっと速くやっておけばよかった。不正処理なんかにも引っかかって頭痛い。とりあえず文字数10でやってるとこ。打鍵数は回数によって変化するのでX軸は打鍵数で割らないといけない。あとオブジェクトなんかも今後のためにやめてライン方式にする予定



030512
●ラベルを消した。これからLineコントロールでやろうと思ったが、Form_LoadではLineコントロールは使えないようだ。タイマーで0.1秒後にLineを使ってやろうと思ったがやっぱり時間が0.8ぐらいはかかってしまうためだめだな。ということでこれまでどうりオブジェクトのLineでやるっきゃないようだ。自作モードの兼ね合いから10000打鍵分ぐらい用意しておかないといけないだろうか・・・。

下の図は青い線は秒/打鍵の関係線です。最後の奴がちょっとはみ出て困ってる



030512
タイムから順位を決めて、とりあえず打鍵でX軸を割ってみた。青は秒/打鍵、灰色は蓄積時間/打鍵である。一番最初のX軸をどうしようか迷っている。今のところX軸を0にしている。最低秒/打鍵はほとんど初速になるだろうから、後が見にくい可能性もでてくる。ということで2打鍵目から測定した方がいいかな?




030514
100文字でやって見た。打鍵数は150ぐらい。青ラインはこんな感じになる。問題点として①初速がほぼ最低秒/打になる。②最高秒/打が0.009ってなって打鍵/秒でいうと6666打鍵/秒になる。③このまま区間分け時間を表示すると速いほどY軸が低くなるの3つ。3番目の問題点は秒を打鍵数/秒に変換させてやろうかな。その方が速く打ったって感じになると思う。↓


秒/打鍵を一つ前の打鍵との平均にしてみた。少し丸くなった。初速は0打鍵目の「0」と「初速」との平均なので少し高めになってますね。普段0.7ぐらいなんで大体半分の0.35って表示されてる。↓

今度は前2つとの平均で出して見た。かなり丸いです。初速は簡単に修正。↓


今度は前3つでやった。ちょっと速めで安定させて打って見た。初速がじゃまだな。後が見づらい。↓


初速を消して見た。やっぱりこの方が見やすい↓


思い切って前の19個との平均(全部で20個の平均)でやって見た。最速と最低速がかなり平均化された速度になっている↓


030515
平均値(オレンジ)をいれた。あと、なんだかんだでやっぱり本来のタイムは必要となると思う(例えば区間タイムやリプレイなどではこれが必要)。緑線が本来のタイム、「パッと見」まったく違う線のように見えるのはなぜだろう。でも緑の線から計算して青い線を出しているだけあって緑線が急激に下がったときは青い線も下がっていることが良く分かる。


本来のタイムの最初の1打鍵目と2打鍵目を初速の関係から削除した。あと区間時間を入れてみたが全然ダメ。頭抱えているのは打鍵は可変すること前提で、それを6等分すること。例えば120打鍵だったら20打ごとに分ける。しかし125打鍵だった場合、20、21、21、21、21、21に分けなければならない。もし、20、20、20、20、20、25。で良いなら簡単にできるんだがそうもいかない。変数4個ぐらい使えば出来なくもないが、もっといい方法ないかなぁと画策中。


030517
何とか前回言っていた奴は解決できた。下の打鍵でいくと(25,24,24,24,24,24)で合計が145打鍵となっている事が分かる。あと一番最初の打鍵からの平均を出した線がオレンジの折れ線なのだが最終的には平均値の濃いオレンジの値と重なっていることが分かる。必要性は疑問だがとりあえず付け加えることとする。このとき最低速度より低い場合がでてきたがそれは削除している。初速から速度が上がるまではもちろんだが、19打鍵ぐらいかな?折れ線が消えているがこれは途中で最低速度を下回ったためである。あと、灰色の総打鍵の1/6を区切る線を正しい位置に合わせた。最終的にはこの6種類の線で行く予定だが、うーん初見ではごちゃごちゃし過ぎてかなり理解しずらいだろうな。



030519
赤色のラインを区間時間の蓄積からトップを速度としたグラフにして見た。上のグラフから約3時間はかかっている。かなりパニクリました。まず区間内の最小タイムを計測しそれを打鍵速度に変える。下の図では77打鍵の区間が最大速度となっている。ここの計算式はまず52から77までの打鍵ごとにforでくくる。で打鍵をiとし、そのときの時間をbyou(i)とすると。i/(77打-52打)*分間60秒*(i/byou(i))/((77-52)/2.521)となり、まとめるとi^2/byou(i)/2.521/(72-52)*60となる。もちろん0では割れないので最初の奴は飛ばすことになる。なんか今回のでごちゃごちゃしたプログラムになったから、整理しないとなぁ。



030523
下のラベルを打鍵/秒に変えた



030526
どうも順位が上手くいっていなかったようで修正。下の図は修正後。


不正チェックにどうもひっかっかってしまうためチェック中。うーむわからん。



030527
成績画面をスタイリッシュに。今回はいつもの4倍の400文字(612打鍵)打って見た。緑線がうざったいと不評の声があがりそう


030601
成績画面で打ち終わった平仮名と漢字を表示するようにした。↓
.

速度を表示させた。↓



MIDを使用し複数フォームが出ていたのを解消。

打鍵速度グラフの不正チェックを修正。

成績一覧からのグラフを書き直しているところ↓他の順位に動かすと最後の方の線と最初の方の線(オレンジ線)が図のように重なってしまう。


上のグラフのミス修正

パスワード設定の不正チェック修正。

タイトル画面を変更.

アイコンを作り変え


030602
全成績一覧、実績一覧の不正チェック修正。
日本語単語は大体完了したんで、ほかのを試しに打つと不正画面が出た!かなりビックリ。この修正が一番頭が痛いんだよな。地味だしね。↓


↑どうやら新しく追加したタイムの配列の変数が初期化されていなかったようだ。前にも同じようなことがあったんですばやく修正できた。前はこのチェックに3日はかかったんだよな。フォームは消しても中の変数のデータは消えないってこと良く覚えとこ。


030603
グラフの詳細なデータをマウスで表示できるようにした。↓(夢中でやって4時間かかった。)「成績後のグラフと成績一覧からの見れるグラフ」同じグラフが2つあるから大変だ。あといろいろなラベルを修正。


他項目順位のところを修正&「最高/最低打/分」を追加↓


030604
グラフの速度をまとめて表示↓


速度の(打/分)と(秒/打)が切り替え可能に↓


速度の切り替えを全一覧の方にも導入↓


各折線に「●」ラベルを追加↓(高校の頃、ポケコンで方程式のグラフをこんな風に表示させて●つけたこと思いだしたなぁ~)


030605
プレイゲーム画面と成績画面の間の時間を超短縮(Me.Enable=ture/falseを無くす)


030606
レベルを修正↓十級~一級、H級~S級・・・・


速度グラフを作成する時の不正チェックの修正を強いられている。引っかからないときもあれば引っかかるときもある。今日ずっとやったが未解決。↓


030607
先日の問題↑・・・不正チェックナンバーはある数を足して文字変換をさせているのだが、ある数を足している時点で少数点第三位の数字が何故か紛れ込んでしまったのが原因らしい。とりあえず、少数以下を切れば済みそう。なので何故入ってしまったのかまで調べないでいいだろう・・・

履歴の保存形式を変更↓
元プログラム
open "allrireki.txt" for output as #1
    for i=1 to hit
      print #1 , allrireki(i)
    next i
close


修正プログラム
open "allrireki.txt" for append as #1
    print #1 , rireki
close


読み込みもしなくていいので、かなり時間短縮が出来ただろう。


030608
履歴を追加。速度ラベルで(秒/打)=(打/分)を切り替え可能に。これで自分の成長過程が分かる↓

新しく記録された順になるように回数を逆にして見た↓


履歴のグラフを作成。自作ワードで文字数変化によるランキングのエラーが出ないように文字速度でランキングを競う形に変えようかと思う。↓


分速文字数を競う形にした。↓


030609
パスワード設定を修正。タイムで考えると難しいけど。速度で考えると簡単に修正できるんだね~。簡単すぎて気分いいぜ!!


030610
更新時の情報を記載するようにした。また更新時だけを結ぶ線を入れた。10万回更新しても大丈夫なようにプログラミングした。↓


030612
グラフを縮めて成長情報を入れる。更新時の加速文字も追加↓

1打ごとの成長速度=(平均更新文字速度+平均更新加速文字)/平均更新間打切回数
更新予定打切回数=前回の更新時の打切回数+平均更新間打切回数

とこのように計算したが、やっぱり更新予定打切回数には加速更新間打切回数を足した方が良さそうだ。悩みは下の表に入れるスペースが無いこと。打鍵数消すか!?まだまだ成長情報はプラスする予定。


030614
更新表の打鍵数を消して前打切回数差というものを追加した。これは更新時、今の更新間打切回数から前の更新間打切回数を引いたもの。これで更新するたびに更新する打切回数が大きくなることを表現できそうだが、実はまだ悩んでいる。パーセンテージであらわした方が良いのか悪いのか?ってことで、とりあえず様子見する。また下の項目の計算式を修正と追加した。次打切で更新する確率も入れようと思うが計算式が浮かばない。・・・↓

1打ごとの成長速度=(平均更新文字速度+平均更新加速文字)/(平均更新間打切回数+平均前打切回数差)
更新予定打切回数=前回の更新時の打切回数+平均更新間打切回数+平均前打切回数差
次更新分速文字数=前回の更新時の分速文字数+平均分速文字数+平均加速文字



030615
次打切で更新する確率の計算式を決めた。

次打切で更新する確率(%)=100/(平均更新間打切回数+平均前打切回数差)


030702
打/分に切り替えた。↓


030706
自作ワードモードのゲーム終了方法を「収録文字数打切」と「文字数指定」で選択できるように。↓



プレイ中クリア文字数を表示するように。↓.


適当に1000打鍵以上で打って見た。どうもLineオブジェクトが足りないらしくそれぞれのLineを追加した。打つのがめんどくさいのでPCに打たせた↓

自作モードで音楽映像を流せるように設定。プレイ画面は音楽とはリンクさせてない。リンクさせるのがめんどくさいというのもあるが、一番の理由はタイプ数が減るから。確か愛打(1or2)のエンディング?に歌詞をタイプする奴があったが、あれをイメージしてもらうといいかな。画面はア○タイプ風。ウィンドウズメディアプレイヤーを持ってきてるんでこれに対応しているもの(MP3,MPG,AVI,MPEG,MIDI)であればどんなものでも再生させることができる。普通、歌詞は500文字。曲は3分間(PVだと5分)が曲の平均だろうか?はっきりいって初心者でも容易に打ち切ることが出来るだろう。もちろんソースファイルは自分で用意するというスタイル。↓


030707
自作音楽選択でDialog(ダイアログ)を作成した。↓


ウィンドウズメディアプレイヤーのものは全て対応ということで拡張子を全て入力した。これから、また使うかもしれないので、ここにメモっとこ。↓
dialogmusic.Filter = "全てのメディアファイル" + _
"|*.cda;*.mid;*.rmi;*.midi;*.asf;*.wm;*.wma;*.wmv;*.wmd;*.wav;*.snd;*.au;*.aif;*.aifc;*.aiff;*.wma;*.mp3;*.mpeg;*.mpg;*.m1v;*.mp2;*.mpa;*.mpe;*.asx;*.wax;*.m3u;*.wpl;*.wvx;*.wmx|" + _
"CDオーディオトラック(*.cda)|*.cda|" + _
"MIDIファイル(*.mid *.rmi *.midi)|*.mid;*.rmi;*.midi|" + _
"Windows Mediaファイル(*.asf *.wm *.wma *.wmv *.wmd)|*.asf;*.wm;*.wma;*.wmv;*.wmd|" + _
"オーディオファイル(*.wav *.snd *.au *.aif *.aifc *.aiff *.wma *.mp3)|*.wav;*.snd;*.au;*.aif;*.aifc;*.aiff;*.wma;*.mp3|" + _
"ビデオファイル(*.avi *.wmv)|*.avi;*.wmv|" + _
"ムービーファイル(MPEG)(*.mpeg *.mpg *.m1v *.mp2 *.mpa *.mpe)|*.mpeg;*.mpg;*.m1v;*.mp2;*.mpa;*.mpe|" + _
"メディア再生リスト(*.asx *.wax *.m3u *.wpl *.wvx *.wmx)|*.asx;*.wax;*.m3u;*.wpl;*.wvx;*.wmx|" + _
"すべてのファイル (*.*)|*.*|"

記録デリートフォームで"allrireki.datだけPrint #1,""が抜けていたのを修正。↓
Open folder + "allrireki.dat" For Output As #1
     Print #1, ""
Close


shiftとの組合せの打鍵は2打鍵と計算されるため秒/打が0となってしまうのを+1打鍵の秒/打を半分分けて修正


030708
音楽を再生するかしないかを設定可能に↓

ゲームプレイと同時に音楽をスタート(再スタート)させるように、また終了と同時に音楽を停止させるようにした。↓

'自作モードのときメディアを再生させる。
'カナ自作単語を打つとき'自作単語を打つときはこちら
If folder = "data/kanajisaku/" Or folder = "data/jisaku/" Then
   If jisakumusicsaisei = 1 Then
      mediajisakumusic.FileName = jisakumusic
      mediajisakumusic.Play
      mediajisakumusic.Top = 4680
   End If
End If


030712
履歴フォームの履歴の読み込みが一行ずれていたのを[input #1,a]のダミープログラムを入れて修正↓
Open folder + "allrireki.dat" For Input As #1
   Input #1, a  'ダミー
   For i = 1 To 経験回数
      'ダミー,タイム,レベル,最高打鍵数,最低打鍵数,打鍵数, ミス. 正誤率,文字数、日付,順位
      Input #1, a, 各(データ1~
   Next i
Close

作者名を変更。時刻を消す。


030713(朝)

SHIFTを使った1文字で2打鍵の処理の成績計算が上手くいかない。プレイ後SHIFTによって飛ばされたx打鍵目の0秒/打を一つ上の(x+1)打鍵目と平均させた後、平均最高秒/打と平均最低秒/打を計算するのだが成績画面での平均最高秒/打と平均最低秒/打が合わない。一番最初の0.474秒/打しか合っていない。↓(この問題で3日目突入。頭痛くなってきた。)

↓プレイ後(x打鍵目の秒/打)


↓成績画面(x打鍵目の秒/打)


030713(夕)

↑の問題解決!どちらの図の数値も合っている。青線もちゃんと枠内に入ってる↓。原因は平均秒/打の配列の初期化がされていなかったこと(あ~もうこんなに苦労するのイヤだ。)

↓プレイ後(x打鍵目の秒/打)


↓成績画面(x打鍵目の秒/打)


アイコン作り変え


030714
外していた不正チェックを再度組み立てる。今度は24時を挟んだときでもOKなようにした↓。今回はtime.intervalを使っていないため低スペックのPCでも不正は出ないはず。

'もしアプリ速度調節を使ったときは不正画面表示
'不正チェックのため現在のPCの時間(秒)をいれる
sub = Second(time( )) + Minute(time( )) * 60 + Hour(time( )) * 3600 - sub
'24時を挟んだとき(サブタイムがマイナスのとき)
If sub < 0 Then
   sub = 86400 + sub
End If

'プレイタイムとサブタイムとの差が1より大きいとき不正とする
If Abs(gettime - sub) <= 1 Then
Else
   fusei = 1
End If


12個のパスワードを新しいものへ変更。パスワードの11個目が出ていなかったのを修正。モードを選ぶとmdiキャプションにモードが入るようにした。タイトル画面を再修正.フラッシュを作り変え。フラッシュをエンター、マウスクリックで飛ばせるように修正。

履歴フォームに不正チェックNoを導入、&履歴フォームに不正チェック機能を追加。
'履歴を書き込む
Open folder + "allrireki.dat" For Append As #1
   ・・・・・・・・・・・・
   不正ナンバー発行プログラム
   ・・・・・・・・・・・・
   Write #1, 回数 タイム,レベル,最高打鍵数,最低打鍵数,打鍵数, ミス,文字数、日付,順位,履歴ステータス
Close


030715
これで一通り骨組みは出来た。

T3Wに手を加えること2ヶ月。新たな機能を備えたソフト、T3W改め「T6X」ここに誕生。今宵公開予定。



「T6X」の「6」とした理由は6種類の文字から好きな表示文字を選べるということから。「X」としたのは単純に「W」の次ということで。これから大空にはばたいて欲しい思いを込めて脱皮完了。

アプリサイズ:2,297,856 バイト
コンパイル時間:10分
Copyrite (C) 2003 Tricrossoft All Rights Reserved.

戻る