800*600 のゲームを作成しました。すべてのコンピュータ画面に収まるようにするにはどうすればよいですか? これは通常どのように行われますか?他のサイトでは、画面の解像度に応じてすべてを特定の比率に設定するとも言われています。ただし、ゲーム内の各画像のサイズが画面の解像度と比較して変化する場合、画像が適切な場所に配置されず、他の問題が発生することを意味します。800*600 のゲームを「伸ばす」だけで、どのサイズにも収まるようにすることはできますか? ありがとう
2 に答える
ゲームの解像度に依存しないようにする必要があります。つまり、独自の「ゲームユニット」の概念を作成し(必要に応じて、800x600画面を基準にしたピクセルとまったく同じになる場合があります)、それらのゲームユニットでのみ操作します。
画面に何かを描くときはいつでも、座標とサイズをゲームユニットからピクセルに変換します。クリックイベントを画面スペースからゲームスペースに変換することもできるため、両方の方法で変換できる関数が必要になります。
ゲームを開始するときは、画面の解像度とアスペクト比を決定する必要があります。アスペクト比が同じでない場合(ワイドスクリーンなど)、ゲーム領域を拡大するか、レターボックス化するかを選択できます。すべての翻訳コードを下位レベルに移動し、ゲームユニット内でのみ操作することで、長期的には多くの苦痛を軽減できます。
はい、伸ばすことができます。800 x 600のJPanelでゲームのメインコンポーネントを作成し、そのJPanelをJFrameに追加します。次に、プレーヤーはJFrameのサイズを変更でき、コンポーネントは画面外に表示されなくなり、JFrameの新しいサイズに基づいて形状とサイズが変更されます。JFrameに対するマウスの位置は少し変化しますが、マウスの位置をJFrameの高さ/幅で割り、JPanelの高さ/幅を掛けて、JPanelに対する位置を取得することに注意してください。この方法を使用すると、ユーザーがゲームを最大化しても、コンポーネントを正常に見せることができます。