GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


Criando o nome de uma sprite com variáveis

5 participantes

Ir para baixo

Criando o nome de uma sprite com variáveis Empty Criando o nome de uma sprite com variáveis

Mensagem por rafarubim Seg 12 Dez 2011, 14:07

Atualmente fiquei com um problema: preciso formar o nome de uma sprite usando uma variável+uma coisa escrita. Por exemplo: o nome da variável é player_pulando, mas o nome "player" pode variar, então fiz assim:

exemplodevariavel="player"

sprite_index= string(exemplodevariavel) + "_pulando"

>>Desse jeito não dá certo, pois ambos "player" e "_pulando" estão entre aspas, mas se não houvessem aspas, daria um erro dizendo: unknow variable "_pulando" ou unknow variable "player". O que faço?
rafarubim
rafarubim

Data de inscrição : 20/01/2011
Reputação : 0
Número de Mensagens : 65
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por Tedi Ripper Seg 12 Dez 2011, 14:12

acredito que com
variable_global_array_set
variable_local_array_set


Nunca usei nenhum deles, mas acho q isso cria variaveis

flw flw


edit
lol
erro

é isso aki:
variable_local_set
variable_global_set
Tedi Ripper
Tedi Ripper

Games Ranking : Sem avaliações

Data de inscrição : 21/11/2010
Reputação : 25
Número de Mensagens : 777
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por irlansn Seg 12 Dez 2011, 14:17

sprite_index não serve para dar um nome a sprite...
ela serve para definir a sprite do objeto...

Eu acho que sei o que você quer... vou fazer aqui e edito...

EDITE: Por favo, explique melhor o que vc quer e porque vc quer, para eu entender melhor!!!
irlansn
irlansn

Games Ranking : Nota C

Notas recebidas : B+D
Data de inscrição : 18/01/2011
Reputação : 5
Número de Mensagens : 482
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por rafarubim Seg 12 Dez 2011, 14:53

Vou tentar explicar melhor, apesar de ser meio confuso:

No meu jogo há vários tipos de player (mais de 20), com um objeto para cada.
Todos os players tem sprites com nomes parcidos, só mudando o início:

player_esquerda
player_direita
player_pulando
player2_esquerda
player2_direita
player2_pulando

Dessa maneira, ao apertar a tecla esquerda, quero mudar a sprite do player para que ele ande para a esquerda.

Tenho uma variável chamada global.player_atual, que indica qual player é o atual que está sendo usado. Assim, tenho um script que uso no evento left pressed de todos os players. Nesse script está:

direction=180
speed=4
sprite_index= global.player_atual + "_esquerda" //<<
>>>>>>>>Desse modo, se global.player_atual="player5", no código ficaria:

sprite_index="player5_esquerda" //<<

Como faço para juntar a variável global.player_atual com "_esquerda" ou "_direita" ou "_pulando" ?
rafarubim
rafarubim

Data de inscrição : 20/01/2011
Reputação : 0
Número de Mensagens : 65
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por irlansn Seg 12 Dez 2011, 15:12

Assim:
variable_local_set(string(global.player_atual) + "_pulando",valor)

E se não der certo... Infelizmente não sei o que fazer.. confused confused

Mas lembre-se: ser um programador exige muita paciência...
Eu mesma já fiz um jogo com mas de 30 personagens... E fiz um por um!!! (Eu fazia um 5 por dia)
irlansn
irlansn

Games Ranking : Nota C

Notas recebidas : B+D
Data de inscrição : 18/01/2011
Reputação : 5
Número de Mensagens : 482
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por saim Seg 12 Dez 2011, 15:25

Isso não dá pra fazer. Porque sprite_index é um número, não um texto. Então, o melhor que dá pra fazer é sair testando sprite-por-sprite do jogo e comparar com a string que define o nome da variável. Algo assim:
Código:
if (tá virado pra direita){
  novoNome="player"+"direita"
  for(i = 0; i < 1000000; i+=1){ //1000000 é só um número muito grande
    if (sprite_exists(i)){
      if (sprite_get_name(i)==novoNome){
        sprite_index = i;
        }
      }
    }
  }
Dá pra substituir o 1000000 pelo maior índice de sprite do jogo, ou seja o índice da última sprite que você criou, que não é necessariamente o número de sprites do jogo.
Usei 1000000 pra passar uma idéia do quanto o processo é lento.

