Obrigado por visitar a The Game Makers Brasil |
Lista E Mais de 4 opções
Lista E Mais de 4 opções
Boa noite, espero que possam me ajudar em duas duvidas:
Uma como faço uma lista, exemplo daqueles que você vê em RPGs quando você vai para uma loja, e possui o nome, valor, descrição e uma imagem do item?
E como faço para ter mais de 4 opções, já usei o show_message_ext, mas só pode ter 3 opções, e no meu caso vou usar 5 opções.
Uma como faço uma lista, exemplo daqueles que você vê em RPGs quando você vai para uma loja, e possui o nome, valor, descrição e uma imagem do item?
E como faço para ter mais de 4 opções, já usei o show_message_ext, mas só pode ter 3 opções, e no meu caso vou usar 5 opções.
- Denis Lemos
- Membro
- Reações: 0
- Mensagens: 49
-
Re: Lista E Mais de 4 opções
Como você mesmo já escreveu, você deve aprender a usar "Ds List" ou "array 2D" para guardar as informações dos itens.
Vou dar um pequeno exemplo usando array 2D onde o índice "a" é o número do item guardado na array, e o índice "b" é apropriedade do item:
Você pode guardar qualquer informação dentro da cada posição da array ou DS List. O Game Maker não faz distinção de tipos de variáveis, então cada posição pode ser de tipos diferentes.
Agora que você já tem seus itens e informações salvas. Você pode usar essas informações sempre que precisar.
Ex:
Ou:
PS: Eu não entendi o lance sobre as 5 opções!
Vou dar um pequeno exemplo usando array 2D onde o índice "a" é o número do item guardado na array, e o índice "b" é apropriedade do item:
Código: Selecionar todos
//item[a,b]
//Em (a) É a localização do item na array.
//Em (b = 0) É guardado o nome do item.
//Em (b = 1) É guardado o valor do item.
//Em (b = 2) É guardado a imagem do item. Nesse caso para facilitar será uma sprite, mas pode ser apenas a sub imagem de uma sprite.
item[] = -1; //Declarando a array que vai guardar os itens e suas informações.
//Definindo os itens e seus atributos
item[0,0] = "Item 1"; //Define o nome do primeiro item(Note que é uma string).
item[0,1] = 100; //Define o valor do primeiro item.
item[0,2] = spr_item1;//Define a sprite do primeiro item.
item[1,0] = "Item 2"; //Define o nome do segundo item(Note que é uma string).
item[1,1] = 150; //Define o valor do segundo item.
item[1,2] = spr_item2;//Define a sprite do segundo item.
Agora que você já tem seus itens e informações salvas. Você pode usar essas informações sempre que precisar.
Ex:
Código: Selecionar todos
if("apertou no item 1")
{
dinheiro -= item[0,1];// Subtrai o valor do dinheiro disponível de acordo com o valor do item1.
}
Código: Selecionar todos
if(dinheiro<item[2,1])//Se vc tem menos dinheiro do que o valor do item3
{
show_message("Você não tem dinheiro suficiente para comprar este item!");
}
Re: Lista E Mais de 4 opções
Era isso que estava tentando me lembrar, array, já tinha lido sobre isso, mas tinha me esquecido. O que eu queria disser das 5 opções é a seguinte:
Sabe quando usamos show_message_ext, podemos criar até 3 opções para serem escolhidas no jogo, vamos usar um exemplo:
O jogador vai em uma loga, vai falar com o vendedor e ele te dará 3 opções, comprar, vender e sair.
No meu caso usa esse comando não é suficiente, pois eu quero acrescentar mais duas opções, outro exemplo:
O jogador poderia escolher se ele que ir para o sul, norte, leste, oeste ou sair.
Agora percebi que posso usar arrays para criar as opções, se puder me ajudar como faço para clicar com o mouse nos nomes das opções, e fazer com que a opção sair feche as opções.
Sabe quando usamos show_message_ext, podemos criar até 3 opções para serem escolhidas no jogo, vamos usar um exemplo:
O jogador vai em uma loga, vai falar com o vendedor e ele te dará 3 opções, comprar, vender e sair.
No meu caso usa esse comando não é suficiente, pois eu quero acrescentar mais duas opções, outro exemplo:
O jogador poderia escolher se ele que ir para o sul, norte, leste, oeste ou sair.
Agora percebi que posso usar arrays para criar as opções, se puder me ajudar como faço para clicar com o mouse nos nomes das opções, e fazer com que a opção sair feche as opções.
- Eduardo Macedo
- Programador
- Reações: 0
- Mensagens: 31
-
Re: Lista E Mais de 4 opções
A forma mais fácil seria usar um objeto para cada botão de ação, mas também da pra usar o point_in_rectangle enquadrando o retângulo em volta do texto.
- Denis Lemos
- Membro
- Reações: 0
- Mensagens: 49
-
Re: Lista E Mais de 4 opções
O que o Eduardo quis dizer é que em vez de usar o show_message() para aparecer as opções, seria melhor você usar objetos ou verificar se o mouse está em cima de determinada opção usando o comando point_in_rectangle().
Eu particularmente acharia meio feio na hora do jogo aparecer a janela popup do Windows, por isso acho melhor você fazer a sua própria janela de opções que vai ficar dentro do próprio jogo e da forma que você definir.
Então explicando a maneira mais simples de fazer que o Eduardo disse...
No momento em que você faz a mensagem aparecer, em vez disso seria melhor você criar 5 objetos que serão os botões das opções. E um obj_optionsPai, que não precisa conter nada, será só para verificar o click do mouse apenas uma vez, caso contrário teria que verificar o click do mouse 5 vezes, uma vez para cada opção, e isso tornaria o código bem mais complicado de fazer. Então é necessário tornar o obj_optionsPai como pai de todos os outros objetos opções. Basta abrir cada "objeto opção" e selecionar em "Parent" o nosso obj_optionsPai. Dessa forma nós verificamos apenas o click do mouse sobre o obj_optionsPai, que também vai valer para todos os seus objetos filhos, no caso os botões das opções.
Agora vamos aos códigos!
Antes de criar as instâncias dos botões de opção no jogo, declare no Evento Create uma variável para cada opção e outra para saber se as opções foram criadas:
Depois disso já podemos criar os botões de opções, vamos aproveitar e colocar os códigos que criam os botões das opções no "mesmo lugar" que você fez para aparecer a mensagem com as opções.
Um exemplo de código bem simples que cria e salva as opções dentro de uma variável id para ser usado depois:
Agora você já tem os botões criados, basta fazer a verificação se algumas das opções foi selecionada(clicada pelo mouse):
Vamos criar uma verificação do click do mouse no Evento Step para ser checada constantemente, fora da região do resto do código.
Eu não testei aqui se funciona, pois fiz tudo agora de cabeça, mas pela lógica deve funcionar. Você também pode implementar e melhorar colocando um fundo ou desenhando um quadrado atrás para ficar mais bonitinho.
Eu particularmente acharia meio feio na hora do jogo aparecer a janela popup do Windows, por isso acho melhor você fazer a sua própria janela de opções que vai ficar dentro do próprio jogo e da forma que você definir.
Então explicando a maneira mais simples de fazer que o Eduardo disse...
No momento em que você faz a mensagem aparecer, em vez disso seria melhor você criar 5 objetos que serão os botões das opções. E um obj_optionsPai, que não precisa conter nada, será só para verificar o click do mouse apenas uma vez, caso contrário teria que verificar o click do mouse 5 vezes, uma vez para cada opção, e isso tornaria o código bem mais complicado de fazer. Então é necessário tornar o obj_optionsPai como pai de todos os outros objetos opções. Basta abrir cada "objeto opção" e selecionar em "Parent" o nosso obj_optionsPai. Dessa forma nós verificamos apenas o click do mouse sobre o obj_optionsPai, que também vai valer para todos os seus objetos filhos, no caso os botões das opções.
Agora vamos aos códigos!
Antes de criar as instâncias dos botões de opção no jogo, declare no Evento Create uma variável para cada opção e outra para saber se as opções foram criadas:
Código: Selecionar todos
show_options = false;
option1 = noone;
option2 = noone;
option3 = noone;
option4 = noone;
option5 = noone;
Um exemplo de código bem simples que cria e salva as opções dentro de uma variável id para ser usado depois:
Código: Selecionar todos
//No evento que mostra as opções.
option1 = instance_create(x-64, y, obj_option1);
option2 = instance_create(x-32, y, obj_option2);
option3 = instance_create(x, y, obj_option3);
option4 = instance_create(x+32, y, obj_option4);
option5 = instance_create(x+64, y, obj_option5);
show_options = true;//As opções foram criadas.
Vamos criar uma verificação do click do mouse no Evento Step para ser checada constantemente, fora da região do resto do código.
Código: Selecionar todos
if(mouse_check_button_pressed(mb_left))//Se apertou o botão do mouse.
{
if(show_options)//Se as opções já foram criadas.
{
var option_selected = instance_place(mouse_x, mouse_y, obj_optionsPai);//Verifica se o mouse está sobre alguma das opções e guarda o id da opção.
if(option_selected)//Se rotarnar verdadeiro, então o mouse está em cima de uma das opções.
{
switch (option_selected)//Pega o id da opção clicada para comparação.
{
case option1://Caso o id seja o mesmo da instância da opção 1.
//Coloque o seu código se a opção 1 for escolhida aqui.
break;
case option2://Caso o id seja o mesmo da instância da opção 2.
//Coloque o seu código se a opção 2 for escolhida aqui.
break;
case option3://Caso o id seja o mesmo da instância da opção 3.
//Coloque o seu código se a opção 3 for escolhida aqui.
break;
case option4://Caso o id seja o mesmo da instância da opção 4.
//Coloque o seu código se a opção 4 for escolhida aqui.
break;
case option5://Caso o id seja o mesmo da instância da opção 5.
//Coloque o seu código se a opção 5 for escolhida aqui.
break;
}
with(option1)instance_destroy();//Destrói o botão da opção 1.
with(option2)instance_destroy();//Destrói o botão da opção 2.
with(option3)instance_destroy();//Destrói o botão da opção 3.
with(option4)instance_destroy();//Destrói o botão da opção 4.
with(option5)instance_destroy();//Destrói o botão da opção 5.
show_options = false;//Informar que uma opção já foi escolhida.
}
}
}
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante