Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal

Ответ
 
Опции темы
Старый 14.11.2012, 14:41   #1
Matsugo
AnyKey`щик
 
Регистрация: 14.11.2012
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Печаль Помогите исправить код

Пытаюсь красиво меню оформить, но что-то я не могу его доделать.
Хочется чтобы на выбранном пункте кнопка по-другому светилась, а выходит каша. Помогите пожалуйста, я в МП еще зеленый.

Мой код:
program RPG;
Uses Picker;
var
  
m:array [0..4of string;
  
x,y,a,c,b,keyC,i:integer;
  
bg,button,buttonoff,cur,buttonon:image;
  
repboolean;

Procedure Menu;
Begin
  x
:=GetWidth;
  
y:=GetHeight;
  
a:=130;
  
b:=0;
  
rep:=true;
  
m[0]:='Game';
  
m[1]:='Options';
  
m[2]:='Help';
  
m[3]:='About';
  
m[4]:='Exit';
  
SetFont(FONT_FACE_SYSTEM,FONT_STYLE_BOLD,FONT_SIZE_SMALL);
  
bg:=LoadImage('/bg.png'); //Фон
  
button:=LoadImage('/button.png');
    
DrawImage(bg,0,0);
    
Picker.Load(button);
    
buttonoff:=Picker.GetArea(0,0,140,21); //Кнопка-фон
    
buttonon:=Picker.GetArea(0,22,140,21); //Выделенная кнопка фон
    
SetColor(255,250,205);
    for 
i:=0 to 4 do begin
    DrawImage
(buttonoff,(x-140)/2,a+i*30);
    
DrawText(m[i], (x-GetStringWidth(m[i]))/2,(a+i*30)+2);
    
keyC:=GetKeyClicked;
      if 
KeyToAction(keyC)=GA_UP then b:=b+4 mod 5;
      if 
KeyToAction(keyC)=GA_DOWN then b:=b+1 mod 5;
      if 
KeyToAction(keyC)=GA_FIRE then
      begin
        
if c=0 then Game;

        if 
c=4 then Halt;
      
end;
    
Repaint;
    
end;
end;
begin
  Menu
;
  
Delay(-1);
end
А делал я опираясь на это меню:
Program Menu;
Var
 
wihikeychcwicc_colorc_posc_cc_pos_ctimerinteger;
 
m: array [0..5of string;
 
xy: array [0..100of integer;
 
repboolean;

Procedure Stars;// Плывущие звёзды для фона меню
begin
 SetColor
(255,255,255);
 for 
i:=0 to 100 do
 
begin
 x
[i]:=x[i]-1;
 if 
x[i]<0 then x[i]:=wi;
 
Plot(x[i], y[i]);
 
end;
end;

Procedure Txt;
 
begin 

 setColor
(25500); 
 
drawText('Hello world'00); 
 
repaint;{вывод из буфера на экран
 
delay(1000); 
 
repeat
 until getKeyClicked 
<> KE_NONE;{пауза до нажатия любой клавиши}
 
end;

Procedure Menu;
 
Begin
 wi
:=GetWidth;
 
hi:=GetHeight;
 
rep:=true;
 
c:=0;
 
cw:=100;
 
c_color:=125;
 
c_c:=5;
 
c_pos:=0;
 
c_pos_c:=1;
 
timer:=0;
 for 
i:=0 to 100 do
 
begin
 x
[i]:=Random(wi);
 
y[i]:=Random(hi);
 
end;
 
m[0]:='Старт';
 
m[1]:='Настройки';
 
m[2]:='Помощь';
 
m[3]:='Рекорды';
 
m[4]:='Авторы';
 
m[5]:='Выход';
 
SetFont(FONT_FACE_SYSTEMFONT_STYLE_BOLDFONT_SIZE_LARGE);
 
ch:=GetStringHeight('X'); // Высота букв
 
repeat
SetColor
(0,0,0); FillRect(0,0,wi,hi); // Очистка экрана
Stars// Отрисовка фона меню
SetColor(0,0,0);
FillRoundRect(20, (hi-ch*6)/2wi-40ch*62020);
SetColor(255,255,255);
DrawRoundRect(20, (hi-ch*6)/2wi-40ch*62020);
SetColor(0,127,0);
for 
i:=0 to 5 do
DrawText(m[i], (wi-GetStringWidth(m[i]))/2, (hi-ch*6)/2+i*ch);// Отрисовка пунктов меню
SetColor(0,c_color,0);
DrawText('>', (wi-GetStringWidth(m[c]))/2-20+c_pos, (hi-ch*6)/2+c*ch);
key:=GetKeyClicked;
if (
key=-59) or (key=-1) or (key=50then c:=(c+5mod 6// Клавиша вверх
if (key=-60) or (key=-2) or (key=-6) or (key=56then c:=(c+1mod 6;// Клавиша вниз
if (key=53) or (key=-26) or (key=-5) or (key=-20then // Клавиша огонь
begin
 
if c=1 then Txt;

 if 
c=5 then Halt// Выход
 
end;
 
c_color:=c_color+c_c;
 if (
c_color=125) or (c_color=255then c_c:=-c_c;
 
timer:=(timer+1mod 3;
 if 
timer=0 then
 begin
 c_pos
:=c_pos+c_pos_c;
 if (
c_pos=0) or (c_pos=5then c_pos_c:=-c_pos_c;
 
end;
 
Repaint;
 
until false
 
End;
Begin
 Menu

End
(Offline)
 
Ответить с цитированием
Старый 26.11.2012, 08:26   #2
Deport
Оператор ЭВМ
 
Аватар для Deport
 
Регистрация: 06.03.2009
Сообщений: 38
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Помогите исправить код

Для начала посоветую написать код самой программы а потом уже задумываться о графике, да и чем не устраивает стандартное с формами меню, на мой взгляд самое главное что она будет делать а не то как выглядит её меню=)
__________________
Единственный способ поумнеть, играть с более умным противником — основы шахмат, 1883 г.
(Offline)
 
Ответить с цитированием
Старый 06.03.2013, 19:53   #3
Вова
AnyKey`щик
 
Регистрация: 19.02.2013
Сообщений: 17
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Помогите исправить код

Что касается графического меню, то тебе единственный совет - пользуйся Lib_Menu32 (к ней обязательно еще надо и Lib_Font32). С ней легко создашь и красивое меню и курсор, какой захочешь. Я думаю, что с твоей проблемой вопросов не должно было бы возникнуть.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
.:MaSe:. (23.08.2013)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:44.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com