CodeGym /Java Blog /এলোমেলো /কোডজিমের গেমস বিভাগ: গেম ইঞ্জিন
John Squirrels
লেভেল 41
San Francisco

কোডজিমের গেমস বিভাগ: গেম ইঞ্জিন

এলোমেলো দলে প্রকাশিত
CodeGym-এর "গেমস" হল একটি নতুন বিভাগ যার মধ্যে বড় কাজ রয়েছে যা জনপ্রিয় কম্পিউটার গেম লেখার সাথে জড়িত। এগুলি তৈরি করা যতটা মনে হয় তার চেয়ে সহজ: প্রতিটি প্রকল্প বিশটি সাবটাস্কে বিভক্ত। ধাপে ধাপে কাজগুলি সম্পূর্ণ করে, আপনি নিজের গেমটি লিখবেন এবং তারপরে আপনি অনন্য বৈশিষ্ট্যগুলি যোগ করতে এবং বন্ধুদের সাথে ভাগ করতে পারেন৷ কোডজিমের "গেমস" বিভাগ: গেম ইঞ্জিন - 1গেমগুলি সাধারণ কোডজিম গেম ইঞ্জিন ব্যবহার করে । এই নিবন্ধে, আমরা এর মূল বৈশিষ্ট্যগুলি এবং গেম লেখার প্রক্রিয়াটি কেমন তা বর্ণনা করব।

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 কক্ষ উচ্চ: কোডজিমের "গেমস" বিভাগ: গেম ইঞ্জিন - 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);
ফলাফল: কোডজিমের "গেমস" বিভাগ: গেম ইঞ্জিন - 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) পর্যন্ত একটি এলোমেলো পূর্ণসংখ্যা প্রদান করে।

এখন এ পর্যন্তই! আপনি যদি "গেমস" বিভাগ সম্পর্কে আরও জানতে চান, এখানে কিছু দরকারী ডকুমেন্টেশন রয়েছে যা সাহায্য করতে পারে:
মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION