Destruir variável

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Destruir variável

Mensagem por Math Maker em Sab 19 Mar 2011, 19:37

Aproveitando o fim de semana, estou idealizando um projeto no GM. Mas surgiu a necessidade de destruir uma variável local. Minha necessidade seria algo como:

Código:
a = 10;
draw_rectangle(a,a,2*a,2*a,0);

// destruir variável a

Eu sei como contornar o problema, mas quero saber se vocês conhecem uma função ou algo semelhante que possa destruir uma variável, isso facilitaria muito meu projeto.

Obrigado.

Math Maker

Número de Mensagens : 107
Idade : 21
Data de inscrição : 26/02/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por LCS em Sab 19 Mar 2011, 21:01

olha cara se existe função e tal eu não sei mas pode ser que de para tu fazer uma var global e coloca-la em outro obj para que quando ocorra a ação nesse objeto destrua o outro mas nao sei se funcionaria mas pode tentar mas ai o problema seria que o gm ia acusar que a variavel nao existe e dai é certo que vai dar bug pois como tu ta usando ele apara desenhar esse retangulo
mas tenta ai vai que da sei la
obs: porque tu quer destruir tal variavel?
vou dar uma procurada pra ti cara se achar te aviso com um edit aqui

flws

LCS

Ranking : Nota A
Número de Mensagens : 1035
Idade : 21
Data de inscrição : 09/03/2010
Notas recebidas : A
Reputação : 43
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://www.www.ww.www

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por Markituh em Sab 19 Mar 2011, 23:05

Cara, você está usando essa var no draw. Se você excluir ela no draw, como vai se desenhar o retângulo? Até porque, nem adianta, já que a é igual a 10 no começo do código. O Draw NUNCA para de ser executado, é digamos, "infinito".
Código:
a = 10 // Executou aqui, definiu a var 10
draw_rectangle(a,a,a,a) // E depois aqui, desenho o retangulo
a = 0 // Então chega aqui, e já parte lá pra cima e começa tudo denovo.
NÃO EXISTE e NÃO HÁ uma função que delete uma variável. Tudo o que você pode fazer é definir a variável como zero, ou como um string vazia(""). No C++ você pode definir como NULL, mas o Game Maker não é C++... O Game Maker executa cada linha de código a 0,4 segundos, realmente muito rápido, por isso dá tempo de fazer mais algo depois que se deleta uma instância.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por .:Allison:. em Sab 19 Mar 2011, 23:08

se você usar o evento exit não funciona não ?

.:Allison:.

Ranking : Nota B
Número de Mensagens : 630
Idade : 19
Data de inscrição : 25/07/2010
Notas recebidas : B
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://clubmaker.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por Markituh em Sab 19 Mar 2011, 23:11

X-Games escreveu:se você usar o evento exit não funciona não ?
Rapaz, acho que não. Pois se você "exitasse" do Draw, certamente seria pampz voltar a ele. O exit só é permitido a códigos executados cada um por sua vez, mas o Draw é diferente. Você pode dar exit, mas ele vai voltar a ser executado de qualquer maneira.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por ricaun em Dom 20 Mar 2011, 00:06

Markituh escreveu:NÃO EXISTE e NÃO HÁ uma função que delete uma variável. Tudo o que você pode fazer é definir a variável como zero, ou como um string vazia(""). No C++ você pode definir como NULL, mas o Game Maker não é C++... O Game Maker executa cada linha de código a 0,4 segundos, realmente muito rápido, por isso dá tempo de fazer mais algo depois que se deleta uma instância.

Acho que vc esta enganado, pelo que sei se vc utilizar o comando de declarar a variável ela no final do código é eliminada!

Não acredita? Tente isso!

Create:
Código:
var test;

test = 200;
test2 = 100;
score = test*test2;
Draw:
Código:
room_caption = "Test = "+string(variable_local_exists("test"))+" | Test2 = "+string(variable_local_exists("test2"));

Bem se vc notar a variável test não vai existir, entretanto a variável test2 existe. É isso...

Té.

ricaun

Número de Mensagens : 169
Idade : 27
Data de inscrição : 23/09/2008
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por .:Allison:. em Dom 20 Mar 2011, 00:14

você poderia usar tambem uma variável temporária, vê nas aulas do Dharrison mais pelo oque eu entendi, essa variável fica até a função que ela está presente acabar, se coloca assim:
var nome_da_variável=20
é mto usada em scripts, ela só funciona quando o script é execultado, quando ele acaba, ela acaba tbm!

.:Allison:.

Ranking : Nota B
Número de Mensagens : 630
Idade : 19
Data de inscrição : 25/07/2010
Notas recebidas : B
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://clubmaker.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por Markituh em Dom 20 Mar 2011, 00:26

Acho que vc esta enganado, pelo que sei se vc utilizar o comando de declarar a variável ela no final do código é eliminada!

Não acredita? Tente isso!

[...].
Cara, isso aí é uma variável temporária, o comando var é isto. É diferente de declarar uma variável local, sem o var. E X-Games, se você fizer isso vai dar um erraço, o var só declara as variáveis, você define o valor depois:
Código:
var variavel;
variavel = 10
Até onde sei, você pode declarar uma variável em que evento quiser, desde que esse não se repita, como o Step ou o Draw. Mas usando o esquema certo é possível driblar isso, só é saber ;) Um exemplo:
Código:
tempo = 0
if keyboard_check(vk_space){
tempo+=1
}
if tempo=100
{
game_end()
}
Um esquema de executar ação depois de x segundos pressionando uma tecla, é basicamente este.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por GameMakerTutoriais em Dom 20 Mar 2011, 11:42

Existe sim uma maneira de realmente apagar uma variável da memória... mas isso não é uma função e sim um método que realmente funciona. Pra isso você deve criar um objeto e usá-lo como ponte para variáveis.

Por exemplo, você poderia criar um objeto "temp" e declarar todas as variáveis da seguinte forma:

Código:
temp.nome = 'Ninja8086';
temp.dado = $FF;
temp.valor = 20 * pi;

Para limpar essas variáveis, bastaria destruir o objeto na room da seguinte forma:

Código:
instance_destroy(temp);

Toda instância possui eventos e variáveis próprias que são executados e lidas enquanto o objeto estiver activo. Há como desactivar o objeto, mas destruí-lo é a melhor maneira. Quando a instância é destruída, todo evento e variáveis são descartados.


Última edição por Ninja8086 em Sab 31 Mar 2012, 20:39, editado 1 vez(es)

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por Math Maker em Dom 20 Mar 2011, 12:27

Muito obrigado a todos pela atenção.

Sobre destruir a variável no draw, ele é declarada novamente no começo, ou seja, meu esquema seria: criar variável > usar variável > destruir variável > criar variável > usar variável > destruir variável > [...].

Este processo se repetiria até que o evento não existisse mais (destruindo o objeto como disse o Ninja8086, assim a variável não existe mais mesmo) ou o evento parar de ser executado (parte dele sendo mais exato, com o uso de uma condicional "if'). Destruir a variável me ajudaria e muito (estou criando minha próprias funções que possuem ID dentro de uma variável, com return e tal), irei tentando algumas coisas daqui.

Se alguém tiver uma ideia, favor me informar. Obrigado.

Math Maker

Número de Mensagens : 107
Idade : 21
Data de inscrição : 26/02/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por GameMakerTutoriais em Dom 20 Mar 2011, 12:44

(parte dele sendo mais exato, com o uso de uma condicional "if'). Destruir a variável me ajudaria e muito (estou criando minha próprias funções que possuem ID dentro de uma variável, com return e tal), irei tentando algumas coisas daqui.

Neste caso, bastaria checar se o objeto temp existe com instance_exists() e caso exista, a variável também existe. Também pode usar a função variable_local_exists() que confere a existência ou não da variável. Enfim, boa sorte!

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Destruir variável

Mensagem por Conteúdo patrocinado Hoje à(s) 20:00


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum