読者です 読者をやめる 読者になる 読者になる

Aqutras Members' Blog

株式会社アキュトラスのメンバーが、技術情報などを楽しく書いています。

DXライブラリでタイピングゲーム制作 その3

技術

こんにちは,morivdenです.
前回(DXライブラリでタイピングゲーム制作 その2)に引き続いて
DXライブラリを用いた簡単なタイピングゲームを制作していこうと思います.
前回は正誤判定と終了画面を実装しました.
しかし今の状態ではタイピングゲームには欠かせないタイプスピードや正確性などを表示するリザルト画面がありません.
それではとても味気のないゲームとなってしまいます.
なので,今回はリザルト画面を実装していきます.

環境

  • Windows 8.1 Pro
  • Visual Studio 2015
  • DXライブラリ

リザルト画面の実装

リザルト画面には経過時間,タイプスピード,正解率,
問題文のコレクト率,スコアを表示するようにしました.
スコア計算はどのような人でも5桁くらいの値が出るように調整しました.

// タイプスピード計算(key / min)
TypeSpeed = Correct * SECONDS * 1000 / Time;
// 正確性計算(%)
Percentage = Correct * PERCENTAGE / (Correct + Miss);
// コレクト率計算(%)
CorrectPercent = Correct * PERCENTAGE / Total;
// スコア計算(タイプスピード × 正確性(百分率) × 問題文コレクト率 × 難易度補正 + 時間補正)
Score = (TypeSpeed * Percentage * PERCENTAGE / CorrectPercent * Difficult) + (100000 / (Time / 1000));

f:id:morivden:20160524184204j:plain

数字の表示はC言語のように桁幅を揃えて見栄えが良くなるようにしました.

DrawFormatStringToHandle(SCORE_X, SCORE_Y - FONT_SIZE * 2, BLACK, Handle, "%d.%03d Second", Time / 1000, Time % 1000);
DrawFormatStringToHandle(SCORE_X, SCORE_Y - FONT_SIZE, BLACK, Handle, "%6d key/min", TypeSpeed);
DrawFormatStringToHandle(SCORE_X, SCORE_Y, BLACK, Handle, "%6d Persent", Percentage);
DrawFormatStringToHandle(SCORE_X, SCORE_Y + FONT_SIZE,  BLACK, Handle, "%6d Percent", CorrectPercent);
DrawFormatStringToHandle(SCORE_X, SCORE_Y + FONT_SIZE * 2, BLACK, Handle, "%6d Point", Score);

正解率と問題文のコレクト率が100%の場合は,
リザルト画面の前におまけの画像の演出を追加しました.
f:id:morivden:20160524192812j:plain

現在はリザルト画面のプロ生ちゃんの表情が一種類しかないです. 今後,スコアに合わせて別の種類の表情を用意しようと思います. スコア計算も現在の状態では0除算をしてしまう可能性があるので,改良の余地がありそうです.

終わりに

今回はリザルト画面の実装だけなので少し内容が少なくなってしまいました.
次回は制限時間の実装と一部のコードのリファクタリングを行います.

こちらに試作版を置いています.
まだ簡易的な機能しかありませんが,順次機能を追加していきます.