Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
#IEM Aula 04 - If/While e Expressões
+6
THECHAOS
Super Games
.:Allison:.
Giu
Gsa2134
All-x
10 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
#IEM Aula 04 - If/While e Expressões
INTRODUÇÃO EM GML
Aula 04 - If/While e Expressões
(Atualizado 08/02/2015)
IF:
É uma estrutura de checagem condicional que em português significa "se". Agora explicarei uma estrutura básica de código usando if:
- Código:
if variavel = 0
{
variavel2 = 100
}
Tradução:
- Código:
Se variavel é igual a 0 o que esta entre chaves acontece, ou seja, variavel2 igual a 100.
Vamos fazer mais um exemplo simples. O Super Mario tem duas variáveis bem conhecidas, moedas e vidas. Para se conseguir uma vida coletando moedas, tem que conseguir 100 destas.
Baixe a seguinte engine:
Nela a movimentação do personagem está pronta. Não se preocupe em entender esses códigos de movimento e gravidade, pois nas próximas aulas estarei ensinando a movimentação.
No evento Other>>Game Start do controle coloque:
- Código:
//Número de vidas
global.vidas = 3
//Número de moedas
global.moedas = 0
Ou seja, sempre que o jogo iniciar o personagem terá 3 vidas e 0 moedas.
Agora no step vamos fazer uma checagem de variáveis, e como o step é constante ele sempre estará checando:
- Código:
//Se moedas for maior ou igual a 100
if global.moedas >= 100
{
//Retira 100 moedas
global.moedas -= 100
//Ganha uma vida
global.vidas += 1
}
Você deve ter percebido o uso do ">" neste código, em matemática significa maior que, também tem o "<" (menor que), e adicionamos este símbolo antes do sinal de igual. Explicarei melhor isso mais abaixo, em Expressões.
Colocamos esse operador ali porque se você aumentar o número de moedas muito rápido, global.moedas pode passar de 100. Se fosse "if global.moeda =100..." o código não funcionaria bem, pois só se fosse exatos 100 que a outra expressão aconteceria.
Na engine tem um objeto chamado "moeda", cuidado!!! Nunca de nomes de variáveis e objetos e qualquer outro elemento(background, sprite, sons, rooms, fonts, paths e etc) iguais, senão acontecerão erros. Ex: você não pode dar o mesmo nome a uma sprite e a um objeto.
Então você percebeu agora, porque a variável se chama "global.moedas" e o objeto "moeda"?
Nesse objeto moeda adicione o evento Collision e selecione o objeto player e coloque o seguinte código:
- Código:
global.moedas += 1
instance_destroy()
Ou seja, ganhamos 1 moeda e a instancia de objeto moeda será destruída quando colidir com o player.
Agora para vermos as variáveis vamos ao objeto controle para desenhar as nossas variáveis. Sempre use um objeto separado para desenhar coisas como pontuação, vidas e etc.
No evento Draw do objeto controle abra o editor de códigos e coloque o seguinte código:
- Código:
draw_text(10,10,"Vidas: " + string(global.vidas) + "#" + "Moedas: "+string(global.moedas))
Esse código desenha as variáveis global.vidas e global.moedas.
Quando for desenhar textos sempre os coloque-os entre aspas "texto". E ja que estamos desenhando textos, tivemos que converter valores reais (números) em strings (palavras) usando a função string(str).
"#" serve para pular uma linha. E sempre que for adicionar mais de um texto e mais de uma variável intercalados usa-se o somando seus valores para formar um novo texto.
Agora testem suas engines, para ver como sairam os resultados. Caso tenha saido algo errado baixe esta outra engine que esta completa:
WHILE:
while é quase igual ao if, só há uma diferença:
Imagine todo o jogo como um ciclo que ocorre infinitamente. Quando esse ciclo passa pelo if ele faz a checagem normalmente, independente se a condição for verdadeira ou não e continua sem interromper esse ciclo.
Já quando o ciclo passa pelo while (que é um ciclo também), o ciclo pausa até que a condição vinculada a ele seja falsa. Exemplo:
- Crie um novo projeto.
- Adicione um novo objeto e um nova room.
- No Create do objeto coloque:
- Código:
moeda=0
if moeda < 100
{
moeda += 1
}
-No Draw coloque (para sabermos o valor final da variável moeda):
- Código:
draw_text(10, 10, moeda)
- Insira o objeto na room e execute.
O valor da variável moeda mostrado é 1. Isso porque o Create ocorre apenas uma vez no inicio do ciclo do objeto e só deu tempo de checar a condição uma única vez.
- Agora troque o IF por WHILE e execute novamente.
Repare que:
- A tela fica preta por alguns instantes (Essa é a pausa no ciclo principal do jogo, aguardandoo ciclo while acabar).
- O valor de moeda agora é 100.
Ou seja, o while segurou o Create até que a variável moeda não fosse mais menor que 100.
Muito cuidado ao usar o while, se a condição nunca ficar falsa o jogo vai ficar travado.
EXPRESSÕES:
Vimos que para if e while funcionarem, antes eles checam uma condição para que o que está dentro das chaves ocorra.
Essa condição é uma expressão. As que usamos até agora foram simples, mas há formas de checar mais de uma condição em uma mesma expressão, e ainda usar uma expressão em uma operação aritmética.
Para que fique tudo mais organizado, pegue o costume de usar parenteses nas suas condições. Ex:
if (moedas >= 100) ...
A nossa expressão é (moedas >= 100), ela retorna 1 (true) ou 0 (false) para o if. Ou seja um valor booleano.
Operadores de comparação:
> maior que
< menor que
>= maior ou igual que
<= menor ou igual que
== igual a (É diferente de apenas =, que significa atribuição)
!= diferente de
Agora vamos as expressões compostas:
AND:
- Código:
if ( (energia > 50) and (arma == 3) )
{
energia -= 50
}
Nesse código a ação só acontece se duas condições forem satisfeitas, ter mais de 50 de energia e a arma ser 3. Se uma das duas for falsa a ação não ocorre. Usamos o operador and que faz com que dois lados de uma condição tenham que ser verdadeiros para a ação ocorrer.
OR:
- Código:
if ( (cor == c_red) or (cor == c_orange) )
{
cor_quente = true
}
Nessa expressão é necessário que apenas uma condição seja verdadeira para que a ação ocorra. Usamos o operador or que faz com que pelo menos um dos lados de uma expressão tenha que ser obrigatoriamente verdadeiro para a ação ocorrer.
Como vimos expressões nos devolvem 1 ou 0 como valor. Podemos usar isso para simplificar códigos:
- Código:
x += (anda == true) * 5;
Ou seja, caso anda ter o valor 1 o objeto vai mudar de posição em +5. Repare também que estou usando "== true" nas expressões. Na verdade se eu quero verificar se ela é verdadeira, não preciso adicionar nada. Dai o código seria:
- Código:
x += (anda) * 5;
Obteremos o mesmo resultado. É a mesma coisa com o exemplo das moedas. Se eu quisesse poderia ter feito assim:
- Código:
if ( moedas >= 100 ) == true
{
}
Só que é desnecessário checar se ela é "verdade é verdadeira", sacaram? Mas quando queremos checar se a expressão é falsa não devemos omitir o "== false".
Enfim terminamos mais essa!
Próxima aula: Else e Switch
Até a próxima!!!
FLWS!
Última edição por Alex FC em Qua 11 Fev 2015, 10:17, editado 26 vez(es) (Motivo da edição : Atualização)
Re: #IEM Aula 04 - If/While e Expressões
num sei se eh ress pq foi postado no ano novo mas eu testei aki o meu e ele n desenhou as vidas e as moedas kra explica ae ta totalmente igual nossas engines
[Edit]
Percebi q vc ta usando game maker 7 lite ou pro num sei e eu 8 lite alguma diferença pros codes na mudança de versão ou do lite pra pro?
[Edit]
Percebi q vc ta usando game maker 7 lite ou pro num sei e eu 8 lite alguma diferença pros codes na mudança de versão ou do lite pra pro?
Gsa2134- Data de inscrição : 27/01/2010
Reputação : 0
Número de Mensagens : 229
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
Acontece que você não pôs o objeto "controle" na room...num sei se eh ress pq foi postado no ano novo mas eu testei aki o meu e ele n desenhou as vidas e as moedas kra explica ae ta totalmente igual nossas engines
[Edit]
Percebi q vc ta usando game maker 7 lite ou pro num sei e eu 8 lite alguma diferença pros codes na mudança de versão ou do lite pra pro?
Giu- Data de inscrição : 31/01/2010
Reputação : 0
Número de Mensagens : 1
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
vlw agora foi
Gsa2134- Data de inscrição : 27/01/2010
Reputação : 0
Número de Mensagens : 229
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
Cara eu fiz tudo certo mais qdo eu coloco pra iniciar o jogo aparece: Failed to run the game. Oque eu faço ?
Re: #IEM Aula 04 - If/While e Expressões
X-Games deve ter alguma coisa no seu jogo que o GM não permiti.
Topico:
Desculpa reviver, mais Alex FC seu tutorial me ajudou muito, pois eu so sei o basico de GML. Vlw
Topico:
Desculpa reviver, mais Alex FC seu tutorial me ajudou muito, pois eu so sei o basico de GML. Vlw
Super Games- Games Ranking :
Notas recebidas : C
Data de inscrição : 10/06/2010
Reputação : 36
Número de Mensagens : 2800
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Java
- Godot
- Javascript
- C ou C++
Re: #IEM Aula 04 - If/While e Expressões
Cara otimo tutorial
THECHAOS- Data de inscrição : 14/08/2010
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
nossa cara isso é muito noob para programação
acho que devia mostrar um link completo de uma vez!
e só para matar curiosidade elif é senão!
ou seja se:
if 2>1:
o game maker vai mostrar 'é'
else:
o game maker vai mostrar 'nao e'
então vai dar:
é
por que 2>1 realmente!
acho que devia mostrar um link completo de uma vez!
e só para matar curiosidade elif é senão!
ou seja se:
if 2>1:
o game maker vai mostrar 'é'
else:
o game maker vai mostrar 'nao e'
então vai dar:
é
por que 2>1 realmente!
guilhermemig17- Data de inscrição : 03/06/2010
Reputação : 4
Número de Mensagens : 252
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
nao tem mais o download =(
alucardcsn- Data de inscrição : 22/04/2012
Reputação : 1
Número de Mensagens : 10
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Um pequeno erro...
Cara, o tutorial está bom demais, estou começando a entender a GML, mas lá vai uma dica : Vi um erro aí ao pintar a viriável "vidas" e trocar o "v" por "V" ao pintar. Faltou o sinal mais (+) antes da string. Deve ser esse o erro que deu no jogo da Allison.
O seu código está assim:
draw_text(10,10,"Vidas: " string(vidas) "#" "Moedas: " string(moedas))
O correto seria assim:
draw_text(10,10,"Vidas: " +string(vidas) )
Quanto ao fato de pular linhas em código, pesquisei e vi que "#" só pula linhas no próprio texto: (10,10,"Texto#Texto"), não encontrei até agora como que pula linhas no código, tentei encerrar a função com ponto e vírgula, não deu.
Qualquer coisa eu posto aqui no fórum ao encontrar, por que não dá pra pular linnha usando a função>> "#".
Eu uso o GM 8, talvez em versões mais antigas deve que o seu código funcionava, mas aqui só deu erro, todo caso, eu não sei muito de programação, comecei a estudar a alguns dias, então, desculpa ae por qualquer coisa, é que gosto de aprender corretamente. ABRAÇÃO A TODOS!
[b]
O seu código está assim:
draw_text(10,10,"Vidas: " string(vidas) "#" "Moedas: " string(moedas))
O correto seria assim:
draw_text(10,10,"Vidas: " +string(vidas) )
Quanto ao fato de pular linhas em código, pesquisei e vi que "#" só pula linhas no próprio texto: (10,10,"Texto#Texto"), não encontrei até agora como que pula linhas no código, tentei encerrar a função com ponto e vírgula, não deu.
Qualquer coisa eu posto aqui no fórum ao encontrar, por que não dá pra pular linnha usando a função>> "#".
Eu uso o GM 8, talvez em versões mais antigas deve que o seu código funcionava, mas aqui só deu erro, todo caso, eu não sei muito de programação, comecei a estudar a alguns dias, então, desculpa ae por qualquer coisa, é que gosto de aprender corretamente. ABRAÇÃO A TODOS!
[b]
Última edição por Lutchero em Dom 24 Jun 2012, 19:24, editado 1 vez(es)
Lutchero- Data de inscrição : 22/06/2012
Reputação : 1
Número de Mensagens : 5
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Solução para o problema da string
Eu realmente estou começando a entender a GML, o problema que eu disse antes foi fácil resolver, me coloquei a ver o código e lembrar o que aprendi no seu tutorial mesmo e cheguei a solução! Quando eu vi que o GM aceito minha solução fiquei tão feliz!
A questão é que você tentou pular linhas e descobri em um fórum gringo que os números que você colocou são coordenadas estou falando dos números abaixo em vermelho:
draw_text(10,10,"Vidas: " string(vidas) "#" "Moedas: " string(moedas))
Logo entendi o porquê a vida aparece no canto superior da tela, na verdade seria isso a sintaxe:
draw_text(x,y,"texto aqui")
Sabendo disso foi fácil perceber que se eu aumentasse o valor do eixos Y, o texto apareceria mais para baixo. Bingo! veja o que fiz por mim mesmo, estou orgulhoso de mim:
draw_text(
10,10,"Vidas: "
+string(vidas)
)
draw_text(
10,25,"Moedas: "
+string(moedas)
)
Como vê eu apenas fiz duas funções e mudei o eixo Y da segunda que era 10 para 25 e tá resolvido o problema.
Obrigado Alex FC, você me ajudou muito, e as aulas de lógica que li na net estão me ajudando muito também.
O grande problema de tutoriais é que explica por alto e passa por cima de muita coisa, como o caso das coordenadas na função "draw_text". Se tivesse falado antes, seria mais fácil entender. Eu espero aprender logo para não passar por cima de nada quando eu for ensinar...
ABRAÇÃO A TODOS!
A questão é que você tentou pular linhas e descobri em um fórum gringo que os números que você colocou são coordenadas estou falando dos números abaixo em vermelho:
draw_text(10,10,"Vidas: " string(vidas) "#" "Moedas: " string(moedas))
Logo entendi o porquê a vida aparece no canto superior da tela, na verdade seria isso a sintaxe:
draw_text(x,y,"texto aqui")
Sabendo disso foi fácil perceber que se eu aumentasse o valor do eixos Y, o texto apareceria mais para baixo. Bingo! veja o que fiz por mim mesmo, estou orgulhoso de mim:
draw_text(
10,10,"Vidas: "
+string(vidas)
)
draw_text(
10,25,"Moedas: "
+string(moedas)
)
Como vê eu apenas fiz duas funções e mudei o eixo Y da segunda que era 10 para 25 e tá resolvido o problema.
Obrigado Alex FC, você me ajudou muito, e as aulas de lógica que li na net estão me ajudando muito também.
O grande problema de tutoriais é que explica por alto e passa por cima de muita coisa, como o caso das coordenadas na função "draw_text". Se tivesse falado antes, seria mais fácil entender. Eu espero aprender logo para não passar por cima de nada quando eu for ensinar...
ABRAÇÃO A TODOS!
Última edição por Lutchero em Dom 24 Jun 2012, 19:25, editado 1 vez(es)
Lutchero- Data de inscrição : 22/06/2012
Reputação : 1
Número de Mensagens : 5
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Erro nas moedas e nas vidas
Cara, eu testei o código aqui e deu errado, eu pegava 2 moedas e sempre contava 1, fui ver o COLLISION do PLAYER e você esqueceu mais uma vez o sinal mais (+).
o seu código:
moedas =1//adiciona 1 moeda
Essa instrução que você dá aqui é que toda vez que pegar uma moeda, vai totalizar 1 moeda, quer dizer; se tiver 50 moedas e pegar outra, vai voltar pra uma, assim nunca chega a 100 pra ganhar um vida, sacanagem isso ae.
O correto:
moedas +=1//adiciona 1 moeda
Agora está certo por que toda vez que eu pegar 1 moeda vai somar +1. Ufa! Agora posso juntar 100 e pegar uma vida!
No entanto, observei mais um problema, deduzi que você também havia esquecido e acertei:
if moedas>=100{moedas=0 vidas =1}
O correto é assim:
if moedas>=100{moedas=0 vidas +=1}
Estou começando a desconfiar que o seu teclado não tem a teclar mais(+)... Brincadeira mano, te respeito muito, não leva a mal a brincadeira. era só acrescentar o mais(+) antes do igual(=) e tá ótimo, por que do jeito que você fez, sempre que você pegar 100 moedas, você fica com 1 vida. QUE ROUBO! VOCÊ PÕE PRA COMEÇAR COM 3 E ME ROUBA 2?
Como eu disse mano, eu não sei muito de programação, mas sei que esse tipo de erro não pode haver, não sei fez lógica, mas se não é um conselho meu, ajuda, está me ajudando.
Toda forma, valeu a intenção! tudo de bom cara!
o seu código:
moedas =1//adiciona 1 moeda
Essa instrução que você dá aqui é que toda vez que pegar uma moeda, vai totalizar 1 moeda, quer dizer; se tiver 50 moedas e pegar outra, vai voltar pra uma, assim nunca chega a 100 pra ganhar um vida, sacanagem isso ae.
O correto:
moedas +=1//adiciona 1 moeda
Agora está certo por que toda vez que eu pegar 1 moeda vai somar +1. Ufa! Agora posso juntar 100 e pegar uma vida!
No entanto, observei mais um problema, deduzi que você também havia esquecido e acertei:
if moedas>=100{moedas=0 vidas =1}
O correto é assim:
if moedas>=100{moedas=0 vidas +=1}
Estou começando a desconfiar que o seu teclado não tem a teclar mais(+)... Brincadeira mano, te respeito muito, não leva a mal a brincadeira. era só acrescentar o mais(+) antes do igual(=) e tá ótimo, por que do jeito que você fez, sempre que você pegar 100 moedas, você fica com 1 vida. QUE ROUBO! VOCÊ PÕE PRA COMEÇAR COM 3 E ME ROUBA 2?
Como eu disse mano, eu não sei muito de programação, mas sei que esse tipo de erro não pode haver, não sei fez lógica, mas se não é um conselho meu, ajuda, está me ajudando.
Toda forma, valeu a intenção! tudo de bom cara!
Última edição por Lutchero em Dom 24 Jun 2012, 19:16, editado 1 vez(es)
Lutchero- Data de inscrição : 22/06/2012
Reputação : 1
Número de Mensagens : 5
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
Ok, só foi um problema de formatação que substituiu todos os sinais de + ou de - por espaços em branco. Isso acontece ao ativar e desativar o bbcode na edição do post. Não que eu tenha esquecido.
De qualquer forma, obrigado por avisar. Já estou editando.
Ps: Terá que arcar com o post triplo.
FLWS!
De qualquer forma, obrigado por avisar. Já estou editando.
Ps: Terá que arcar com o post triplo.
FLWS!
Foi mal se errei
Alex FC escreveu:Ok, só foi um problema de formatação que substituiu todos os sinais de + ou de - por espaços em branco. Isso acontece ao ativar e desativar o bbcode na edição do post. Não que eu tenha esquecido.
De qualquer forma, obrigado por avisar. Já estou editando.
Ps: Terá que arcar com o post triplo.
FLWS!
Não foi a intenção, eu fui vendo os erros aos poucos enquanto conferia os códigos, a direção decide o que fazer. Por mim tudo bem se forem tão exigentes, mas ressalto que os meus post sendo triplo ou não, ajudam muito a entender o funcionamento das funções correntes e suas sintaxes.
Talvez só editando o post seja melhor, me lembrarei disso, mas não vou mudar isso agora que já fiz.
Desculpa ae se fui rude, vou melhorar nessa área e programar melhor a minha variável emoções. kkkkkk
Abração!
Lutchero- Data de inscrição : 22/06/2012
Reputação : 1
Número de Mensagens : 5
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
Aula atualizada - 20/10/12:
- Melhora na grafia e explicação;
- Atualização das engines.
Ps: As próximas aulas serão atualizadas em breve.
FLWS!
- Melhora na grafia e explicação;
- Atualização das engines.
Ps: As próximas aulas serão atualizadas em breve.
FLWS!
Re: #IEM Aula 04 - If/While e Expressões
Usei esse exemplo no estudo que to fazendo e ficou ok.
Mas toda vez que meu player morre executa o código mudando as variáveis para: vidas-=1 e modedas=0
O problema é que coloquei o create do player para começar com 3 vidas e 0 moedas. Então toda vez que o player morre e reinicia apesar de perder 1 vida, o mesmo volta a ter 3 vidas, porque não sei computar na conta para diminuir a vida perdida no evento create ou em outro lugar.
Como faz para o player reiniciar já computando a vida perdida?
Também gostaria de diminuir o tamanho da fonte do draw_text, tentei font_add após ou antes o draw_text mas não deu certo.
Mas toda vez que meu player morre executa o código mudando as variáveis para: vidas-=1 e modedas=0
O problema é que coloquei o create do player para começar com 3 vidas e 0 moedas. Então toda vez que o player morre e reinicia apesar de perder 1 vida, o mesmo volta a ter 3 vidas, porque não sei computar na conta para diminuir a vida perdida no evento create ou em outro lugar.
Como faz para o player reiniciar já computando a vida perdida?
Também gostaria de diminuir o tamanho da fonte do draw_text, tentei font_add após ou antes o draw_text mas não deu certo.
LincolnSalles- Data de inscrição : 20/09/2012
Reputação : 0
Número de Mensagens : 40
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
Coloque o código que está no Create no evento Other >> Game Start.
O evento create acontece toda vez que o objeto é criado. Logo se a room for reiniciada o create vai acontecer novamente e as vidas voltaram a 3 e as moedas a 0.
Já o evento Game Start ocorre 1 vez só durante a execução do jogo que é quando ele é iniciado.
Para o texto ficar menor há duas maneiras:
-Crie uma font e escolha o tamanho:
1: Tipo da fonte;
2: Tamanho da fonte;
3: Clique em All para usar letras com acento.
E coloque draw_set_font(NOME DA SUA FONTE) antes da função draw_text.
-Ou use a função draw_text_transformed:
FLWS
O evento create acontece toda vez que o objeto é criado. Logo se a room for reiniciada o create vai acontecer novamente e as vidas voltaram a 3 e as moedas a 0.
Já o evento Game Start ocorre 1 vez só durante a execução do jogo que é quando ele é iniciado.
Para o texto ficar menor há duas maneiras:
-Crie uma font e escolha o tamanho:
1: Tipo da fonte;
2: Tamanho da fonte;
3: Clique em All para usar letras com acento.
E coloque draw_set_font(NOME DA SUA FONTE) antes da função draw_text.
-Ou use a função draw_text_transformed:
draw_text_transformed(x,y,string,xscale,yscale,angle) | |
Argumento | Descrição |
x | posição x do texto |
y | posição y do texto |
string | texto |
xscale | largura do texto |
yscale | altura do texto |
angle | rotação do texto |
FLWS
Re: #IEM Aula 04 - If/While e Expressões
Valeu mesmo, consegui mudar a fonte.
Quanto declarar as variaveis moedas e vidas no evento Game Start em vez do create, funcionou enquanto o player está vivo. Quando o mesmo morre da um erro que o game maker ao inicializar a room não acha a variável vidas e moedas. Como sou bem iniciante, não sei mas acredito que é porque o evento só é criado uma vez com o objeto player e se o mesmo é destruído não tem mais essa variável. Tentei declará-la em outro objeto de controle e fazer referência a ele no objeto player, mas como também estava dando erro quando o player morria, resolvi o problema declarando a variável como global com globalvar, conforme eu li no manual do game maker 8, que estou usando junto com as aulas aqui do fórum.
Ficou assim:
Quanto declarar as variaveis moedas e vidas no evento Game Start em vez do create, funcionou enquanto o player está vivo. Quando o mesmo morre da um erro que o game maker ao inicializar a room não acha a variável vidas e moedas. Como sou bem iniciante, não sei mas acredito que é porque o evento só é criado uma vez com o objeto player e se o mesmo é destruído não tem mais essa variável. Tentei declará-la em outro objeto de controle e fazer referência a ele no objeto player, mas como também estava dando erro quando o player morria, resolvi o problema declarando a variável como global com globalvar, conforme eu li no manual do game maker 8, que estou usando junto com as aulas aqui do fórum.
Ficou assim:
Dessa forma ao reiniciar a room com a morte do player o mesmo já começa menos 1 vida e 0 moedas. Valeu pela ajuda.globalvar vidas, moedas
{vidas=3;
moedas=0}
LincolnSalles- Data de inscrição : 20/09/2012
Reputação : 0
Número de Mensagens : 40
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #IEM Aula 04 - If/While e Expressões
Ok. Se quiser mais alguns exemplo olhe as aulas 2, 10 e 11:
https://gmbr.forumeiros.com/t3569-aulas-de-game-maker-por-alex-fc
A 2 explica como funcionam as variáveis e a 10 e a 11 sobre vidas e saude.
EDIT: Atualizei a aula com as variáveis globais. Não sei onde estava com a cabeça para utilizar variaveis locais nesse exemplo.
É que estou atualizando varias aulas e isso acabou passando batido. Sorry .
FLWS!
https://gmbr.forumeiros.com/t3569-aulas-de-game-maker-por-alex-fc
A 2 explica como funcionam as variáveis e a 10 e a 11 sobre vidas e saude.
EDIT: Atualizei a aula com as variáveis globais. Não sei onde estava com a cabeça para utilizar variaveis locais nesse exemplo.
É que estou atualizando varias aulas e isso acabou passando batido. Sorry .
FLWS!
Re: #IEM Aula 04 - If/While e Expressões
é eu comecei acompanhando as suas aulas hoje desde a primeira até a 4, e vou chegar até o final dessa sessão de aulas que vc fez, são bem resumidas e uma boa forma de começar a ir familiarizando com o gml, o complemento é o pdf da documentação completa do game maker 8 em portugues que eu tenho, tb ta ajudando muito, vl pelas aulas.
LincolnSalles- Data de inscrição : 20/09/2012
Reputação : 0
Número de Mensagens : 40
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [Vídeo-Aula]Aula 4.1 - Usando funções básicas do draw
» [Vídeo-Aula] Aula 4 - Variáveis
» Expressões matemáticas, funções e operadores
» tutorial explicando sobre variaveis e expressoes ideal para iniciantes
» procurando tds expressões e como usa-las
» [Vídeo-Aula] Aula 4 - Variáveis
» Expressões matemáticas, funções e operadores
» tutorial explicando sobre variaveis e expressoes ideal para iniciantes
» procurando tds expressões e como usa-las
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos