JavaScreenSaver

Javaスクリーンセーバー

JDK1.4以上と、 Javaスクリーンセーバー起動部分(Windows版)が必要です。
下に起動部分の説明もつけました。

ワーム(Worm)


昔からあるスクリーンセーバーです。 ちょっと気持ち悪いですが、イヤがらずに試してみてください。 インストールは解凍後、WormSaver.jar、JSSaver.cfgをウィンドウズディレクトリに入れてください。 設定を行うと、WormSaver.cfgのファイルが出来るので、アンインストール時にはそれも削除してください。

解像度の変更は行っていません。 WindowsもしくはDirectXのバグ(or仕様)だと思われますが、解像度を変えると、元に戻したとき、 他のウィンドウが左上に寄って、サイズが変わっていることがあります。 最初はJavaのプログラムで見つけたのですが、これはJavaに限らず、 DirectXを使ったゲームでも起こります。 再現性がないので原因がよくわかりません。

ダブルバッファは使っていないので、若干ちらつきが気になるかもしれません。 Javaには全画面の画像を取得する方法がないので、ダブルバッファを使うと、 元の画面を生かすことができません。元の画面にワームを這わせたかったので、 あえてシングルバッファにしました。
設定画面も用意しています。 お好み(?)の設定にして楽しんでください。

wormsaver.zip(24,425 バイト)
ソース付(LGPL)です。

ライフゲーム(LifeGame)


これは有名な生態系のシミュレーション・プログラムです。 非常にシンプルなルールでありながら、奥深く、興味深い動きをします。 画像はグライダー銃(グライダー発生器とも言われます)が動いているところです。
あらかじめ用意したパターンか、ランダムに作成したパターンが表示されます。 あらかじめ用意したパターンはlifegame/というディレクトリにあり、XML形式に なっています。 新しいパターンを登録することも出来ます。 ファイル形式は見ればわかるでしょう。
隠し機能として、F1キーで次の面に進みます。F2キーで、カレントディレクトリ (通常はWindowsディレクトリ)にパターンをファイルに保存します。 ファイル名は"lifegame_YYYY-MM-DD_hh-mm-ss.xml"です。 何か面白いパターンが見つかったら、これで保存しておきましょう。 それ以外のキーを押すと、スクリーンセーバーが終了します。
見た目はレトロな雰囲気にしました。 最初はカラフルにしたり、あるいはDuke君を表示しようかとも思いましたが、 結局、シンプルな形にしました。
難しかったのは種族が安定したかどうかの判断です。 なかなかいい方法が見つからず、結局、3つ目に思いついた方法でうまくいきました。

生態系の情報は2枚のフィールドを持ち、それを交互に使っています。 最初は、次の世代を計算するたびに新しくフィールドを作っていたのですが、 それだと何回かに一度、ガーベージコレクションが起こってしまいます。 特にウェイト=0にしたときに顕著で、動いては一瞬止まり、動いては一瞬とまり、 という具合になり、滑らかに動いてくれませんでした。 そのため、フィールドをあらかじめ2枚用意し、交互に使うことにより、 メモリ確保しなくて済むようにしました。

lifegame.zip(37,135 バイト)
ソース付(LGPL)です。

Javaスクリーンセーバー起動部分の説明

はじめに

Javaスクリーンセーバーは起動部分と演出部分の2つからなり、 起動部分は、 いがぴょんの作品です。(感謝!)
起動部分は共通で使えるので、一度作ればあとはJavaの演出部分のみでスクリーンセーバーを作ることが可能です。 演出部分はJavaのみで作ることができるので、プラットフォーム固有の設定やAPIを知らなくても スクリーンセーバーを作ることができます。 現在、起動部分はWindowsでしか動きませんが、 他の環境のものも作られれば、 一度書いたスクリーンセーバーがあらゆる環境で動くようになるかもしれません。

利用環境

Microsoft-Windowsシリーズ(Windows2000で確認済み)
JDK1.4以降

インストール

まず起動部分のインストールを行います。 ここ からダウンロードします。 この3つのファイルをWindowsディレクトリにコピーします。 あとは、通常のスクリーンセーバーの設定と同じです。 画面のプロパティでスクリーンセーバータブを選び、「JScreenSaver」を選びます。 プレビューボタンを押せば実行します。
うまくいけばデフォルトのスクリーンセーバーがあるので、それが実行されます。 それを確認したあと、個々の演出部分のインストールを行ってください。

アンインストール

Javaスクリーンセーバーをアンインストールするには、インストールしたファイルを削除してください。 スクリーンセーバーによっては、それ以外のファイルが作成されているかもしれません。

Javaスクリーンセーバーの作り方

どのようなJavaアプリでもスクリーンセーバーとして起動できます。 極端に言えば、デモプログラムのSwingSet2.jarでも登録することができます。 登録すれば、それが立ち上がるのですが、さすがにスクリーンセーバーとは言えません。 一般的なスクリーンセーバーを作るなら、以下の条件を満たすことを奨めます。

  • フルスクリーンにする。

  • JDK1.4からjava.awt.imageパッケージにフルスクリーンで高速描画ができる、 VolatileImageやそれを簡単に扱える、BufferStrategyができたのでそれを使えばよいでしょう。 JDesktopでもフルスクリーンが実現できますが、速度的に苦しいです。

  • マウス、またはキー入力によりプログラムを終了する。

  • これは、MouseListerner、MouseMotionListener、KeyListenerで プログラムを終了するようにしておきます。

  • マウスは消しておく。

  • 透明なマウスを作成するメソッドを作ったのでそれを使ってください。

  • 必要ならば設定画面を作る。

  • WormやLifeGameはソースを公開しているのでそれを参考にすればよいでしょう。 必要なければ、バージョン情報だけでもいいでしょう。

    汎用的に使えるように、JSSaverViewクラスを作りましたが、必ずしもこれを使う必要はありません。 参考程度に考えてください。
    TOP