Descrição: Ensina como personalizar um menu e controla-lo com o mouse.
Nível de dificuldade: Iniciante.
Requerimentos: Game Maker 8.
Antes de mais nada "Oi, Como vai você?", vou começar mais um tutorial onde explicarei como controlar um menu pelo mouse, e personaliza-lo com sprites e funções de desenho.
Então vamos deixar de papo e começar.
Antes de mais nada vamos colocar as variáveis que nos serão necessárias para criar nosso menu.
Código: Selecionar todos
opc = 1; // Opção que estará selecionada ao começar o jogo.
men_opc = 3; // Número de Opções que terá nosso menu.
Código: Selecionar todos
// Controlando menu pelo 'Teclado'.
if (keyboard_check_pressed(vk_up)) then
{
opc -= 1;
}
if (keyboard_check_pressed(vk_down)) then
{
opc += 1;
}
if (opc > men_opc) then
{
opc = 1;
}
if (opc < 1) then
{
opc = men_opc;
}
if (keyboard_check_pressed(vk_enter)) then
{
if (opc = 1) then
{
show_message('Você iniciou o jogo.');
}
if (opc = 2) then
{
show_message('Você entrou no menu opções.');
}
if (opc = 3) then
{
show_message('Você optou por sair do jogo.');
}
}
No menu que criei acima usei três sprites para as opções vocês poderão utilizar sprites ou então desenhar as opções na tela com a função draw_text, mas aqui nós não iremos utiliza-lá.
Como já criamos a seleção então primeiro vou ensinar como criar a personalização do menu, vamos lá.
Eu particularmente como já havia dito usei três sprites então o que eu fiz primeiramente desenhei essas sprites na room então vamos desenhar as nossas.
Código: Selecionar todos
background_color = c_black; // Define a cor do background como sendo a cor preta.
draw_sprite(SprIniciar,0,16,165); // Desenha a sprite Iniciar na posição definida.
draw_sprite(SprOpcoes,0,16,205);// Desenha a sprite Opções na posição definida.
draw_sprite(SprSair,0,16,245);// Desenha a sprite Sair na posição definida.
Código: Selecionar todos
background_color = c_black; // Define a cor do background como sendo a cor preta.
draw_sprite(SprIniciar,0,16,165); // Desenha a sprite Iniciar na posição definida.
draw_sprite(SprOpcoes,0,16,205);// Desenha a sprite Opções na posição definida.
draw_sprite(SprSair,0,16,245);// Desenha a sprite Sair na posição definida.
switch(opc)
{
case 1: draw_rectangle_color(0,160,room_width,200,c_red,c_red,c_white,c_white,0); break;
case 2: draw_rectangle_color(0,200,room_width,240,c_red,c_red,c_white,c_white,0); break;
case 3: draw_rectangle_color(0,240,room_width,280,c_red,c_red,c_white,c_white,0); break;
}
O porque disso é que o Game Maker executa seus códigos de acordo como eles foram escritos e como desenhamos nossa sprite antes do nosso retângulo ela ficará por trás do mesmo, para contornar isso e só inverter a ordem dos códigos, deixando-os assim.
Código: Selecionar todos
switch(opc)
{
case 1: draw_rectangle_color(0,160,room_width,200,c_red,c_red,c_white,c_white,0); break;
case 2: draw_rectangle_color(0,200,room_width,240,c_red,c_red,c_white,c_white,0); break;
case 3: draw_rectangle_color(0,240,room_width,280,c_red,c_red,c_white,c_white,0); break;
}
background_color = c_black;
draw_sprite(SprIniciar,0,16,165);
draw_sprite(SprOpcoes,0,16,205);
draw_sprite(SprSair,0,16,245);
O que iremos fazer é simples pois iremos fazer o seguinte: Caso o ponteiro do mouse esteja no eixo y entre uma certa posição ele irá selecionar uma certa opção, e como iremos definir essa posição do nosso mouse é simples pois ela será a altura do nosso retângulo desenhado, sendo assim temos as seguintes delimitações para o mouse.
- Para ele selecionar a primeira opção ele terá que está entre a posição (160, 200);
- Para ele selecionar a segunda opção ele terá que está entre a posição (200, 240);
- Para ele selecionar a terceira opção ele terá que está entre a posição (240, 280).
Como já sabemos as delimitações do mouse e só fazer nosso código.
Código: Selecionar todos
// Controlando menu pelo 'Mouse'.
if (mouse_y <= 200 and mouse_y >= 160) then // Se a posição do mouse no eixo y for entre 200, 160;
{
opc = 1; // A var opc e igual a 1;
if (mouse_check_button_pressed(mb_left)) then // E se ele clicar com o botão esquerdo enquanto estiver nessa posição ele executará o Código abaixo.
{
show_message('Você iniciou o jogo.');
}
}
if (mouse_y <= 240 and mouse_y >= 200) then
{
opc = 2;
if (mouse_check_button_pressed(mb_left)) then
{
show_message('Você entrou no menu opções.');
}
}
if (mouse_y <= 280 and mouse_y >= 240) then
{
opc = 3;
if (mouse_check_button_pressed(mb_left)) then
{
show_message('Você optou por sair do jogo.');
}
}