Conectar-se
Quem está conectado
20 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 19 Visitantes

ReisBlender

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 16/09/2011
Número de Mensagens : 9
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

[Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 13:56
Eu gostaria de adicionar randomicamente uma pedra até a room ficar completamente coberta, mas essas pedras não podem ficar uma em cima da outra, precisam ficar uma ao lado da outra.
A parte de adicionar objetos randomicamente eu sei fazer, mas não sei como fazer com que os objetos não se sobreponham.

Alguém tem alguma idéia? scratch


Última edição por Leydine em Seg 31 Out 2011, 15:10, editado 1 vez(es)
avatar
Data de inscrição : 26/09/2008
Número de Mensagens : 890
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: [Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 14:00
Após criar a instância, teste se ela está colidindo com outra, e no caso de estar, mova-a aleatoriamente até que não colida mais.
Só que você poderá ter problemas se a room estiver cheia e você tentar posicionar mais uma pedra. Não havendo espaço livre, entrará num loop infinito e o jogo travará.
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1832
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: [Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 14:03
Antes de criar a pedra, verifique se o lugar em que ela vai ser criada não está ocupada por uma outra pedra:

Código:
if !place_meeting(x+valor,y+valor,obj_pedra){
instance_create(x+valor,y-valor,obj_pedra)
}

Espero ter ajudado!
blz
avatar
Ranking : Nota E
Notas recebidas : D+E+E
Data de inscrição : 03/10/2011
Número de Mensagens : 439
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 14:11
Tente esse código:
Código:

if distance_to_object(nome_do_objeto_pedra)<10 //Se a distancia entre uma pedra e outra for menor que 10 pixels
{
y+=2 //Mantem um espaço de 2 na posição Y e X
x+=2
}
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1832
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: [Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 14:33
Uma outra forma de preencher a room é usando a função "for".
Montei uma engine para você.
Código:
http://www.4shared.com/file/_gxR-QxI/Preencher_room_com_blocos.html
Nota: Coloque o tamanho X do bloco aonde tiver 32. Na engine, estou usando 32 sem alinhamento. Se tiver alinhamento, é só colocar o valor correspondente.

Se tiver dúvidas, é só falar.
Espero ter ajudado!
blz
avatar
Data de inscrição : 16/09/2011
Número de Mensagens : 9
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 15:09
Obrigado pela Engine, ficou perfeito, mas vou procurar um tutorial explicando como funciona esse FOR porque eu não entendi nada. silent
Ranking : Sem avaliações
Notas recebidas : A+B (não colocar conceito)
Data de inscrição : 27/07/2011
Número de Mensagens : 202
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 15:20
@Leydine escreveu:mas vou procurar um tutorial explicando como funciona esse FOR porque eu não entendi nada.
Dê uma olhada nessa explicação básica: http://www.brasilacademico.com/apostilas/A7_Para.pdf
avatar
Ranking : Nota D
Notas recebidas : D-C
Data de inscrição : 10/10/2010
Número de Mensagens : 582
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Divida] Objetos não se sobreporem

em Seg 31 Out 2011, 15:46
Ja mandaram um link PDF,mas vou tentar explicar de um jeito simples:
for (afirmaçao1 ; expressao ;afirmaçao2) afirmaçao3
Obs:Linha de codigo retirada do Help do Game Maker,apenas traduzido.

A "afirmaçao1",é o valor inicial. exemplo:
Código:
i=0

A "expressao",é como se fosse um if, exemplo:

Código:
y>=10;//se y for maior ou igual a 10

A "afirmaçao2",é o valor que deverá ser atribuido a variavel se a expressao for verdadeira.Ex:

Código:
i+=1

E a "afirmaçao3" é a açao.

Agora um exemplo e um exemplo "traduzido" de for.

Código:
for(i=0; i>=10; i+=1)
{
array[i]=0//Esse script de for irá criar uma array com 10  com de valor 0
}
Traduzindo...
Código:
 for(valor inicial de i=0; enquanto nao for maior ou igual a 10; acrescenta 1 a variavel i)
{
array[i]=0//Esse script de for irá criar uma array com 10  com de valor 0
}

Espero que tenha entendido...


Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum