CodeGym/Java Blog/अनियमित/CodeGym पर गेम्स सेक्शन: गेम इंजन
John Squirrels
स्तर 41
San Francisco

CodeGym पर गेम्स सेक्शन: गेम इंजन

अनियमित ग्रुप में प्रकाशित
सदस्य
CodeGym का "गेम्स" बड़े कार्यों वाला एक नया खंड है जिसमें लोकप्रिय कंप्यूटर गेम लिखना शामिल है। ऐसा लगता है की तुलना में उन्हें बनाना आसान है: प्रत्येक परियोजना को बीस उप-कार्यों में विभाजित किया गया है। कार्यों को चरण दर चरण पूरा करते हुए, आप अपना खुद का गेम लिखेंगे, और फिर आप अनूठी विशेषताओं को जोड़ सकते हैं और इसे दोस्तों के साथ साझा कर सकते हैं। CodeGym पर "गेम्स" सेक्शन: गेम इंजन - 1गेम्स सरल CodeGym गेम इंजन का उपयोग करते हैं । इस लेख में, हम इसकी प्रमुख विशेषताओं का वर्णन करेंगे और खेल-लेखन प्रक्रिया कैसी दिखती है।

1 परिचय

डेवलपर के लिए, कंप्यूटर गेम के कार्यान्वयन के तीन चरण हैं:
  1. गेम इनिशियलाइज़ेशन - इस चरण में प्रारंभिक क्रियाएँ शामिल हैं: खेल के मैदान का आकार निर्धारित करना, खेल के मैदान को चित्रित करना, खेल की वस्तुओं का निर्माण करना और उन्हें उनकी प्रारंभिक स्थिति में रखना, और अन्य क्रियाएँ जो खेल की शुरुआत में की जानी चाहिए।

  2. खेल प्रक्रिया। इस चरण में गेम ऑब्जेक्ट्स, खिलाड़ी क्रियाएं, स्कोर बनाए रखना और अन्य क्रियाएं शामिल हैं जिन्हें एक निश्चित आवृत्ति पर या बटन दबाए जाने पर किया जाना चाहिए।

  3. खेल समापन। इस चरण में एनीमेशन को रोकना, जीत या हार की सूचना देना और खेल के अंत में किए जाने वाले अन्य कार्य शामिल हैं।

2. खेल आरंभीकरण

गेम इनिशियलाइज़ेशन में केवल दो चरण होते हैं: चरण 1: गेम का मुख्य वर्ग बनाएँ। CodeGym गेम इंजन का उपयोग करके अपना खुद का गेम विकसित करने के लिए, आपको क्लास बनाने की आवश्यकता है जो Gameक्लास (com.codegym.engine.cell.Game) को इनहेरिट करता है। यह आपकी कक्षा को गेम इंजन के तरीकों को कॉल करने की क्षमता देता है, और इंजन को आपके तरीकों को कॉल करने की क्षमता देता है। उदाहरण के लिए:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}
चरण 2: प्रारंभिक विधि को ओवरराइड करें ()। खेल शुरू करने के लिए आवश्यक सभी क्रियाएं इस विधि में होंगी: खेल का मैदान बनाना, खेल की वस्तुएं बनाना, आदि। आपको बस इस विधि को कक्षा में विरासत में देने की आवश्यकता है Game। उदाहरण के लिए:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        // Here we perform all actions to initialize the game and its objects
    }
}
विधि विधि initialize()के अनुरूप है main(): यह गेम के लिए लिखे गए सभी कोड के लिए शुरुआती बिंदु है।

3. खेल का मैदान बनाना

खेल का मैदान बनाने में भी केवल दो चरण होते हैं। चरण 1: खेल के मैदान को कोशिकाओं में विभाजित करें। पूरे खेल मैदान को खेल इंजन द्वारा कोशिकाओं में बांटा गया है। न्यूनतम आकार 3x3 है; अधिकतम 100x100 है। गेम स्क्रीन के आयाम स्थिर हैं। इसे विभिन्न संख्या में कोशिकाओं में विभाजित किया जा सकता है। उदाहरण के लिए, 7 सेल्स वाइड बाय 9 सेल्स ऊँचे: CodeGym पर "गेम्स" सेक्शन: गेम इंजन - 2ध्यान दें कि सेलों की संख्या शीर्ष बाएँ कोने से शुरू होती है। खेल के मैदान का आकार निर्धारित करने के लिए, void setScreenSize(int width, int height)विधि का उपयोग करें। यह खेल के मैदान का आकार निर्धारित करता है। इसके पैरामीटर क्षैतिज (चौड़ाई) और लंबवत (ऊंचाई) कोशिकाओं की संख्या का प्रतिनिधित्व करते हैं। खेल शुरू होने पर इसे आमतौर पर एक बार कहा जाता है। उदाहरण के लिए:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       // Set the field size to 7 cells x 9 cells
       setScreenSize(7, 9);
        ...
    }
}
खेल लिखते समय, आपको खेल के मैदान की वर्तमान चौड़ाई और ऊंचाई प्राप्त करने की आवश्यकता हो सकती है। ऐसा करने के लिए, int getScreenWidth()और int getScreenHeight()तरीके काम आएंगे। चरण 2: ग्रिड को चालू या बंद करें (वैकल्पिक)। यदि आपको खेल के मैदान पर कोशिकाओं को अलग करने वाली काली ग्रिड पसंद नहीं है, तो आप इसे बंद कर सकते हैं। विधि void showGrid(boolean isShow)ग्रिड को चालू और बंद करती है। डिफ़ॉल्ट रूप से, ग्रिड प्रदर्शित होता है। इसे बंद करने के लिए, इस विधि को तर्क के रूप में असत्य के साथ कॉल करें:
showGrid(false);
परिणाम: CodeGym पर "गेम्स" सेक्शन: गेम इंजन - 3ग्रिड को वापस चालू करने के लिए, कॉल करें:
showGrid(true);

4. एक आदिम कार्यक्रम

यहाँ एक कार्यक्रम का एक उदाहरण दिया गया है:
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        // Create a playing field that is 3 cells x 3 cells
        setScreenSize(3, 3);
        // Turn off the grid
        showGrid(false);
        // Change the background of the center cell to blue, and display an "X" in it.
        setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
    }
}
इस उदाहरण में, गेम फ़ील्ड को 3x3 पर सेट किया गया है, ग्रिड को बंद कर दिया गया है, और मध्य सेल में नीले रंग की पृष्ठभूमि पर एक नारंगी "X" आधा सेल आकार सेट किया गया है। खेल शुरू होने पर खिलाड़ी सबसे पहले यही देखता है।

5. खेल के मैदान की कोशिकाओं के साथ काम करना

तथ्य यह है कि हम खेल के मैदान को कोशिकाओं में विभाजित कर सकते हैं, लेकिन हम स्वयं कोशिकाओं के साथ क्या कर सकते हैं? आप खेल के मैदान के प्रत्येक सेल के लिए निम्नलिखित गुण सेट कर सकते हैं:
  • सेल रंग (सेल पृष्ठभूमि रंग);
  • पाठ (पाठ या संख्या);
  • पाठ का रंग;
  • सेल आकार के प्रतिशत के रूप में पाठ का आकार।
आइए खेल के मैदान की कोशिकाओं के साथ काम करने के तरीकों पर गौर करें :
  1. void setCellColor(int x, int y, Color color)- निर्देशांक (x, y) के साथ सेल का रंग सेट करता है:

    setCellColor(0, 0, Color.RED);
    setCellColor(3, 6, Color.BLACK);
    setCellColor(6, 8, Color.NONE);

  2. Color getCellColor(int x, int y)- निर्देशांक (x, y) के साथ सेल का रंग लौटाता है:

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value)- मान पैरामीटर में स्ट्रिंग के बराबर निर्देशांक (x, y) के साथ सेल का टेक्स्ट सेट करता है:

    setCellValue(3, 3, "text");
    setCellValue(0, 8, "W");
    setCellValue(4, 1, "2222");
    setCellValue(6, 6, "");

  4. String getCellValue(int x, int y)- निर्देशांक (x, y) के साथ सेल में निहित पाठ लौटाता है:

    String s = getCellValue(3, 3);
    System.out.println(getCellValue(4, 1));

  5. void setCellTextSize(int x, int y, int size)- निर्देशांक (x, y) के साथ सेल की सामग्री का आकार सेट करता है। सेल ऊंचाई के प्रतिशत के रूप में आकार पैरामीटर पाठ की ऊंचाई है:

    setCellTextSize(2 , 0, 70); // 70% of the cell height

  6. int getCellTextSize(int x, int y)- निर्देशांक (x, y) के साथ सेल की सामग्री का आकार लौटाता है:

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value)- मान पैरामीटर में संख्या के बराबर निर्देशांक (x, y) के साथ सेल का टेक्स्ट सेट करता है:

    setCellNumber(3, 3, 40);
    setCellNumber(0, 8, -8);
    setCellNumber(4, 1, 2222);
    setCellNumber(6, 6, 0);

  8. int getCellNumber(int x, int y)- निर्देशांक (x, y) के साथ सेल में निहित संख्या लौटाता है। यदि सेल में कोई संख्या नहीं है, तो 0 लौटाता है:

    int i = getCellNumber(3, 3);
    System.out.println(getCellNumber(4, 1));

  9. void setCellTextColor(int x, int y, Color color)- निर्देशांक (x, y) के साथ सेल की सामग्री (पाठ) का रंग सेट करता है:

    setCellTextColor(2, 1, Color.GREEN);
    setCellTextColor(0, 1, Color.NONE);

  10. Color getCellTextColor(int x, int y)- निर्देशांक (x, y) के साथ सेल की सामग्री (पाठ) का रंग लौटाता है:

    Color textColor = getCellTextColor(1, 3);
