永久スーパーボール Version 0.3 Copyright(c) by いちごじゃむ スーパーボールっぽい動きをするスクリーンセーバーです。 逆回転させながら投げると手前に戻ってくるってやつ。 Win32プログラミングの練習のために、高校時代にN88BASICで作ったものを 移植しました。 1. このアーカイブに含まれているファイルは以下の通りです。 readme.txt 説明書(このファイル) moment.scr 実行ファイル src\ moment.cpp moment.h Icon.ico moment.rc Makefile 単にスクリーンセーバーを使いたいだけって人はsrcディレクトリ以下を削除して 気にしないように。 2. インストールはc:\windows\以下にコピーしてもしなくてもいいのでご自由に。 アンインストールは設定を変更した方はたぶんc:\windows\moment.iniができて いるでしょうからご自由に。 実行すると黄色いボール「●」と灰色の角度マーカー「▽」が表示されます。 角度マーカーは回転速度を見せるために表示しているだけです。 実験条件は「ボールの大きさ 大・中・小」×「天井 あり・なし」の6通りから ランダムに決まります。 左上に30秒間実験条件とfpsが出ます。 設定画面の説明です。 「表示書き換え(Hz)」……fpsを指定します。リフレッシュレートに合わせる つもりでたとえば60を指定してもms単位で動いているので62.5Hzに切り上げ られてしまうし、そもそも今のバージョンではVSYNCが検出できないので逆に カクカクがとても目立ってしまいます。推奨値は、40か100か150以上(リフ レッシュレート60Hz時)。初期設定は100です。ノーマルペンティアム以下な マシンでは100でも能力オーバーかもしれません。実行時の左上の表示で確認 してください。 「マーカー非表示」……やれば処理が軽くなって限界fpsが上がるはずが、うちの Celeron 800MHz + PLE133だとなぜか逆効果。 「マーカー更新頻度 1/」……fpsがリフレッシュレートを上回るとマーカーの 歯抜けが発生して等間隔でなくなっていやな感じになります。このオプションで fpsを分周します。初期設定は2です。書き換えないわけではないので描画が遅い ことによるマーカーのちらつきには効果がありません。 「機能停止まで(分)」……ディスプレイの省電力機能でモニタがOFFになっても スクリーンセーバーは動き続けます。無駄です。このスクリーンセーバーは ここで設定した時間が過ぎるとほぼ停止状態になります。初期設定は0(タイマー 無効)です。 3. コンパイルするためには、Inprise社のBorland C++ Compiler 5.5が必要です。 ちょっとした手直しでVisual C++でコンパイルできると思いますが。 Borland C++ Compiler 5.5の入手先 http://www.inprise.co.jp/cppbuilder/freecompiler/ ソースファイルの管理にはKENCHさんのCBar Ver1.20を使用しました。 CBar Ver1.20の入手先 http://member.nifty.ne.jp/KENCH/ また、開発時に以下のサイトを参考にしました。 SapporoWorks / スクリーンセーバ工作室 http://homepage2.nifty.com/spw/saver/index.html (すでにこのコーナーは存在しない) 猫でもわかるプログラミング http://www.iacnet.ne.jp/~yasutaka/c_lang/ Assemblage Laboratry / Windowsコード集 http://www.grace.ne.jp/~gok/assem/ 著作権の扱いは、「スクリーンセーバ工作室」の「C++Builder用サンプルソース」 に準じてください。以下引用 | なお、再利用に関しては、商用以外の目的で使用する場合は、自由に改 | 変して使用できます。また、この場合の連絡は必要ありません。 | | 上記以外の目的に使用する場合や、転載を希望される場合、または、バ | グ・要望等の御連絡は下記までお願いします。 いちごじゃむ / 山辺 ichigojam@eastmail.com ホームページ http://hp.vector.co.jp/authors/VA021953/ 開発履歴 V0.3 CPU使用率100%になってしまう問題修正。設定画面を作る。 (2001/11/17) 描画ルーチンさらに変更。GDIで悪あがきしてみた。 次からはVSYNCの取れるDirectDrawで。 V0.2 タイミング取得方法変更。描画ルーチン改良によりちらつき減少。 (2000/11/15) パスワードロック実装。(これだけでもかなり苦労する;_;) V0.1 跳ね返りではまる問題を回避するために、厳密解可変時間ステッ (2000/10/22) プ方式に変更。