Показать сообщение отдельно
Старый 14.04.2012, 09:56   #8
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Внедрение стартого меню

Вводим две переменных (допустим): текстовую/численную menu и флаг game. Текстовые переменные удобно использовать что бы не запутаться какой пункт меню за что отвечает.
Вот примерный код основного цикла с меню (как делаю я и мне это кажется вполне удобным и понятным):

...
menu$ = "main;
game% = false;

while (условие выхода из основного цикла)

     select menu$

          case "main":
              ; Рисуем и делаем то что нужно в основном меню.
              ; Допустим по клавише "Enter" мы загружаем игру, 
              ; по клавише "Esc" мы выходим из игрового меню, 
              ; а по клавише "q" выгружаем ресурсы игры из памяти.
              if (keyhit(28)) then     ;нажатие "Enter"

                    if (game = false) then
                         menu = "load";
                    end if

              else if (keyhit(1)) then     ;нажатие "Esc"

                    if (game = true) then
                         menu = "game";
                    end if

              else if (keyhit(16)) then     ;нажатие "q"

                    if (game = true) then
                         menu = "unload";
                    end if

              end if

          case "load":
              ; загружаем ресурсы
               game = true;
               menu = "game"

          case "game":
               ; выполняем все нужные действия игры
               if (keyhit(1)) then
                    menu = "main";
               end if

          case "unload":
               ; выгружаем ресурсы игры
               game = 0;
               menu = "main";

     end select

wend

...
Как это работает.

При запуске приложения game = 0, т.е. игра не загружена. Мы попадаем в основное меню (menu = "main").

Полазили по основному меню, нажали на "Esc" - ничего не произошло, т.к. сейчас game = false.

Захотелось поиграть - нажали клавишу "Enter". По условию попадаем в меню загрузки (menu = "load"). В этом меню пользователь ничего не делает, игра загружает все ресурсы. После того как загрузились все ресурсы ставим флаг game = true и переходим в игру.

Поигрались, захотели в меню, жмём "Esc", переходим в menu = "main". Теперь если мы нажмём клавишу "Enter" - ничего не произойдёт, т.к. game = true и загружать нам ничего ненадо. Для возврата к игре жмём "Esc", при этом вернёмся в меню menu = "game".

Захотели выгрузить ресурсы игры (допустим хотим начать заново), жмём "q". приложение переходит в menu = "unload", выгружает все нужные (точнее уже ненужные) нам ресурсы, ставит флаг game = false и возвращется в menu = "main". Теперь у нас заработает загрузка игры по нажатию клавиши "Enter" и не будет ничего происходить по нажатию клавиш "Esc" и "q", т.к. флаг game = false.

Вот как то так. Грубый набросок, но основную мысль вроде бы донёс
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (14.04.2012)