Uma alternativa seria gravar esses textos como constantes globais e armazenar as sprites em arrays 2d. Por exemplo:
Código:
andandoEsquerda = 0
andandoDireita = 1
correndoEsquerda = 2
correndoDireita = 3

player1 = 0
player2 = 1

sprite[0, 0]=sprite_do_player1_andando_pra_esquerda
sprite[0, 1]=sprite_do_player1_andando_pra_direita
sprite[0, 2]=sprite_do_player1_correndo_pra_esquerda
sprite[0, 3]=sprite_do_player1_correndo_pra_direita

sprite[1, 0]=sprite_do_player2_andando_pra_esquerda
sprite[1, 1]=sprite_do_player2_andando_pra_direita
sprite[1, 2]=sprite_do_player2_correndo_pra_esquerda
sprite[1, 3]=sprite_do_player2_correndo_pra_direita

jogador = player1 //0
situação = andandoDireita//1
Daí, em alguns eventos específicos você define qual constante chamar pras variáveis "jogador" e "situação".
E manda, por cima disso:
Código:
sprite_index = sprite[jogador, situação]
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por rafarubim Seg 12 Dez 2011, 15:36

saim escreveu:Isso não dá pra fazer. Porque sprite_index é um número, não um texto. Então, o melhor que dá pra fazer é sair testando sprite-por-sprite do jogo e comparar com a string que define o nome da variável. Algo assim:
Código:
if (tá virado pra direita){
  novoNome="player"+"direita"
  for(i = 0; i < 1000000; i+=1){ //1000000 é só um número muito grande
    if (sprite_exists(i)){
      if (sprite_get_name(i)==novoNome){
        sprite_index = i;
        }
      }
    }
  }
Dá pra substituir o 1000000 pelo maior índice de sprite do jogo, ou seja o índice da última sprite que você criou, que não é necessariamente o número de sprites do jogo.
Usei 1000000 pra passar uma idéia do quanto o processo é lento.

Mesmo não entendendo como usar o "for" eu entendi seu código xD realmente deve dar certo, mas como pode existir até 1000000 de sprites isso não deixa o jogo mais lento n? Até porque usarei isso pra esquerda, pra direira, pra cima,pra baixo e quando o player ataca...
rafarubim
rafarubim

Data de inscrição : 20/01/2011
Reputação : 0
Número de Mensagens : 65
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por saim Seg 12 Dez 2011, 15:47

saim escreveu:Usei 1000000 pra passar uma idéia do quanto o processo é lento.
rafarubim escreveu:mas como pode existir até 1000000 de sprites isso não deixa o jogo mais lento n?
Sim, é um processo bem lento, por isso não recomendo. Agora, dê uma olhada no post anterior (editado) e veja se gosta da idéia alternativa.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por rafarubim Seg 12 Dez 2011, 16:04

Hum, legal, eu não sabia disso, mas o ruim é que o código fica muito grande,já que farei muitos players... Mas valeu, já vi que pelo jeito não tem mais maneiras e terei que fazer do jeito difícil...
rafarubim
rafarubim

Data de inscrição : 20/01/2011
Reputação : 0
Número de Mensagens : 65
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por itarodrigo Seg 12 Dez 2011, 16:20

tente o seguinte:
Código:
execute_string(string(global.player_atual)+"_esquerda");
ou
Código:
execute_string(global.player_atual+"_esquerda");
itarodrigo
itarodrigo

Data de inscrição : 28/08/2010
Reputação : 52
Número de Mensagens : 599
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por saim Seg 12 Dez 2011, 17:35

adaptando o código do itarodrigo, você pode usar:
Código:
execute_string("sprite_index="+global.player_atual+"_esquerda");
Mas execute_string também é lento...

Se você considera difícil lidar com arrays, então o que eu sugeri realmente é o jeito difícil. Mas é só uma questão de se adaptar, em pouco tempo você domina a técnica toda.

O que eu chamo de "jeito difícil" mesmo é aquele MONTE de if-else.
Código:
if táPraDireita && táCorrendo && éOPlayer1
sprite_index=player1CorrendoPraDireita

if táPraDireita && táCorrendo && éOPlayer2
sprite_index=player2CorrendoPraDireita

if...
ISSO é desnecessário.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Criando o nome de uma sprite com variáveis Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Criando o nome de uma sprite com variáveis Empty Re: Criando o nome de uma sprite com variáveis

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos