MIDlet Pascal
Поиск по сайту
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Яндекс.Метрика

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Понедельник, 28.05.2018, 04.01.21
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №6 - Графическое меню
Всем привет, сегодня мы научимся создавать красивое
меню в игры примерно такое:


1. Изображения.
 menuOn.png menuOff.png 2. Переменные. var menuOn:image; {- контейнер изо} menuOff:image;{- контейнер изо} keys:integer; {- вспомогатель кнопок} location:integer;{- лакация} menu:integer;{- переменная меню} StringMenu:array[1..3] of string;{- хранилище текста меню} i:integer;{- вспомогатель ЦЫКЛОВ} 3. Процедуры MenuSE,GamesSE,AutorsSE,ExitsSE; Розбераем... Procedure MenuSE; Begin if (menu=0) then menu:=1;{- если номер меню упал на 0 поднимаем его} if (menu>3) then menu:=3;{- если меню выше максимального, понижаем его} For i:=1 To 3 Do {- цыкл меню, его можно менять и сделать меню не на 3 функции, а 4,5,6,...} Begin if (menu=i) then {- если меню наведено на пункт меню, то} Begin DrawImage(menuOn, getWidth/2-55,i*50);{- открываем яркое изо} SetColor(255,255,255);{- ставим яркий цвет} End Else {- если ненаведено} Begin DrawImage(menuOff, getWidth/2-55,i*50);{- открываем тусклое изо} SetColor(150,150,150);{- ставим тусклый цвет} End; DrawText(StringMenu[i], getWidth/2-getStringWidth(StringMenu[i])/2,(i*50)+10);{- пишем текст на пункты меню} End; if (keys=GA_UP) then menu:=menu-1;{- при нажатии вверх поднимаем курсор} if (keys=GA_DOWN) then menu:=menu+1;{- при нажатии вниз опускаем курсор} if (keys=GA_FIRE) then location:=menu;{- при нажатии на меню устанавливаем локацию равной с пунктом меню} End; Procedure GamesSE; Begin SetColor(255,200,200);{- ярко красный} DrawText(StringMenu[location] ,5,5);{- пишем что за пункт выбран} End; Procedure AutorsSE; Begin SetColor(255,200,200);{- ярко красный} DrawText(StringMenu[location] ,5,5);{- пишем что за пункт выбран} SetColor(200,200,255);{- ярко синий} DrawText('vk.com/midpascal', 5,25);{- впишем автора} End; Procedure ExitsSE; Begin Halt;{- эта функция закроет приложение, тем самым инициируя быстрый выход} End; 4. Главный Цыкл. Begin menuOn:=LoadImage('/menuOn.png');{- загружаем изо} menuOff:=LoadImage('/menuOff.png');{- загружаем изо} StringMenu[1]:='Начать игру';{- подписуем пункт меню №1} StringMenu[2]:='Автор';{- подписуем пункт меню №2} StringMenu[3]:='Выход';{- подписуем пункт меню №3} Repeat keys:=keyToAction(getKeyClicked);{- обработка нажатой клавиши} SetColor(0,0,0);{- черный цвет} FillRect(0,0,getWidth,getHeight);{- зарисовуем весь экран} if (location=0) then MenuSE;{- Меню} if (location=1) then GamesSE;{- Если выбран пункт "Начать игру"} if (location=2) then AutorsSE;{- Если выбран пункт "Авторы"} if (location=3) then ExitsSE;{- Если выбран пункт "Выход"} Repaint; Delay(1); Until False; End. 5. Весь код. Program menu; var menuOn:image; menuOff:image; keys:integer; location:integer; menu:integer; StringMenu:array[1..3] of string; i:integer; Procedure MenuSE; Begin if (menu=0) then menu:=1; if (menu>3) then menu:=3; For i:=1 To 3 Do Begin if (menu=i) then Begin DrawImage(menuOn, getWidth/2-55,i*50); SetColor(255,255,255); End Else Begin DrawImage(menuOff, getWidth/2-55,i*50); SetColor(150,150,150); End; DrawText(StringMenu[i], getWidth/2-getStringWidth(StringMenu[i])/2,(i*50)+10); End; if (keys=GA_UP) then menu:=menu-1; if (keys=GA_DOWN) then menu:=menu+1; if (keys=GA_FIRE) then location:=menu; End; Procedure GamesSE; Begin SetColor(255,200,200); DrawText(StringMenu[location] ,5,5); End; Procedure AutorsSE; Begin SetColor(255,200,200); DrawText(StringMenu[location] ,5,5); SetColor(200,200,255); DrawText('vk.com/midpascal', 5,25); End; Procedure ExitsSE; Begin Halt; End; Begin menuOn:=LoadImage('/menuOn.png'); menuOff:=LoadImage('/menuOff.png'); StringMenu[1]:='Начать игру'; StringMenu[2]:='Автор'; StringMenu[3]:='Выход'; Repeat keys:=keyToAction(getKeyClicked); SetColor(0,0,0); FillRect(0,0,getWidth,getHeight); if (location=0) then MenuSE; if (location=1) then GamesSE; if (location=2) then AutorsSE; if (location=3) then ExitsSE; Repaint; Delay(1); Until False; End. Всем Спосибо, мы закончили!
Автор: Андрей Ступницкий:)
Если вы нашли ошибки/очепятки в тексте то сообщите о них на форуме
А также можете заказать программу/игру на этой странице

www.parkflyer.ru - радиоуправляемые модели, радиоуправляемые модели самолетов, магазин радиоуправляемых моделей
Роспись стен, скульптуры на заказ
Wladymyr © 2012-2018
Создать бесплатный сайт с uCoz