JavaRush /جاوا بلاگ /Random-UR /JavaRush پر سیکشن "گیمز": گیم انجن

JavaRush پر سیکشن "گیمز": گیم انجن

گروپ میں شائع ہوا۔
JavaRush سے "گیمز" ایک نیا سیکشن ہے جس میں مقبول کمپیوٹر گیمز لکھنے کے لیے بڑے ٹاسک پروجیکٹس شامل ہیں۔ ان کو بنانا اس سے کہیں زیادہ آسان ہے جو لگتا ہے: ہر پروجیکٹ کو دو درجن ذیلی کاموں میں تقسیم کیا گیا ہے۔ کاموں کو مرحلہ وار مکمل کر کے، آپ اپنا گیم لکھیں گے، اور پھر آپ اس میں منفرد "خصوصیات" شامل کر کے دوستوں کے ساتھ شیئر کر سکتے ہیں۔ بابگیمز سادہ JavaRush گیم انجن کا استعمال کرتے ہیں ۔ اس مضمون میں ہم اس کی اہم خصوصیات کے بارے میں بات کریں گے اور گیم لکھنے کا عمل کیسا لگتا ہے۔
  1. تعارف
  2. گیم کی شروعات
  3. کھیل کا میدان بنانا
  4. ابتدائی پروگرام
  5. کھیل کے میدان کے خلیوں کے ساتھ کام کرنا
  6. رنگ کے ساتھ کام کرنا
  7. ڈائیلاگ باکسز
  8. افادیت کے طریقے
  9. گیم انجن کی حدود

1. تعارف

ڈویلپر کی طرف سے کمپیوٹر گیم کے نفاذ میں تین مراحل ہیں:
  1. کھیل کا آغاز تیاری کے اعمال ہیں: کھیل کے میدان کے سائز اور ڈرائنگ کو ترتیب دینا، ابتدائی پوزیشن میں گیم آبجیکٹ بنانا اور انسٹال کرنا، نیز دیگر اعمال جو کھیل کے آغاز میں انجام دینے چاہئیں۔

  2. کھیل کا عمل۔ اس میں گیم آبجیکٹ کی نقل و حرکت، پلیئر ایکشنز، حاصل کردہ پوائنٹس کا حساب کتاب، اور ساتھ ہی دیگر اعمال بھی شامل ہیں جنہیں کچھ وقفوں پر یا بٹن دبانے سے انجام دیا جانا چاہیے۔

  3. کھیل ختم کرنا۔ اس میں متحرک تصاویر کو روکنا، فتح یا شکست کا اعلان کرنا، اور دیگر اعمال شامل ہیں جو گیم کے اختتام پر انجام دینے کی ضرورت ہے۔

2. گیم کی شروعات

گیم شروع کرنا صرف دو مراحل پر مشتمل ہے:

مرحلہ 1: مرکزی گیم کلاس بنائیں۔

JavaRush گیم انجن کی بنیاد پر اپنا گیم تیار کرنے کے لیے، آپ کو ایک کلاس بنانا ہوگا اور اسے گیم کلاس (com.javarush.engine.cell.Game) سے وراثت میں لینا ہوگا۔ یہ آپ کی کلاس کو گیم انجن پر طریقوں کو کال کرنے کی صلاحیت اور انجن کو آپ کے طریقوں کو کال کرنے کی صلاحیت فراہم کرے گا۔ مثال:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}

مرحلہ 2: ابتداء() طریقہ کو اوور رائڈ کریں۔

اس طریقہ کار میں، گیم شروع کرنے کے لیے ضروری تمام اعمال انجام پائے گا: کھیل کا میدان بنانا، گیم کی اشیاء بنانا وغیرہ۔ آپ کو صرف اس طریقہ کا اعلان کلاس میں کرنے کی ضرورت ہے جو گیم کلاس سے وراثت میں ملتی ہے ۔ مثال:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        //  Тут выполняем все действия по инициализации игры и ее an objectов
    }
}
ابتداء() طریقہ مین() طریقہ کا ایک اینالاگ ہے : یہ وہ جگہ ہے جہاں گیم کے لیے لکھے گئے تمام کوڈ پر عمل درآمد ہونا شروع ہوتا ہے۔

3. کھیل کا میدان بنانا

کھیل کا میدان بنانا بھی صرف دو مراحل پر مشتمل ہے۔

مرحلہ 1: کھیل کے میدان کو خلیوں میں تقسیم کریں۔

پورے کھیل کے میدان کو گیم انجن کے ذریعہ سیلوں میں تقسیم کیا گیا ہے۔ کم از کم سائز 3x3 ہے، زیادہ سے زیادہ 100x100 ہے۔ گیم اسکرین کا سائز مستقل ہے۔ اسے خلیوں کی مختلف تعداد میں تقسیم کیا جاسکتا ہے۔ مثال کے طور پر، چوڑائی 7 اور اونچائی 9:
باب
براہ کرم نوٹ کریں کہ سیل نمبرنگ اوپری بائیں کونے سے شروع ہوتی ہے۔ کھیل کے میدان کا سائز متعین کرنے کے لیے، void setScreenSize(int width, int height) طریقہ استعمال کریں ۔ یہ کھیل کے میدان کا سائز طے کرتا ہے۔ یہ پیرامیٹرز کے طور پر خلیوں کی تعداد افقی (چوڑائی) اور عمودی طور پر (اونچائی) لیتا ہے۔ جب کھیل شروع ہوتا ہے تو اسے عام طور پر ایک بار بلایا جاتا ہے۔ مثال:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       //  задали размер поля 7x9 клеток
       setScreenSize(7, 9);
        ...
    }
}
کھیل لکھتے وقت، آپ کو کھیل کے میدان کی موجودہ چوڑائی اور اونچائی حاصل کرنے کی ضرورت پڑ سکتی ہے۔ int getScreenWidth() اور int getScreenHeight() طریقے اس کے لیے کارآمد ہیں ۔

مرحلہ 2: گرڈ کو آن یا آف کریں (اختیاری)۔

اگر آپ کو بلیک گرڈ پسند نہیں ہے جو کھیل کے میدان میں خلیات کو الگ کرتا ہے، تو آپ اسے بند کر سکتے ہیں۔ void showGrid (بولین isShow) طریقہ گرڈ کو الگ کرنے والے سیلز کو آن اور آف کرتا ہے۔ پہلے سے طے شدہ طور پر، گرڈ ظاہر ہوتا ہے۔ اسے آف کرنے کے لیے، اس طریقہ کو غلط پیرامیٹر کے ساتھ کال کریں:
showGrid(false);
نتیجہ:
باب
گرڈ کو دوبارہ آن کرنے کے لیے، کال کریں:
showGrid(true);

4. قدیم پروگرام

مثال پروگرام:
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        //  Создаем игровое поле 3x3 клетки
        setScreenSize(3, 3);
        //  Выключаем отображение сетки
        showGrid(false);
        //  Меняем фон центральной клетки на синий, и отображаем в ней “Х”
        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. رنگ 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. اسٹرنگ 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% высоты клетки

  6. int getCellTextSize(int x, int y) - کوآرڈینیٹس کے ساتھ سیل میں مواد کا سائز واپس کرتا ہے (x, y):

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int ویلیو) - نمبر ویلیو کو کوآرڈینیٹ کے ساتھ سیل میں رکھتا ہے (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. رنگ getCellTextColor(int x, int y) - کوآرڈینیٹس والے سیل میں مواد (متن) کا رنگ لوٹاتا ہے (x, y):

    Color textColor = getCellTextColor(1, 3);
سہولت کے لیے، پیرامیٹرز کے مختلف سیٹوں کے ساتھ کئی setCellValueEx() طریقے ہیں :
  1. void setCellValueEx(int ​​x, int y, Color cell Color, String Value) — سیل کو کوآرڈینیٹ (x, y) پس منظر کے رنگ کے سیل رنگ اور مواد کی قدر کے ساتھ سیٹ کرتا ہے:

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

  2. void setCellValueEx(int ​​x، int y، کلر سیل کلر، سٹرنگ ویلیو، کلر ٹیکسٹ کلر) — سیل کو کوآرڈینیٹ (x، y) پس منظر کا رنگ سیل کلر، مواد کی قدر اور مواد کا رنگ ٹیکسٹ کلر کے ساتھ سیٹ کرتا ہے:

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

  3. void setCellValueEx(int ​​x، int y، کلر سیل کلر، سٹرنگ ویلیو، کلر ٹیکسٹ کلر، انٹ ٹیکسٹ سائز)؛ — سیل کو کوآرڈینیٹس (x، y) پس منظر کا رنگ سیل کلر، مواد کی قدر، مواد کا رنگ ٹیکسٹ کلر اور مواد کا سائز ٹیکسٹ سائز کے ساتھ سیٹ کرتا ہے:

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

6. رنگ کے ساتھ کام کرنا

گیم انجن میں رنگوں کو Color enum کے ذریعے کنٹرول کیا جاتا ہے ، جس میں 148 رنگوں کی منفرد قدر ہوتی ہے۔ اور خصوصی قدر NONE - رنگ کی عدم موجودگی۔ رنگ کے ساتھ کام کرنے کی مثال:
Color myColor = Color.WHITE;  //  переменной myColor присваивается белый цвет.
Color redColor = Color.RED; //  переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; //  переменной blueColor присваивается синий цвет.
کبھی کبھی آپ تمام موجودہ رنگوں کی ایک صف حاصل کرنا چاہتے ہیں۔ ایسا کرنے کے لیے اقدار() طریقہ استعمال کریں ۔ مثال کے طور پر:
//  переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
پیلیٹ میں رنگ نمبر حاصل کرنا بہت آسان ہے:
Color color = Color.RED;
int redIndex = color.ordinal(); //  Номер красного цвета

int blueIndex = Color.BLUE.ordinal(); //  Номер синего цвета
آپ اس کے نمبر سے رنگ بھی حاصل کر سکتے ہیں:
//  переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];

7. ڈائیلاگ باکسز

کھیل کے اختتام پر، کھلاڑی کو جیت یا ہار کے بارے میں مطلع کرنا ضروری ہے. اس کے لیے ایک خاص طریقہ ہے جو گیم اسکرین پر ڈائیلاگ باکس دکھاتا ہے۔
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
یہاں:
  • سیل کلر - ڈائیلاگ باکس کے پس منظر کا رنگ؛
  • پیغام - پیغام کا متن؛
  • متن کا رنگ - پیغام کے متن کا رنگ؛
  • ٹیکسٹ سائز - میسج ٹیکسٹ سائز۔
اگر صارف اسپیس بار کو دباتا ہے تو ڈائیلاگ خود بخود بند ہوجاتا ہے۔

8. افادیت کے طریقے

کھیل لکھتے وقت بے ترتیب نمبر اکثر استعمال ہوتے ہیں۔ بے ترتیب نمبر حاصل کرنا آسان بنانے کے لیے، آپ سکریپ انجن کے طریقے استعمال کر سکتے ہیں:
  1. int getRandomNumber(int max) - 0 سے (زیادہ سے زیادہ-1) تک ایک بے ترتیب عدد واپس کرتا ہے۔

  2. int getRandomNumber(int min, int max) - ایک بے ترتیب عدد کو کم سے کم سے (زیادہ سے زیادہ–1) تک لوٹاتا ہے۔

9. گیم انجن کی حدود

سائٹ پر گیمز چلانے کے لیے، ان کا سرور پر جاوا اسکرپٹ میں ترجمہ کیا جاتا ہے۔ اس سلسلے میں، کچھ پابندیاں پیدا ہوتی ہیں. خاص طور پر، جاوا رش انجن کا استعمال کرتے ہوئے گیمز لکھتے وقت، آپ فائلوں کے ساتھ کام نہیں کر سکتے، اور نہ ہی سسٹم کلاس کے تمام طریقے استعمال کر سکتے ہیں ، سوائے currentTimeMillis() , setOut() , setErr() , arrayscopy() ۔ آپ ایرر اور آؤٹ فیلڈز بھی استعمال کر سکتے ہیں ۔ ان پابندیوں کی خلاف ورزی کرتے ہوئے، کھیل، بلاشبہ، مرتب اور چلایا جا سکتا ہے، لیکن اسے شائع کرنا ممکن نہیں ہو گا۔ آپ لامحدود لوپس کے ساتھ گیم بھی شائع نہیں کر پائیں گے۔ بس! اگر آپ گیمز سیکشن کے بارے میں مزید جاننا چاہتے ہیں، تو یہاں کچھ مفید دستاویزات ہیں جو مدد کر سکتی ہیں:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION