- Муқаддима
- Оғози бозӣ
- Эҷоди майдони бозӣ
- Барномаи ибтидоӣ
- Кор бо ҳуҷайраҳои майдони бозӣ
- Кор бо ранг
- Қуттиҳои муколама
- Усулҳои муфид
- Маҳдудиятҳои муҳаррики бозӣ
1. Муқаддима
Дар амалисозии бозии компютерӣ аз ҷониби таҳиякунанда се марҳила вуҷуд дорад:- Оғози бозӣ ин амалҳои омодагӣ мебошад: муқаррар кардани андоза ва кашидани майдони бозӣ, эҷод ва насб кардани an objectҳои бозӣ дар ҳолати аввала, инчунин амалҳои дигаре, ки бояд дар оғози бозӣ анҷом дода шаванд.
- Раванди бозӣ. Ин ҳаракати an objectҳои бозӣ, амали бозигар, баҳисобгирии холҳои ба даст овардашуда, инчунин амалҳои дигареро дар бар мегирад, ки бояд дар фосилаҳои муайян ё пахш кардани тугмаҳо иҷро карда шаванд.
- Ба охир расидани бозӣ. Ин қатъи аниматсияҳо, гузориш додани ғалаба ё мағлубият ва амалҳои дигареро дар бар мегирад, ки бояд дар охири бозӣ анҷом дода шаванд.
2. Оғози бозӣ
Оғози бозӣ танҳо аз ду қадам иборат аст:Қадами 1: синфи асосии бозӣ эҷод кунед.
Барои таҳияи бозии худ дар асоси муҳаррики бозии JavaRush, шумо бояд синф эҷод кунед ва онро аз синфи Game (com.javarush.engine.cell.Game) мерос гиред. Ин ба синфи шумо имкон медиҳад, ки усулҳоро дар муҳаррики бозӣ занг занад ва қобorяти муҳаррик барои даъват кардани усулҳои шумо. Мисол:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Қадами 2: усули initialize()-ро бекор кунед.
Дар ин усул тамоми амалҳои зарурӣ барои оғози бозӣ сурат мегиранд: эҷоди майдони бозӣ, сохтани an objectҳои бозӣ ва ғайра. Шумо танҳо лозим аст, ки ин усулро дар синфе эълон кунед, ки аз синфи Game мерос мегирад . Мисол:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
Усули initialize() аналоги усули main() мебошад : дар он ҷо тамоми codeи барои бозӣ навишташуда иҷро мешавад.
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) шабакаи ҷудокунандаи ҳуҷайраҳоро фаъол ва хомӯш мекунад. Бо нобаёнӣ, шабака нишон дода мешавад. Барои хомӯш кардани он, ин усулро бо параметри бардурӯғ даъват кунед: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, String value) - арзиши матнро дар чашмак бо координатҳо (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 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);
-
Ранг getCellTextColor(int x, int y) - ранги мундариҷаро (матн) дар чашмак бо координатҳо (x, y) бармегардонад:
Color textColor = getCellTextColor(1, 3);
-
void setCellValueEx(int x, int y, Color cellColor, арзиши сатр) — ячейкаро бо координатаҳои (x, y) ячейкаи ранги пасзаминаиРанг ва арзиши мундариҷа муқаррар мекунад:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, Арзиши сатр, Color textColor) — ячейкаро бо координатҳои (x, y) ячейкаи ранги пасзаминаРанг, арзиши мундариҷа ва ранги матни мундариҷа муқаррар мекунад:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, ячейкаи ранга, арзиши сатр, ранги матни ранг, int textSize); — ячейкаро бо координатҳои (x, y) ячейкаи ранги заминаРанг, арзиши мундариҷа, матни ранги мундариҷаРанг ва андозаи мундариҷаи textSize муқаррар мекунад:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Кор бо ранг
Рангҳо дар муҳаррики бозӣ аз ҷониби enum Color идора карда мешаванд , ки дорои арзишҳои беназир барои 148 ранг мебошанд. Ва инчунин арзиши махсус ҲЕҶ - набудани ранг. Намунаи кор бо ранг: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 то (макс–1) фаро мегирад.
- int getRandomNumber(int min, int max) - адади тасодуфиро аз min то (макс–1) фаро мегирад.
GO TO FULL VERSION