C言語で作られたリズムゲーム



紹介する



これはリズムゲームで、1年生の小さなプロジェクト課題です.



『p>リズムゲーム自体はあまり時間がかかりませんでしたが、このコーナーに合わせるのに本当に苦労したのを覚えています.p>


使用方法


D、F、J、Kキーを使用してノードを入力します.


注釈を正しく入力するとExcellent、ゆっくり入力するとGood判定となります.


コメント

を連続して入力すると、組合せが蓄積されます.


積分は組合せと判定により得られた.スコア計算式は以下のとおりです.

score += (combo / 10 + 1) * 50

設定」メニューから2つのオプションをオン/オフにできます.



  • 書き込みコメントモードをオンにすると、編集モードが有効になります.

    歌はあるけどノートはないこのとき、曲に合わせてキーボードを入力すると、ノートは「note」になります.txt"ファイルに保存されます.



  • デバッグモードをオンにすると、デバッグモードが有効になります.

    リフレッシュ画面の遅延を表示できます.





説明:



  • 先頭の単純テキストアニメーションはfor文で実現されます.

    テキストを2 D char配列として保存し、行ごとに出力/クリアを繰り返します.



  • 曲を選択すると、バッファはコメントを保存したテキストファイルからchar配列を受信します.

    0はノードが存在しないことを示し、1はノードが存在することを示す.



  • 曲はPlaySound関数で再生される.



  • ノートパソコンはテキストの色を変更し、リズムゲームのノートパソコンのように見えるスペースを印刷しました.
    SetConsoleTextAttribute関数でテキストの色を変更しました.



  • 1画面の遅延は曲のBPMと一致する.

    ノードは高速出力を必要とするため、必然的に遅延偏差が発生します.

    繰り返し文の先頭と末尾で時間を測定することにより,遅延を統一的に補償した.



  • デュアルバッファを適用し、前バッファと後バッファのみを空白に置き換え、出力方式で実施する.



  • 受信キーはGetAsyncKeyState関数を使用します.
    _beginthreadex関数を使用してマルチスレッドを実装します.複数のキーを同時に入力できます.



  • コメントが判定線に入ると、スクリーンバッファとキー入力状態を比較することでコメント入力判定を区別する.

    フロントエンドバッファとバックエンドバッファの状態を比較して、ロングノードとショートノードを区別します.

    コメントを正しくクリックした場合は、「Excellent」、「クイック」、「Good」、「見逃した場合」に分けます.
    key_state変数を作成し、キーのスコアを防止します.



  • ゲーム中のExcellent,Good,Miss判定を記録する.br/>
    記録の判定率に基づいてランク付けを行います.

    ゲーム終了後、評価結果が表示され、スケールに基づいてグラフが描かれ、達成度が直感的に表示されます.