setCellValueEx()सुविधा के लिए, मापदंडों के विभिन्न सेटों के साथ कई विधियाँ हैं :
  1. void setCellValueEx(int x, int y, Color cellColor, String value)- निर्देशांक (x, y) के साथ सेल की पृष्ठभूमि का रंग (सेलकलर) और सामग्री (मान) सेट करता है:

    setCellValueEx(0, 2, Color.BLUE, "56");

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)- निर्देशांक (x, y) के साथ सेल का बैकग्राउंड कलर (सेल कलर), कंटेंट (वैल्यू) और टेक्स्ट कलर (टेक्स्ट कलर) सेट करता है:

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

  3. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)- निर्देशांक (x, y) के साथ सेल का बैकग्राउंड कलर (सेल कलर), कंटेंट (वैल्यू), टेक्स्ट कलर (टेक्स्ट कलर), और टेक्स्ट साइज (टेक्स्ट साइज) सेट करता है:

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);

6. रंग के साथ काम करना

Color enumगेम इंजन में रंगों के लिए जिम्मेदार है । इसमें 148 रंगों के लिए अद्वितीय मूल्य हैं। इसका एक विशेष मूल्य (NONE) भी है जो बिना किसी रंग का प्रतिनिधित्व करता है। यहाँ रंग के साथ काम करने का एक उदाहरण दिया गया है:
Color myColor = Color.WHITE;  // The myColor variable is set to white.
Color redColor = Color.RED;  // The redColor variable is set to red.
Color blueColor = Color.BLUE;  // The blueColor variable is set to light blue.
कभी-कभी आपको सभी मौजूदा रंगों की एक सरणी प्राप्त करने की आवश्यकता हो सकती है। ऐसा करने के लिए, values()विधि का उपयोग करें। उदाहरण के लिए:
Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
पैलेट में रंग की अनुक्रमणिका प्राप्त करना बहुत आसान है:
Color color = Color.RED;
int redIndex = color.ordinal();  // Index of red

int blueIndex = Color.BLUE.ordinal();  // Index of blue
आप इसकी अनुक्रमणिका द्वारा रंग भी प्राप्त कर सकते हैं:
Color color = Color.values()[10];  // The color variable is assigned the color with index 10 in the Color enum.

7. डायलॉग बॉक्स

खेल के अंत में, आपको खिलाड़ी को जीत या हार की सूचना देनी होगी। ऐसा करने के लिए, एक विशेष विधि है जो गेम स्क्रीन पर एक डायलॉग बॉक्स प्रदर्शित करती है:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
यहाँ:
  • cellColorसंवाद बॉक्स की पृष्ठभूमि का रंग है;
  • messageसंदेश का पाठ है;
  • textColorसंदेश पाठ का रंग है;
  • textSizeसंदेश पाठ का आकार है।
यदि उपयोगकर्ता स्पेस बार दबाता है तो डायलॉग बॉक्स अपने आप बंद हो जाता है।

8. उपयोगिता के तरीके

गेम लिखते समय, यादृच्छिक संख्याओं का बहुत उपयोग किया जाता है। यादृच्छिक संख्या प्राप्त करना आसान बनाने के लिए, आप गेम इंजन द्वारा प्रदान की जाने वाली निम्नलिखित उपयोगी विधियों का उपयोग कर सकते हैं:
  1. int getRandomNumber(int max)— 0 से (अधिकतम-1) सहित एक यादृच्छिक पूर्णांक लौटाता है।

  2. int getRandomNumber(int min, int max)- न्यूनतम से (अधिकतम -1) सहित एक यादृच्छिक पूर्णांक देता है।

अभी के लिए इतना ही! यदि आप "गेम्स" अनुभाग के बारे में अधिक जानना चाहते हैं, तो यहां कुछ उपयोगी दस्तावेज दिए गए हैं जो मदद कर सकते हैं:
टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं