CodeGym /وبلاگ جاوا /Random-FA /بخش بازی در CodeGym: موتور بازی
John Squirrels
مرحله
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)روش شبکه را روشن و خاموش می کند. به طور پیش فرض، شبکه نمایش داده می شود. برای خاموش کردن آن، این متد را با آرگومان false فراخوانی کنید:

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)- رنگ پس زمینه (cellColor) و محتویات (مقدار) سلول را با مختصات (x, y) تنظیم می کند:

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)- رنگ پس زمینه (cellColor)، محتویات (مقدار) و رنگ متن (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)- رنگ پس زمینه (cellColor)، محتویات (مقدار)، رنگ متن (textColor) و اندازه متن (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)- یک عدد صحیح تصادفی را از min به (max-1) شامل برمی گرداند.

فعلاً همین است! اگر می‌خواهید درباره بخش «بازی‌ها» اطلاعات بیشتری کسب کنید، در اینجا چند سند مفید وجود دارد که می‌تواند کمک کند:
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION