
1. معرفی
برای توسعه دهنده، سه مرحله برای اجرای یک بازی رایانه ای وجود دارد:-
مقداردهی اولیه بازی - این مرحله شامل اقدامات مقدماتی است: تنظیم اندازه زمین بازی، ترسیم زمین بازی، ایجاد اشیاء بازی و قرار دادن آنها در موقعیت های اولیه و سایر اقداماتی که باید در ابتدای بازی انجام شوند.
-
روند بازی. این مرحله شامل حرکت دادن اجسام بازی، اقدامات بازیکن، حفظ امتیاز و سایر اقداماتی است که باید در فرکانس معین یا با فشار دادن دکمه ها انجام شوند.
-
اتمام بازی. این مرحله شامل توقف انیمیشن، گزارش برد یا باخت و سایر اقداماتی است که باید در پایان بازی انجام شود.
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 سلول:
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);
نتیجه: 
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. کار با سلول های زمین بازی
اینکه میتوانیم زمین بازی را به سلولها تقسیم کنیم، عالی است، اما با خود سلولها چه کار میتوانیم انجام دهیم؟ می توانید ویژگی های زیر را برای هر سلول از زمین بازی تنظیم کنید:- رنگ سلول (رنگ پس زمینه سلول)؛
- متن (متن یا شماره)؛
- رنگ متن؛
- اندازه متن به عنوان درصدی از اندازه سلول.
-
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);
-
Color getCellColor(int x, int y)
- رنگ سلول را با مختصات (x,y) برمی گرداند:Color myColor = getCellColor(2, 0);
-
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, "");
-
String getCellValue(int x, int y)
- متن موجود در سلول را با مختصات (x, y) برمی گرداند:String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size)
- اندازه محتویات سلول را با مختصات (x, y) تنظیم می کند. پارامتر اندازه، ارتفاع متن به عنوان درصدی از ارتفاع سلول است:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
- اندازه محتویات سلول را با مختصات (x, y) برمی گرداند:int size = getCellTextSize(2 , 0);
-
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);
-
int getCellNumber(int x, int y)
- عدد موجود در سلول را با مختصات (x, y) برمی گرداند. اگر سلول حاوی عدد نباشد، 0 را برمی گرداند:int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
void setCellTextColor(int x, int y, Color color)
- رنگ محتویات (متن) سلول را با مختصات (x, y) تنظیم می کند:setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y)
- رنگ محتویات (متن) سلول را با مختصات (x, y) برمی گرداند:Color textColor = getCellTextColor(1, 3);
setCellValueEx()
برای راحتی، چندین روش با مجموعه پارامترهای مختلف وجود دارد :
-
void setCellValueEx(int x, int y, Color cellColor, String value)
- رنگ پس زمینه (cellColor) و محتویات (مقدار) سلول را با مختصات (x, y) تنظیم می کند:setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
- رنگ پس زمینه (cellColor)، محتویات (مقدار) و رنگ متن (textColor) سلول را با مختصات (x, y) تنظیم می کند:setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
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. روش های سودمند
هنگام نوشتن بازی ها از اعداد تصادفی زیاد استفاده می شود. برای سهولت در به دست آوردن اعداد تصادفی، می توانید از روش های سودمند زیر ارائه شده توسط موتور بازی استفاده کنید:-
int getRandomNumber(int max)
- یک عدد صحیح تصادفی از 0 به (حداکثر 1) شامل برمی گرداند. -
int getRandomNumber(int min, int max)
- یک عدد صحیح تصادفی را از min به (max-1) شامل برمی گرداند.
GO TO FULL VERSION