UniDev - Programação de Jogos • View topic - menu com mouse


[ +/- ] [ Hoje é 09 Set 2010, 19:34 ]


Post a new topicWrite comments Page 1 of 1   [ 5 posts ]
Author Message
 Post subject: menu com mouse
PostPosted: 12 Out 2009, 14:49 
Membro
User avatar

Joined: 12 Out 2009, 14:44
Posts: 4
Location: Espera Feliz - MG
olá galera, sou um estudante universitário cujo tcc é um jogo desenvolvido com a game space lib, e eu consegui criar um menu que responde ao teclado, mas to com problema em fazer o menu responder ao mouse, alguém poderia me ajudar?

eis a struct base:
Code:
//Base dos Itens de Menu
struct Item_Menu{
     void Set(){
          dwColor = GS_ARGB(255,255,255,0);//ajusta a cor do texto quando este estiver selecionado
     }
     void Unset(){
          dwColor = GS_ARGB(100,255,255,0);//define a cor do texto quando não estiver selecionado
     }
     float posx, posy;//coordenadas x e y para o texto do menu
     char *szText;//quantidade máxima de caracteres por linha do menu
     GS_DWORD dwColor;//objeto que armazenará a cor do texto
     bool onMouseOver(GS_VECTOR2 mouseXY){
          if((mouseXY.x >= posx)^(mouseXY.x <= (posx+80))^(mouseXY.y >= posy)^(mouseXY.x <= (posy+20)))//verifica coordenada x e y
              return true;
          else
              return false;
     }
     bool onMouseClick(bool seta,GAMESPACE_INPUT_HANDLER mouseBtn){
          if(seta){
              if(mouseBtn.GetLeftClickState() == GSKS_HIT)
                  return true;
              else
                  return false;
          }
     }     
};

a montagem do menu principal:
Code:
//menu principal
           Item_Menu menuP[3];
                menuP[0].posx = 120;
                menuP[0].posy = 40;
                menuP[0].szText = "Iniciar";
      menuP[0].Set();
                menuP[1].posx = 120;
                menuP[1].posy = 65;
                menuP[1].szText = "Opções";
                menuP[1].Set();
                menuP[2].posx = 120;
                menuP[2].posy = 90;
                menuP[2].szText = "Sair";
                menuP[2].Set();
Code:
//impressão dos menus
                if(j_Estado == Menu_P){
                    if(mI>=pItems){
                            mI = 0;
                    }
                    if(mI < 0){
                            mI = pItems-1;
                    }
                    for(int i = 0;i<3;i++){
                        if((mI ==  i)||(menuP[i].onMouseOver(gsInput.GetCursorF(&gsVideo)))){
                            menuP[i].Set();
                            gsInpunt.PrintText(GS_VECTOR2(menuP[i].posx,menuP[i].posy),menuP[i].szText,"Verdana",20,menuP[i].dwColor);
                        }
                        else{
                            menuP[i].Unset();
                            gsInpunt.PrintText(GS_VECTOR2(menuP[i].posx,menuP[i].posy),menuP[i].szText,"Verdana",20,menuP[i].dwColor);
                  }
                    }
Code:
//movimenta pelos menus
            if(gsInput.KeyState(GSK_DOWN) == GSKS_HIT || gsInput.GetWheelState() < 0.0f){
                mI++;
            }
            if(gsInput.KeyDown(GSK_UP) == GSKS_HIT || gsInput.GetWheelState() < 0.0f){
                mI--;
            }


Last edited by Alespace on 12 Out 2009, 22:36, edited 1 time in total.

Topo
 Profile  
 
 Post subject: Re: menu com mouse
PostPosted: 12 Out 2009, 21:49 
Administrador
User avatar

Joined: 30 Ago 2002, 19:16
Posts: 440
Location: Brasil
Que tipo de problema exatamente você está tendo?
Poste o código com as tags [code ] [/code ] para ele vir identado. Quando está tudo alinhado na esquerda fica difícil de ler.

PS.: só por curiosidade, qual é o curso?

_________________
André Santee
ImageEthanon Engine: http://www.asantee.net/ethanon/
Página pessoal: http://www.asantee.net/


Topo
 Profile  
 
 Post subject: Re: menu com mouse
PostPosted: 12 Out 2009, 22:39 
Membro
User avatar

Joined: 12 Out 2009, 14:44
Posts: 4
Location: Espera Feliz - MG
era saber quando o mouse estiver em cima do item de menu e quando ao se clicar com o botão esquerdo do mouse saber qual linha do menu estou clicando. pois os metodos onMouseOver e onMouseClick não existem na GSL, sendo assim tive que criar algo que se aproxime


Topo
 Profile  
 
 Post subject: Re: menu com mouse
PostPosted: 12 Out 2009, 23:05 
Administrador
User avatar

Joined: 30 Ago 2002, 19:16
Posts: 440
Location: Brasil
A GSL não oferece esse recurso por ser simplesmente uma questão de lógica.
Para fazer isso você precisa saber exatamente a posição (p) e tamanho (t) de cada botão, além, é claro, da posição do cursor (m).
O algoritmo é o seguinte:
Code:
if (m.x > p.x && m.x < p.x+t.x &&
    m.y > p.y && m.y < p.y+t.y)
{
    // o cursor está sobre esse botão
}

_________________
André Santee
ImageEthanon Engine: http://www.asantee.net/ethanon/
Página pessoal: http://www.asantee.net/


Topo
 Profile  
 
The following user would like to thank andrew1b for his or her post: Guest
 Post subject: Re: menu com mouse
PostPosted: 10 Jan 2010, 20:28 
Membro

Joined: 01 Jan 2008, 09:16
Posts: 9
Location: Brasil
André, Aquela idéia de colisão de que falei resolveria este problema fácil...


Topo
 Profile  
 
Display posts from previous:  Sort by  
Post a new topicWrite comments Page 1 of 1   [ 5 posts ]
Similar topics
selecionar objeto com o mouse
Forum: Allegro
Author: yargonxp
Replies: 2
Menu Do Jogo no XNA
Forum: XNA Game Studio
Author: ebc2006
Replies: 2
Programas FullScreen travam meu mouse...
Forum: Allegro
Author: edvardjr
Replies: 2
Start Menu Portable
Forum: Programação Windows
Author: kinight
Replies: 4
Menu - Not Purchased
Forum: C# e programação .NET
Author: weissengeist
Replies: 4
Topo


Who is online

Users browsing this forum: Nenhum usuario registrado and 1 guest


Voce não pode criar topicos neste forum
Voce não pode responder topicos neste forum
Voce nao pode editar seu post neste forum
Voce nao pode deletar seu post neste forum

Search for:
Jump to:  



Powered by phpBB ©

Virtual Object Informática Ltda. Fone/Fax: (15)3231-6840

Portal XL 5.0 ~ Premod 0.2 phpBB SEO