Приветствую Вас, Гость
Главная » Статьи » Статьи других игроделов.

Урок по созданию текстового меню от Fade'a
Сегодня я расскажу Вам о том, как создать мультиязычное, текстовое меню с настройками, абсолютно без графики, чисто на коде. 
Итак поехали! 
Создаём объекты без спрайтов: 
o_main - сам объект, в котором будет наше дальнейшее меню. 
o_settings - здесь будут настройки языка и экрана. 
Создаём фон: fnt_russian 

С объектами разобрались, теперь переходим к написанию кода. 
Открываем объект o_main и ему в Create пишем: 
menu = 'main' //переменная, которая будет служить переходом между меню. В самом начале она равна 'main' 
select = 1 /*Текущий выбор пункта меню. допустим пункты в меню идут в такой последовательности: 
New Game 
Load Game 
Quit 
Тогда значит, если select будет равняться двум, будет выбран второй пункт меню "Load Game". Думаю мою логику и принцип поняли. */ 
maxbtn = 5 //Переменная служит для того, что-бы в определённом меню задавать определённое кол-во пунктов меню, чтобы например, если select == 5, а пунктов меню всего 3, то указатель просто исчезнет с вида. 
menu_x = 250 //Положение меню по оси Х 
menu_y = 240 //Положение меню по оси У 
title_x = 250 //Положение названия меню по оси Х 
title_y = 210/ /Положение названия меню по оси У 

//Далее создаём переменные, содержащие текст, который будет использоваться в меню 
text_new_game = 'New Game' //Пункт "Новая игра" 
text_load = 'Load' // Пункт "Загрузить" 
text_info = 'About' //Ну и так далее... 
text_quit = 'Quit' 
text_continue = 'Continue' 
text_main_menu = 'Main Menu' 
text_options = 'Options' 
text_language = 'Language' 
text_back = 'Back' 
text_screen = 'Resolution' 
text_pause = 'Pause'

Переменные объявили, теперь переходим в Step этого-же объекта. 

Code
if keyboard_check_pressed(vk_up) {select -= 1} //Если нажата стрелка UP, то уменьшаем переменную выбора пунктов на 1 
if keyboard_check_pressed(vk_down) {select += 1} //Если нажата стрелка DOWN, то увеличиваем переменную выбора пунктов на 1 
if select > maxbtn {select = 1} //Тут делаем ограничение выбора пунктов, в зависимости от меню 
if select < 1 {select = maxbtn} 
if global.resolution > 2 {global.resolution = 1} //Тут делаем ограничение переменной настроек экрана 
if global.resolution < 1 {global.resolution = 2} 
if global.switch_language > 2 {global.switch_language = 1} //Тут делаем ограничение переменной смены языка 
if global.switch_language < 1 {global.switch_language = 2} 

//Теперь переходим к созданию настройки переключения языка 
if global.switch_language == 1 { //Если переменная настр. языка равна 1, то переменным текста присваиваем англ. текст 
text_new_game = 'New Game' 
text_load = 'Load' 
text_info = 'About' 
text_quit = 'Quit' 
text_continue = 'Continue' 
text_main_menu = 'Main Menu' 
text_options = 'Options' 
if global.switch_language == 1 text_language = 'Language: English' 
text_back = 'Back' 
if global.resolution == 1 text_screen = 'Fullscreen: off' 
if global.resolution == 2 text_screen = 'Fullscreen: on' 
text_pause = 'Pause' 

if global.switch_language == 2 {//Если переменная настр. языка равна 2, то переменным текста присваиваем рус. текст 
text_new_game = 'Новая игра' 
text_load = 'Загрузить' 
text_info = 'О игре' 
text_quit = 'Выход' 
text_continue = 'Продолжить' 
text_main_menu = 'Главное меню' 
text_options = 'Опции' 
if global.switch_language == 2 text_language = 'Язык: Русский' 
text_back = 'Назад' 
if global.resolution == 1 text_screen = 'Фуллскрин: выкл.' 
if global.resolution == 2 text_screen = 'Фуллскрин: вкл.' 
text_pause = 'Пауза' 

//Параметры разрешения экрана 
rm = room_get_name(self) 
if global.resolution == 1 { //если переменная разр. экрана равна 1, то переводим игру в оконный режим 
window_set_fullscreen(0) 

if global.resolution == 2 { 
window_set_fullscreen(1)//если переменная разр. экрана равна 2, то переводим игру в полноэкранный режим 
window_set_sizeable(1) 


if menu == 'options' {maxbtn = 3} //Тут для каждого меню устанавливаем кол-во пунктов 
if menu == 'menu' {maxbtn = 5} 
if menu == 'pause' {maxbtn = 2} 
if keyboard_check_pressed(vk_escape) { //Если нажата клавиша Enter и мы в игре, то объекты деактивируются и игра переходит в режим паузы 
if menu == 'game' { 
instance_deactivate_all(true) 
menu = 'pause' 



if keyboard_check_pressed(vk_enter) { 
if menu == 'main' { 
if select == 1 {room_goto(level_1); menu = 'game'} 
if select == 2 {/*game_load('gamesave.inc')*/menu = 'options' select = 0} 
if select == 3 {menu = 'options'} 
if select == 4 {show_info()} 
if select == 5 {game_end()} 

if menu == 'pause' { 
if select == 1 {instance_activate_all(); menu = 'game'} 
if select == 2 {menu = 'main'; maxbtn = 5; select = 0} 

if menu == 'options' { 
if select == 1 {global.switch_language += 1} 
if select == 2 {global.resolution += 1} 
if select == 3 {menu = 'main'; maxbtn = 5; select = 0} 

}


Потом создаём событие Draw и вставляем туда код: 

Code
draw_set_font(fnt_russian) 
draw_text(100,100,""+string(menu)) 
if menu == 'main' { 
draw_text(title_x,title_y,""+string(text_main_menu)) 
draw_line(250,233,350,233) 
if select == 1 {draw_text(menu_x,menu_y,"> "+string(text_new_game)+"#"+string(text_load)+"#"+string(text_options)+"#"+string(text_info)+"#"+string(text_quit))} 
if select == 2 {draw_text(menu_x,menu_y,""+string(text_new_game)+"#> "+string(text_load)+"#"+string(text_options)+"#"+string(text_info)+"#"+string(text_quit))} 
if select == 3 {draw_text(menu_x,menu_y,""+string(text_new_game)+"#"+string(text_load)+"#> "+string(text_options)+"#"+string(text_info)+"#"+string(text_quit))} 
if select == 4 {draw_text(menu_x,menu_y,""+string(text_new_game)+"#"+string(text_load)+"#"+string(text_options)+"#> "+string(text_info)+"#"+string(text_quit))} 
if select == 5 {draw_text(menu_x,menu_y,""+string(text_new_game)+"#"+string(text_load)+"#"+string(text_options)+"#"+string(text_info)+"#> "+string(text_quit))} 

if menu == 'options' { 
draw_text(title_x,title_y,""+string(text_options)) 
draw_line(250,233,350,233) 
if select == 1 {draw_text(menu_x,menu_y,"> "+string(text_language)+"#"+string(text_screen)+"##"+string(text_back))} 
if select == 2 {draw_text(menu_x,menu_y,""+string(text_language)+"#> "+string(text_screen)+"##"+string(text_back))} 
if select == 3 {draw_text(menu_x,menu_y,""+string(text_language)+"#"+string(text_screen)+"##> "+string(text_back))} 

if menu == 'pause' { 
draw_text(title_x,title_y,""+string(text_pause)) 
draw_line(250,233,350,233) 
if select == 1 {draw_text(menu_x,menu_y,"> "+string(text_continue)+"#"+string(text_main_menu))} 
if select == 2 {draw_text(menu_x,menu_y,""+string(text_continue)+"#> "+string(text_main_menu))} 
}


Открываем объект o_settings и ему в Create пишем: 

Code
global.language = 'English' 
global.resolution = 1 
global.switch_language = 1


Поздравляю! Вы создали текстовое меню!


Источник: http://gcup.ru/forum/36-14581-1
Категория: Статьи других игроделов. | Добавил: ШизоФФ (08.11.2012)
Просмотров: 470 | Теги: урок, Пример, Game Maker, как, создать, текстовое, Меню | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]