Игровой цикл

Содержание

Слайд 2

Игровой цикл

Игровой цикл

Слайд 3

Игровой цикл в коде Каждый из пунктов меню – отдельный экран.

Игровой цикл в коде

Каждый из пунктов меню – отдельный экран.
Каждый отдельный

экран будет отдельным классом
Main() никуда не денется, с него начнется работа программы, запустится цикл и будет выполнен переход к первому экрану.
Слайд 4

Система евентов (событий) Event EnterFrame MouseEvent Click MouseMove KeyboardEvent KeyUp KeyDown

Система евентов (событий)

Event

EnterFrame

MouseEvent

Click

MouseMove

KeyboardEvent

KeyUp

KeyDown

Слайд 5

Свои собственные эвенты! Создаем переменную String и задаем ей какое-то значение.

Свои собственные эвенты!

Создаем переменную String и задаем ей какое-то значение. (например,

GOTO_MENU_STRING) – она будет определять наш эвент:
var GOTO_MENU_STRING : String = “GAMEEVENT_GOTO_MENU”;
Создаем сам эвент. Делаем его public static, чтобы до него можно было добраться извне. Создаем эвент СТРОГО в классе Main.
public static var GAMEEVENT_GOTO_MENU: Event;
GAMEEVENT_GOTO_MENU = new Event(GOTO_MENU_STRING);
Установка листнера на этот эвент не меняется:
addEventListener(GOTO_MENU_STRING, GotoMenu);
Этот эвент надо как-то генерировать, чтобы листнер на него среагировал. Делаем вот так:
dispatchEvent (Main.GAMEEVENT_GOTO_MENU);
Слайд 6

Делаем классы-экраны. Сделаем наши эвенты (*) в старом HaXe не new(),

Делаем классы-экраны.

Сделаем наши эвенты

(*) в старом HaXe не new(), а init()
(**)

если тут что-то еще написано – УДАЛЯТЬ НЕ НАДО!

*

**

Слайд 7

Делаем классы-экраны RightClick

Делаем классы-экраны

RightClick

Слайд 8

Делаем классы-экраны Дальше на эту папку правой кнопкой -> Add ->

Делаем классы-экраны

Дальше на эту папку правой кнопкой -> Add -> New

Class. Назвать можно как угодно.
Слайд 9

Делаем классы-экраны. После этих манипуляций в верхушке каждого класса-экрана будет написано

Делаем классы-экраны.

После этих манипуляций в верхушке каждого класса-экрана будет написано
package

classes;
В импорты класса Main добавляем строку
import classes.*;
Это сделает импорт всего содержимого папки classes;
Слайд 10

Делаем классы-экраны. Опишем класс-экран Старт

Делаем классы-экраны.

Опишем класс-экран Старт

Слайд 11

Делаем классы-экраны. Опишем класс-экран Меню

Делаем классы-экраны.

Опишем класс-экран Меню

Слайд 12

Делаем классы-экраны. Создадим эти экраны и свяжем их при помощи нашего

Делаем классы-экраны.

Создадим эти экраны и свяжем их при помощи нашего эвента

(все делается внутри класса Main)
GAMEEVENT_GOTO_MENU
Слайд 13

Опишем класс-экран Игра

Опишем класс-экран Игра

Слайд 14

Делаем классы-экраны. Создадим экран Игры и свяжем его с экраном Меню эвентом GAMEEVENT_GOTO_GAME

Делаем классы-экраны.

Создадим экран Игры и свяжем его с экраном Меню эвентом
GAMEEVENT_GOTO_GAME

Слайд 15

Делаем классы-экраны. Классы-экраны Победа и Поражение В ДАННОМ СЛУЧАЕ полностью повторят

Делаем классы-экраны.

Классы-экраны Победа и Поражение В ДАННОМ СЛУЧАЕ полностью повторят класс-экран

Старт. Свяжем экран Игра с ними.
Слайд 16

Слайд 17

Делаем классы-экраны. Последний штрих: свазываем экраны Победа и Поражение с экраном Меню

Делаем классы-экраны.

Последний штрих: свазываем экраны Победа и Поражение с экраном Меню

Слайд 18

Итог. Переключение между Игрой и Поражением (Победой) В ДАННОМ СЛУЧАЕ получилось

Итог.

Переключение между Игрой и Поражением (Победой) В ДАННОМ СЛУЧАЕ получилось ручное

(по клику мыши).
При создании игры достаточно внутри класса GameScreen_Game достаточно будет в нужный момент вызывать функции GotoWin и GotoLose, предварительно сделав их безаргументными (очистить содержимое круглых скобок в заголовке).
Сама игра создается во время обработки эвента GAMEEVENT_GOTO_GAME и убивается при обработке эвентов GAMEEVENT_GOTO_WIN и GAMEEVENT_GOTO_LOSE, что гарантирует полное пересоздание игры (каждый раз будет начинать именно новую игру и если там используются какие-то алгоритмы генерации – они будут выполняться заново)