- Kirish
- O'yinni ishga tushirish
- O'yin maydonini yaratish
- Primitiv dastur
- O'yin maydonining hujayralari bilan ishlash
- Rang bilan ishlash
- Dialog oynalari
- Foydali usullar
- O'yin mexanizmi cheklovlari
1.Kirish
Ishlab chiquvchi tomonidan kompyuter o'yinini amalga oshirishning uchta bosqichi mavjud:- O'yinni boshlash tayyorgarlik harakatlaridir: o'yin maydonining o'lchamini va chizmasini belgilash, o'yin ob'ektlarini dastlabki holatda yaratish va o'rnatish, shuningdek, o'yin boshida bajarilishi kerak bo'lgan boshqa harakatlar.
- O'yin jarayoni. Bunga o'yin ob'ektlari harakati, o'yinchi harakatlari, olingan ballarni hisobga olish, shuningdek, ma'lum vaqt oralig'ida yoki tugmalarni bosish orqali bajarilishi kerak bo'lgan boshqa harakatlar kiradi.
- O'yinni tugatish. Bunga animatsiyalarni to'xtatish, g'alaba yoki mag'lubiyat haqida xabar berish va o'yin oxirida bajarilishi kerak bo'lgan boshqa harakatlar kiradi.
2. O'yinni ishga tushirish
O'yinni boshlash faqat ikki bosqichdan iborat:1-qadam: asosiy o'yin sinfini yarating.
Oʻyiningizni JavaRush oʻyin mexanizmi asosida ishlab chiqish uchun siz sinf yaratishingiz va uni Oʻyin sinfidan (com.javarush.engine.cell.Game) meros qilib olishingiz kerak. Bu sizning sinfingizga o'yin mexanizmidagi usullarni chaqirish qobiliyatini va vosita sizning usullaringizni chaqirish qobiliyatini beradi. Misol:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
2-qadam: initialize() usulini bekor qiling.
Ushbu usulda o'yinni boshlash uchun zarur bo'lgan barcha harakatlar amalga oshiriladi: o'yin maydonini yaratish, o'yin ob'ektlarini yaratish va hokazo. Siz shunchaki ushbu usulni Game sinfidan meros bo'lgan sinfda e'lon qilishingiz kerak . Misol:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
initialize() usuli main() usulining analogidir : bu yerda oʻyin uchun yozilgan barcha kodlar bajarila boshlaydi.
3. O'yin maydonini yaratish
O'yin maydonini yaratish ham faqat ikki bosqichdan iborat.1-qadam: o'yin maydonini hujayralarga bo'ling.
Butun o'yin maydoni o'yin mexanizmi tomonidan hujayralarga bo'linadi. Minimal o'lcham - 3x3, maksimal - 100x100. O'yin ekrani doimiy o'lchamga ega. Uni har xil miqdordagi hujayralarga bo'lish mumkin. Masalan, kenglik 7 va balandlik 9:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// задали размер поля 7x9 клеток
setScreenSize(7, 9);
...
}
}
O'yinni yozishda siz o'yin maydonining joriy kengligi va balandligini olishingiz kerak bo'lishi mumkin. Buning uchun int getScreenWidth() va int getScreenHeight() usullari foydalidir .
2-qadam: Tarmoqni yoqing yoki o'chiring (ixtiyoriy).
Agar sizga o'yin maydonidagi katakchalarni ajratib turuvchi qora panjara yoqmasa, uni o'chirib qo'yishingiz mumkin. Void showGrid(mantiqiy isShow) usuli ajratuvchi katakchalarni yoqadi va o'chiradi. Odatiy bo'lib, panjara ko'rsatiladi. Uni o'chirish uchun ushbu usulni noto'g'ri parametr bilan chaqiring:showGrid(false);
Natija:
showGrid(true);
4. Primitiv dastur
Misol dastur:public class MySuperGame extends Game {
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
// Выключаем отображение сетки
showGrid(false);
// Меняем фон центральной клетки на синий, и отображаем в ней “Х”
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
Ushbu misolda o'yin maydonining o'lchami 3x3 ga o'rnatilgan, panjara displey o'chirilgan va ko'k fonda markazda to'q sariq rangli yarim hujayra o'lchamidagi "X" belgisi o'rnatilgan. Bu o'yinchi o'yinni boshlaganda ko'rgan birinchi narsa bo'ladi.
5. O'yin maydonining katakchalari bilan ishlash
O'yin maydonini hujayralarga bo'lishimiz ajoyib, ammo hujayralarning o'zlari bilan nima qilishimiz mumkin? O'yin maydonining har bir katakchasi o'rnatilishi mumkin:- hujayra rangi (hujayra fon rangi);
- matn (matn yoki raqam);
- matn rangi;
- matn hajmi hujayra hajmiga nisbatan foiz sifatida.
-
void setCellColor(int x, int y, Color color) — hujayra rangini koordinatalari (x, y) bilan o'rnatadi:
setCellColor(0, 0, Color.RED); setCellColor(3, 6, Color.BLACK); setCellColor(6, 8, Color.NONE);
-
Color getCellColor(int x, int y) - koordinatalar (x, y) bilan hujayra rangini qaytaradi:
Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value) - matn qiymatini koordinatalari (x, y) bilan yacheykaga joylashtiradi:
setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
getCellValue(int x, int y) satri - koordinatalar (x, y) bilan yacheykadagi matnni qaytaradi:
String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size) - koordinatalar (x, y) bilan yacheykadagi kontent hajmini o'rnatadi. o'lcham - matn balandligi hujayra balandligining foizi sifatida:
setCellTextSize(2 , 0, 70); // 70% высоты клетки
-
int getCellTextSize(int x, int y) - koordinatalar (x, y) bilan yacheykadagi kontent hajmini qaytaradi:
int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value) - son qiymatini yacheykaga koordinatalari (x, y) bilan joylashtiradi:
setCellNumber(3, 3, 40); setCellNumber(0, 8, -8); setCellNumber(4, 1, 2222); setCellNumber(6, 6, 0);
-
int getCellNumber(int x, int y) - koordinatalar (x, y) bilan yacheykadagi sonni qaytaradi. Agar hujayrada raqam bo'lmasa, 0 ni qaytaradi:
int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
void setCellTextColor(int x, int y, Color color) — koordinatalar (x, y) bilan yacheykadagi kontent (matn) rangini o‘rnatadi:
setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y) - koordinatalari (x, y) bo'lgan katakdagi kontent (matn) rangini qaytaradi:
Color textColor = getCellTextColor(1, 3);
-
void setCellValueEx(int x, int y, Color cellColor, String qiymati) — hujayrani koordinatalari (x, y) fon rangidagi katakchani o‘rnatadiRang va kontent qiymati:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String qiymati, Color textColor) — yacheykani koordinatalari (x, y) fon rangi katakchasiRang, kontent qiymati va kontent rangi matniRang bilan o‘rnatadi:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String qiymati, Color textColor, int textSize); — katakchani koordinatalari (x, y) fon rangi katakchasini o‘rnatadiRang, kontent qiymati, kontent rangi matniRang va kontent hajmi textSize:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Rang bilan ishlash
O'yin dvigatelidagi ranglar 148 rang uchun noyob qiymatlarni o'z ichiga olgan Color enum tomonidan boshqariladi. Va shuningdek, alohida qiymat YO'Q - rangning yo'qligi. Rang bilan ishlashga misol:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
Ba'zan siz barcha mavjud ranglar qatorini olishni xohlashingiz mumkin. Buning uchun values() usulidan foydalaning . Masalan:
// переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Palitradagi rang raqamini olish juda oddiy:
Color color = Color.RED;
int redIndex = color.ordinal(); // Номер красного цвета
int blueIndex = Color.BLUE.ordinal(); // Номер синего цвета
Rangni uning raqami bo'yicha ham olishingiz mumkin:
// переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];
7. Muloqot oynalari
O'yin oxirida o'yinchi g'alaba yoki mag'lubiyat haqida xabardor qilinishi kerak. Buning uchun o'yin ekranida dialog oynasini ko'rsatadigan maxsus usul mavjud:void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Bu yerga:
- cellColor — muloqot oynasining fon rangi;
- xabar — xabar matni;
- textColor — xabar matni rangi;
- textSize — xabar matni hajmi.
8. Foydali usullar
O'yin yozishda ko'pincha tasodifiy raqamlar ishlatiladi. Tasodifiy raqamlarni olishni osonlashtirish uchun siz hurda dvigatel usullaridan foydalanishingiz mumkin:- int getRandomNumber(int max) - 0 dan (max–1) gacha bo'lgan tasodifiy butun sonni qaytaradi.
- int getRandomNumber(int min, int max) - min dan (max–1) gacha bo'lgan tasodifiy butun sonni qaytaradi.
GO TO FULL VERSION