JavaRush /Java блогы /Random-KK /JavaRush жүйесіндегі «Ойындар» бөлімі: Ойын қозғалтқышы

JavaRush жүйесіндегі «Ойындар» бөлімі: Ойын қозғалтқышы

Топта жарияланған
JavaRush ұсынған «Ойындар» - танымал компьютерлік ойындарды жазуға арналған үлкен тапсырма жобаларын қамтитын жаңа бөлім. Оларды жасау көрінгеннен оңайырақ: әрбір жоба екі ондаған қосалқы тапсырмаларға бөлінген. Тапсырмаларды кезең-кезеңімен орындау арқылы сіз өз ойыныңызды жазасыз, содан кейін оған бірегей «мүмкіндіктер» қосып, оны достарыңызбен бөлісе аласыз. БөлімОйындарда қарапайым JavaRush ойын қозғалтқышы қолданылады . Бұл мақалада біз оның негізгі ерекшеліктері және ойын жазу процесі қалай көрінетіні туралы айтатын боламыз .
  1. Кіріспе
  2. Ойынды инициализациялау
  3. Ойын алаңын құру
  4. Қарапайым бағдарлама
  5. Ойын алаңының ұяшықтарымен жұмыс
  6. Түспен жұмыс
  7. Диалогтық терезелер
  8. Пайдалы әдістер
  9. Ойын қозғалтқышының шектеулері

1. Кіріспе

Әзірлеуші ​​тарапынан компьютерлік ойынды жүзеге асырудың үш кезеңі бар:
  1. Ойынның инициализациясы дайындық әрекеттері болып табылады: ойын алаңының өлшемі мен сызбасын орнату, ойын an objectілерін бастапқы қалыпта жасау және орнату, сонымен қатар ойынның басында орындалуы керек басқа әрекеттер.

  2. Ойын процесі. Бұған ойын an objectілерінің қозғалысы, ойыншының әрекеттері, алынған ұпайларды есепке алу, сондай-ақ белгілі бір аралықтарда немесе түймелерді басу арқылы орындалуы керек басқа әрекеттер кіреді.

  3. Ойынды аяқтау. Бұл анимацияларды тоқтату, жеңіс немесе жеңіліс туралы хабарлау және ойын соңында орындалуы керек басқа әрекеттерді қамтиды.

2. Ойынды инициализациялау

Ойынды бастау екі қадамнан тұрады:

1-қадам: негізгі ойын класын жасаңыз.

JavaRush ойын механизміне негізделген ойынды дамыту үшін сізге класс жасап, оны Ойын сыныбынан (com.javarush.engine.cell.Game) мұраға алу керек. Бұл сіздің сыныпқа ойын қозғалтқышындағы әдістерді шақыру мүмкіндігін және қозғалтқыштың әдістеріңізді шақыру мүмкіндігін береді. Мысалы:
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-қадам: ойын алаңын ұяшықтарға бөліңіз.

Бүкіл ойын алаңы ойын қозғалтқышы арқылы ұяшықтарға бөлінген. Ең аз өлшемі 3х3, максимум 100х100. Ойын экранының тұрақты өлшемі бар. Оны әртүрлі жасушалар санына бөлуге болады. Мысалы, ені 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(логикалық 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. Түс getCellColor(int x, int y) - координаталары (x, y) бар ұяшық түсін қайтарады:

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String мәні) - мәтін мәнін координаталары (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 мәні) - сан мәнін ұяшыққа координаталары (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, String мәні) — ұяшықты координаттары (x, y) фондық түсті ұяшықТүс және мазмұн мәнін орнатады:

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) — ұяшықты координаттары (x, y) фондық түсті ұяшықТүс, мазмұн мәні және мазмұн түсі мәтініТүсі бар ұяшықты орнатады:

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

  3. void setCellValueEx(int ​​x, int y, Color cellColor, String мәні, Color textColor, int textSize); — ұяшықты координаттары (x, y) фондық түсті ұяшықты орнатадыТүс, мазмұн мәні, мазмұн түсі мәтініТүс және мазмұн өлшемі textSize:

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

6. Түспен жұмыс

Ойын қозғалтқышындағы түстер 148 түс үшін бірегей мәндерден тұратын Color enum арқылы басқарылады. Сондай-ақ ерекше құндылық 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. Пайдалы әдістер

Ойындарды жазу кезінде жиі кездейсоқ сандар қолданылады. Кездейсоқ сандарды алуды жеңілдету үшін қозғалтқыштың қалдықтары әдістерін қолдануға болады:
  1. int getRandomNumber(int max) – 0-ден (max–1) қоса алғанда кездейсоқ бүтін санды қайтарады.

  2. int getRandomNumber(int min, int max) - min-ден (max–1) қоса алғанда кездейсоқ бүтін санды қайтарады.

9. Ойын қозғалтқышының шектеулері

Сайтта ойындарды іске қосу үшін олар serverде JavaScript тіліне аударылады. Осыған байланысты кейбір шектеулер туындайды. Атап айтқанда, JavaRush қозғалтқышы арқылы ойындарды жазғанда, сіз файлдармен жұмыс істей алмайсыз, сондай-ақ currentTimeMillis () , setOut() , setErr() , arrayscopy() дан басқа Жүйе класының барлық әдістерін пайдалана алмайсыз . Сондай-ақ қате және шығу өрістерін пайдалануға болады . Осы шектеулерді бұза отырып, ойынды, әрине, құрастыруға және іске қосуға болады, бірақ оны жариялау мүмкін болмайды. Сондай-ақ, сіз шексіз ілмектер бар ойынды жариялай алмайсыз. Бар болғаны! Ойындар бөлімі туралы көбірек білгіңіз келсе, мына жерде көмектесе алатын пайдалы құжат бар:
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION