mi?

2015-12-18 12 views
5

Yani, bazı oyun var örneğin Pong almak varsayalım. Açıkçası, genellikle grafik sınıflara oyun mantığı karıştırmak istemiyorum konuşan, bu yüzden top veya Paddle için sınıf aslında onları çizer Jpanel gelen sepearte olduğunu. Topu topu, bugünkü konumu için hareket mantığı, isabet algılama, vb Ancak, benim Topu sınıfında Swing ve awt gelen grafik sınıfları kullanmak için kötü bir uygulamadır vardır? Örneğin, hit kutusunu belirlemek için bir java.awt.Rectangle kullanacak olsaydım. Bu sınıfta çizmeme rağmen, onu kullanıyorum. Ya da koordinatları depolamak için Java.awt.Point kullanacak olsaydım. Ben diğer bölümleri ile grafik karıştırmamaya bu sitede defalarca söylendi çünkü arada mi?

, Soruyorum nedenidir. olmayan grafikleri sınıf Dikdörtgen kullanma

: (bu kötü bir uygulama mı?)

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

} 

Benim Grafik sınıfı:

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

Bu, çoğunlukla öznel bir mesele olacak, ama vermek örnekler mükemmel ince olduğunu söyleyebilirim. Kendi Nokta ve Dikdörtgen sınıflarınızı uygulayacak olursanız, AWT'nin kullandıklarıyla neredeyse aynı olurdu - ve eğer durum buysa, neden rahatsız oluyorsunuz? –

+0

Sorunuzda evet/hayır olması zordur. Eğer salıncak uygulaması yapıyorsanız ve kodunuz swing uygulamasından başka bir şey olmayacaksa, o zaman evet diyebilirim ki java.awt.Rectangle' sınıfını kullanmakta fayda var .. ama başka bir şey yapmayı planlıyorsanız Eğer android uygulaması için kodunuzu kullanırsanız, aslında gerçeği hatırlatmak gerekir, size salıncak/awt jar dosyaları sağlamak gerekir. ve sadece bir sınıf için projeye karmaşık bir kütüphane eklemek veya hatta bir yöntem bile – user902383

cevap

5

Ben çoğunlukla söyleyebilirim, yapmaman Bunu yapmayın. Kural

den

İstisnalar ancak aslında bir "güzel" türden yalnızca veri sahipleri olduklarını paketin içindeki yardımcı sınıfları (küçük) seti vardır. Zaten onları aldığınızda neden tekerlekleri icat? Bunlar benim dünyamda "kullanıma hazır" olacaktı.

  • Boyut
  • Insets
  • Noktası
  • Dikdörtgen (ve böylece Çokgen, alan ve benzeri tüm diğer Shape ler) Bunlar ise grafik problemleri açıklamak için kullanılabilir

Ekrandaki kaynaklara doğrudan bağlı değil.

+0

çok büyük teşekkürler! Bu mantıklı geliyor. Dikdörtgen ya da Nokta gibi şeyler kullanamazsam, bunun bir çeşit karşı-girişim olduğunu düşünmüştüm. –

İlgili konular