JavaRush /Блоги Java /Random-TG /Бахши "Бозиҳо" дар JavaRush: Муҳаррики бозӣ

Бахши "Бозиҳо" дар JavaRush: Муҳаррики бозӣ

Дар гурӯҳ нашр шудааст
"Бозиҳо" аз JavaRush бахши навест, ки дорои лоиҳаҳои калон барои навиштани бозиҳои маъмули компютерӣ мебошад. Эҷоди онҳо осонтар аз он аст, ки ба назар мерасад: ҳар як лоиҳа ба ду даҳҳо зервазифаҳо тақсим карда мешавад. Бо иҷрои қадам ба қадам супоришҳо, шумо бозии худро менависед ва пас шумо метавонед ба он "хусусиятҳои" беназир илова кунед ва онро бо дӯстон мубодила кунед. БобДар бозиҳо муҳаррики оддии JavaRush истифода мешаванд . Дар ин мақола мо дар бораи хусусиятҳои асосии он сӯҳбат хоҳем кард ва раванди навиштани бозӣ чӣ гуна аст.
  1. Муқаддима
  2. Оғози бозӣ
  3. Эҷоди майдони бозӣ
  4. Барномаи ибтидоӣ
  5. Кор бо ҳуҷайраҳои майдони бозӣ
  6. Кор бо ранг
  7. Қуттиҳои муколама
  8. Усулҳои муфид
  9. Маҳдудиятҳои муҳаррики бозӣ

1. Муқаддима

Дар амалисозии бозии компютерӣ аз ҷониби таҳиякунанда се марҳила вуҷуд дорад:
  1. Оғози бозӣ ин амалҳои омодагӣ мебошад: муқаррар кардани андоза ва кашидани майдони бозӣ, эҷод ва насб кардани an objectҳои бозӣ дар ҳолати аввала, инчунин амалҳои дигаре, ки бояд дар оғози бозӣ анҷом дода шаванд.

  2. Раванди бозӣ. Ин ҳаракати an objectҳои бозӣ, амали бозигар, баҳисобгирии холҳои ба даст овардашуда, инчунин амалҳои дигареро дар бар мегирад, ки бояд дар фосилаҳои муайян ё пахш кардани тугмаҳо иҷро карда шаванд.

  3. Ба охир расидани бозӣ. Ин қатъи аниматсияҳо, гузориш додани ғалаба ё мағлубият ва амалҳои дигареро дар бар мегирад, ки бояд дар охири бозӣ анҷом дода шаванд.

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:
Боб
Лутфан таваҷҷӯҳ намоед, ки рақамгузории ячейка аз кунҷи чапи болои сар мешавад. Барои муқаррар кардани андозаи майдони бозӣ, усули void setScreenSize (int width, int height) -ро истифода баред . Он андозаи майдони бозиро муқаррар мекунад. Он ҳамчун параметр шумораи ҳуҷайраҳоро ба таври уфуқӣ (паҳно) ва амудӣ (баландӣ) мегирад. Он одатан як маротиба ҳангоми оғози бозӣ даъват карда мешавад. Мисол:
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. Кор бо ҳуҷайраҳои майдони бозӣ

Далели он, ки мо метавонем майдони бозиро ба ҳуҷайраҳо тақсим кунем, бузург аст, аммо мо бо худи ҳуҷайраҳо чӣ кор карда метавонем? Ҳар як ячейкаи майдони бозӣ метавонад муқаррар карда шавад:
  • ранги ҳуҷайра (ранги заминаи ҳуҷайра);
  • матн (матн ё рақам);
  • ранги матн;
  • андозаи матн ҳамчун фоиз нисбат ба андозаи чашмак.
Биёед усулҳои кор бо ҳуҷайраҳои майдони бозиро дида бароем :
  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. Сатри 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% высоты клетки

  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. Ранг getCellTextColor(int x, int y) - ранги мундариҷаро (матн) дар чашмак бо координатҳо (x, y) бармегардонад:

    Color textColor = getCellTextColor(1, 3);
Барои роҳат, якчанд усулҳои setCellValueEx() бо маҷмӯи параметрҳои гуногун мавҷуданд :
  1. void setCellValueEx(int ​​x, int y, Color cellColor, арзиши сатр) — ячейкаро бо координатаҳои (x, y) ячейкаи ранги пасзаминаиРанг ва арзиши мундариҷа муқаррар мекунад:

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

  2. void setCellValueEx(int x, int y, Color cellColor, Арзиши сатр, Color textColor) — ячейкаро бо координатҳои (x, y) ячейкаи ранги пасзаминаРанг, арзиши мундариҷа ва ранги матни мундариҷа муқаррар мекунад:

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

  3. 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. Усулҳои муфид

Ҳангоми навиштани бозиҳо рақамҳои тасодуфӣ аксар вақт истифода мешаванд. Барои осон кардани гирифтани рақамҳои тасодуфӣ, шумо метавонед усулҳои муҳаррикро истифода баред:
  1. int getRandomNumber(int max) - адади тасодуфиро аз 0 то (макс–1) фаро мегирад.

  2. int getRandomNumber(int min, int max) - адади тасодуфиро аз min то (макс–1) фаро мегирад.

9. Маҳдудиятҳои муҳаррики бозӣ

Барои иҷро кардани бозиҳо дар сайт, онҳо дар server ба JavaScript тарҷума карда мешаванд. Дар робита ба ин, баъзе маҳдудиятҳо ба миён меоянд. Аз ҷумла, ҳангоми навиштани бозиҳо бо истифода аз муҳаррики JavaRush, шумо наметавонед бо файлҳо кор кунед ва на ҳама усулҳои синфи System , ба истиснои currentTimeMillis() , setOut() , setErr() , arrayscopy() -ро истифода баред . Шумо инчунин метавонед майдонҳои хато ва берунро истифода баред . Бо вайрон кардани ин маҳдудиятҳо, бозӣ, албатта, метавонад тартиб дода шавад ва иҷро карда шавад, аммо интишори он имконнопазир аст. Шумо инчунин наметавонед бозӣеро бо ҳалқаҳои беохир нашр кунед. Ҳамааш ҳамин! Агар шумо хоҳед, ки дар бораи бахши Бозиҳо маълумоти бештар гиред, дар ин ҷо ҳуҷҷатҳои муфиде ҳастанд, ки метавонанд кӯмак расонанд:
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION