2015-12-18 3 views
5

だから、私はいくつかのゲームを持って、例えばポンを取ると言うことができます。明らかに、ゲームロジックをグラフィックスクラスに混ぜるのは一般的ではないので、ボールまたはパドルのクラスは、実際に描画するJPanelからのものです。ボールにはボールの動きロジック、現在の位置、ヒットの検出などがありますが、ボールクラスでSwingやawtのグラフィックスクラスを使用するのは悪い習慣ですか?たとえば、java.awt.Rectangleを使用してヒットボックスを決定する場合です。私はこのクラスでそれを描画していませんが、私はそれを使用しています。または、Java.awt.Pointを使用して座標を格納する場合。私のプログラムで私の非グラフィクス関連のクラスにswingクラスとawtクラスを使用するのは悪い習慣ですか?

ところで、私はこのサイトで何度もグラフィックを混ぜないように言われているからです。非グラフィックスクラスの四角形を使用して

(?この悪い習慣です)

public class Ball { 
    static Rectangle hitbox = new Rectangle(0,10,20,20); 
    static void checkHit() { 
     if(hitbox.intersects(Paddle.hitbox) //do something 
    } 

} 

マイGraphicsクラス:

public class DrawMyStuff extends JPanel { 
    void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     setBackground(Color.BLACK); 
     Graphics2D g2d = (Graphics2D) g; 
     g2d.draw(Ball.hitbox); 
    } 
} 
+2

これは主に主観的な問題ですが、私が与える例は完全にうまくいきます。独自のPointクラスとRectangleクラスを実装する場合、AWTが使用するクラスとほぼ同じである可能性があります。その場合は、どうして迷惑でしょうか? –

+0

あなたの質問には、はい/いいえをanwerするのは難しいです。スイングアプリケーションを実行していて、あなたのコードがアプリを振る以上のものにならないなら、 'java.awt.Rectangle'クラスを使用するのは大丈夫ですが、それ以外の何かをするつもりならあなたがアンドロイドアプリのコードを使用する場合、あなたはまだスイング/ awtのjarファイルを提供する必要があるでしょう。 1つのクラスまたは1つのメソッドに対してだけ複雑なライブラリをプロジェクトに追加すると、それは過剰です – user902383

答えて

5

私はほとんどの場合、あなたはshouldnことを言うだろうこれをしないでください。ルール

から

例外は、しかし、実際には「良い」タイプのデータのみを保有している、そのパッケージ内のヘルパークラスの(小)のセットがあります。あなたはすでにそれらを手に入れたときになぜ車輪を発明しますか?私の世界では、これらは「大丈夫です」となります。

  • 寸法
  • 挿入図
  • ポイント
  • 矩形(及びポリゴン、エリアなどのような他のすべてのShape S)

彼らであるがこれらにはグラフィカルな問題を記述するために使用することができます画面上のリソースに直接結合されていません。

+0

大変ありがとう!それは妥当だと思う。私はRectangleやPointのようなものを使うことができなければ、それは一種の反作用的だったと思いました。 –

関連する問題