- معرفی
- مقداردهی اولیه بازی
- ایجاد یک زمین بازی
- برنامه بدوی
- کار با سلول های زمین بازی
- کار با رنگ
- جعبه های گفتگو
- روش های سودمند
- محدودیت های موتور بازی
1. معرفی
سه مرحله در اجرای یک بازی رایانه ای از سوی سازنده وجود دارد:- راه اندازی بازی اقدامات آماده سازی است: تنظیم اندازه و ترسیم زمین بازی، ایجاد و نصب اشیاء بازی در موقعیت اولیه و همچنین سایر اقداماتی که باید در ابتدای بازی انجام شود.
- روند بازی. این شامل حرکت اشیاء بازی، اقدامات بازیکن، محاسبه امتیازات کسب شده و همچنین سایر اقداماتی است که باید در فواصل زمانی معین یا با فشار دادن دکمه ها انجام شوند.
- پایان دادن به بازی. این شامل توقف انیمیشن ها، گزارش پیروزی یا شکست و سایر اقداماتی است که باید در پایان بازی انجام شوند.
2. مقداردهی اولیه بازی
شروع بازی فقط از دو مرحله تشکیل شده است:مرحله 1: کلاس اصلی بازی را ایجاد کنید.
برای توسعه بازی خود بر اساس موتور بازی JavaRush، باید یک کلاس ایجاد کنید و آن را از کلاس Game (com.javarush.engine.cell.Game) به ارث ببرید. این به کلاس شما توانایی فراخوانی متدها در موتور بازی و توانایی موتور برای فراخوانی متدهای شما را می دهد. مثال:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
مرحله 2: روش ()initialize را نادیده بگیرید.
در این روش تمام اقدامات لازم برای شروع بازی انجام می شود: ایجاد زمین بازی، ایجاد آبجکت های بازی و غیره. شما فقط باید این متد را در کلاسی که از کلاس Game ارث می برد، اعلام کنید . مثال:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
متد ()initialize آنالوگ متد main() است : جایی است که تمام کدهای نوشته شده برای بازی شروع به اجرا می کند.
3. ایجاد زمین بازی
ایجاد یک زمین بازی نیز تنها شامل دو مرحله است.مرحله 1: زمین بازی را به سلول ها تقسیم کنید.
کل زمین بازی توسط موتور بازی به سلول ها تقسیم می شود. حداقل اندازه 3x3 و حداکثر 100x100 است. صفحه نمایش بازی دارای اندازه ثابتی است. می توان آن را به تعداد سلول های مختلف تقسیم کرد. به عنوان مثال، عرض 7 و ارتفاع 9: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 (boolean isShow) سلول های جداکننده شبکه را روشن و خاموش می کند. به طور پیش فرض، شبکه نمایش داده می شود. برای خاموش کردن آن، این متد را با پارامتر false فراخوانی کنید: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. کار با سلول های زمین بازی
اینکه میتوانیم زمین بازی را به سلولها تقسیم کنیم، عالی است، اما با خود سلولها چه کنیم؟ هر سلول از زمین بازی را می توان تنظیم کرد:- رنگ سلول (رنگ پس زمینه سلول)؛
- متن (متن یا شماره)؛
- رنگ متن؛
- اندازه متن به عنوان درصد نسبت به اندازه سلول.
-
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، مقدار رشته) - مقدار متن را با مختصات (x، y) در سلول قرار می دهد:
setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
رشته 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% высоты клетки
-
int getCellTextSize(int x, int y) - اندازه محتوای سلول را با مختصات (x, y) برمیگرداند:
int size = getCellTextSize(2 , 0);
-
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);
-
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);
-
void setCellValueEx (int x, int y, Color cellColor, String مقدار) - سلول را با مختصات (x, y) سلول رنگ پس زمینه و مقدار محتوا تنظیم می کند:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx (int x، int y، Color cellColor، String مقدار، Color textColor) - سلول را با مختصات (x، y) سلول رنگ پسزمینه Color، مقدار محتوا و رنگ محتوا تنظیم میکند.
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String مقدار, Color textColor, int textSize); - سلول را با مختصات (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 присваивается синий цвет.
گاهی اوقات ممکن است بخواهید آرایه ای از تمام رنگ های موجود را دریافت کنید. برای انجام این کار، از متد () values استفاده کنید . مثلا:
// переменной 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)
اینجا:
- cellColor - رنگ پسزمینه کادر محاورهای.
- پیام - متن پیام؛
- textColor - رنگ متن پیام؛
- textSize - اندازه متن پیام.
8. روش های سودمند
معمولاً هنگام نوشتن بازی از اعداد تصادفی استفاده می شود. برای سهولت در به دست آوردن اعداد تصادفی، می توانید از روش های موتور قراضه استفاده کنید:- int getRandomNumber(int max) - یک عدد صحیح تصادفی را از 0 به (max–1) شامل برمی گرداند.
- int getRandomNumber (int min, int max) - یک عدد صحیح تصادفی را از min به (max–1) شامل میدهد.
GO TO FULL VERSION