2015-12-18 11 views
5

तो, मान लें कि मेरे पास कुछ गेम है, उदाहरण के लिए पोंग लें। जाहिर है, आप आमतौर पर ग्राफिक्स कक्षाओं में गेम-लॉजिक को मिश्रित नहीं करना चाहते हैं, इसलिए बॉल या पैडल के लिए कक्षा जेपीनल से अलग है जो वास्तव में उन्हें आकर्षित करती है। बॉल में गेंद के लिए आंदोलन तर्क है, इसका वर्तमान स्थान, हिट डिटेक्शन इत्यादि। हालांकि, क्या स्विंग से ग्राफिक्स कक्षाओं का उपयोग करना और मेरी बॉल क्लास में बहुत बुरा व्यवहार करना है? उदाहरण के लिए, अगर मैं हिटबॉक्स निर्धारित करने के लिए java.awt.Rectangle का उपयोग करना चाहता था। भले ही मैं इसे इस कक्षा में नहीं खींच रहा हूं, मैं इसका उपयोग कर रहा हूं। या अगर मैं निर्देशांक स्टोर करने के लिए Java.awt.Point का उपयोग करना था।क्या मेरे कार्यक्रमों में मेरे गैर-ग्राफिक्स से संबंधित वर्गों के लिए स्विंग और कक्षाओं का उपयोग करना बुरा अभ्यास है?

वैसे, कारण मैं पूछ रहा हूं क्योंकि मुझे इस साइट पर कई बार बताया गया है कि ग्राफिक्स को अन्य भागों के साथ मिश्रण न करें।

गैर ग्राफिक्स कक्षा में आयत का उपयोग करना: (यह बुरा व्यवहार है?)

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

} 

मेरे ग्राफिक्स वर्ग:

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

यह ज्यादातर एक व्यक्तिपरक मामला होने जा रहा है, लेकिन मैं कहूंगा कि आपके द्वारा दिए गए उदाहरण बिल्कुल ठीक हैं। यदि आप अपने स्वयं के प्वाइंट और आयत वर्गों को लागू करना चाहते थे, तो संभावना है कि वे एडब्ल्यूटी के उपयोगों के लगभग समान होंगे - और यदि ऐसा है, तो परेशान क्यों करें? –

+0

आपके प्रश्न पर एवर हां/नहीं करना मुश्किल है। अगर आप स्विंग एप्लिकेशन कर रहे हैं, और आपका कोड स्विंग ऐप से ज्यादा कुछ नहीं होगा, तो मैं कहूंगा, हाँ 'java.awt.Rectangle' वर्ग का उपयोग करना ठीक है .. लेकिन अगर आप इसके साथ कुछ और करने की योजना बना रहे हैं , यदि आप एंड्रॉइड ऐप के लिए अपना कोड इस्तेमाल करते हैं, तो आपको वास्तव में दिमाग को ध्यान में रखना होगा, आपको अभी भी स्विंग/अल्ट जार फाइलें प्रदान करने की आवश्यकता होगी। और केवल एक वर्ग या यहां तक ​​कि एक विधि के लिए परियोजना में जटिल मुक्ति जोड़ना यह – user902383

उत्तर

5

मैं कहना चाहता हूँ कि अधिकांश भाग के लिए, आप shouldn ऐसा मत करो। नियम

से

अपवाद लेकिन एक (छोटे) है कि पैकेज है कि वास्तव में एक "अच्छा" प्रकार के केवल डेटा धारक हैं अंदर सहायक वर्गों के सेट कर रहे हैं। जब आप उन्हें पहले से मिला तो पहियों का आविष्कार क्यों किया? ये मेरी दुनिया में "उपयोग करने के लिए ठीक है" होगा।

  • आयाम
  • Insets
  • प्वाइंट
  • आयत (और अन्य सभी Shape रों बहुभुज, क्षेत्र और इतने पर की तरह)

ये चित्रमय समस्याओं का वर्णन करने के वे कर रहे हैं, जबकि इस्तेमाल किया जा सकता सीधे स्क्रीन-संसाधनों के साथ मिलकर नहीं।

+0

ओवरकिल बहुत अच्छा है! यह उचित लगता है। मैंने सोचा था कि अगर मैं आयताकार या प्वाइंट जैसी चीजों का उपयोग नहीं कर पा रहा हूं तो यह प्रतिद्वंद्वी था। –

संबंधित मुद्दे

 संबंधित मुद्दे