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
» Colisões não funcionando
por RastaMaan Sex 26 Abr 2024, 19:49

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

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

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

» 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


Tutorial - Strings no Game Maker

2 participantes

Ir para baixo

Tutorial - Strings no Game Maker Empty Tutorial - Strings no Game Maker

Mensagem por Igor KinGamer Qui 17 Nov 2011, 21:08

Nome: Strings no Game Maker
Descrição: Tutorial explanando o básico sobre strings no Game Maker
Nível de dificuldade: Iniciante
Requerimentos: Qualquer versão do GM


Introdução

Eu considero que há algumas coisas básicas que todos devem estudar, entender e aprender a usar antes de tentar criar jogos mais avançados. Entre elas, eu citaria:
* O que são e como se usam variáveis;
* O que são e qual é a diferença entre objetos e instâncias;
* Como funcionam as funções - o que são argumentos e o que significa "retornar um valor";
E assim vai. Posso acrescentar na lista acima as strings. Podem ser muito úteis, mas também podem causar bastante incômodo e perguntas aqui no fórum se você não entender como trabalhar com elas. Então, vamos lá!


Definição

Uma string é uma sequência de caracteres. Uma string é representada escrevendo-se os caracteres que a compõe entre aspas simples ou duplas, como em "string" ou 'string'. Eu usarei aspas duplas pois, em C/C++, duplas são usadas para strings, mas o GM dá a liberdade de usar qual quiser.


1 - Tipos de variável

Existem dois tipos de variável no GM: real e string. Para armazenar uma string em uma variável, não há nada de especial, nada de diferente em comparação com armazenar valores reais (numéricos).

nome = "José";
idade = 15;
cidade = "São Paulo";

Agora, as variáveis nome e cidade possuem, respectivamente, os valores "José" e "São Paulo" (strings), e a variável idade possui o valor 15 (real).


2 - Comparação

Strings podem ser comparadas, assim como valores reais, com os operadores ==, !=, >, <, >=, <= (igual, diferente, maior, menor, maior ou igual, menor ou igual). Porém, a comparação não envolve o tamanho da string, mas sim a ordem na tebela ASCII.

Tutorial - Strings no Game Maker 217px-ASCII_full.svg
Caracteres da tabela ASCII (do 33 ao 126)

* Letras maiúsculas são diferentes de minúsculas.
* Isso inclui os caracteres que não são letras, conforme a ordem na imagem.
* As letras acentuadas vêm após todos esses caracteres.

"A" < "B" < "C" < ... < "Z" < "[" < "\" < "]" < ... < "a" < "b" < "c" < ... < "Á" < ...

* Quando uma string é igual aos primeiros caracteres de outra, a mais longa é maior.

"strings" > "string"

* Strings só são iguais se são realmente idênticas.

"letra" == "letra", "Letra" != "letra" != "letra " (note o espaço)


// Comparação de reais
if (idade >= 18)
show_message("Você é maior de idade. Já pode ser preso!");
else
show_message("Você é menor de idade. Ainda não precisa votar!");

// Comparação de strings
if (nome == "João")
show_message("E aí, João!");
else
show_message("E aí... Ei, você não é o João!!!");

Você pode ver que estou comparando a string armazenada na variável nome com a string "João", assim como se comparam valores reais. No caso, como a variável nome possui a string "José", será mostrada a segunda mensagem.

if (nome >= "a")
show_message("Você escreveu seu nome com letra minúscula.");
else
show_message("Você escreveu seu nome com letra maiúscula.");

Se o nome começar com letra minúscula, será maior ou igual a "a" (ex.: "arnaldo") e a primeira mensagem será mostrada. Se começar com letra maiúscula (como é o caso, "José"), será menor que "a" e a segunda mensagem será mostrada.


3 - Pular uma linha

No meio de uma string, você pode pular uma linha usando o caractere "#" (jogo da velha):

show_message("Você é maior de idade.#Já pode ser preso!");

Isso mostrará na tela:

Você já é maior de idade.
Já pode ser preso!

Com exceção da file_text_write_string(), que escreve uma string num arquivo, funciona igualmente em qualquer outra função, como a draw_text(), desenhando a string em duas linhas.
Para que apareça o próprio caractere '#', e não pule uma linha, você deve usar "\#" (barra invertida + jogo da velha). Ex.: "Concurso \#001".


4 - Concatenação

Palavrinha estranha, não? Strings podem ser somadas (concatenadas).

sobrenome = "Manolo";
nome_completo = nome+" "+sobrenome;
show_message("Seu nome é: "+nome_completo+".#Sua cidade é: "+cidade+".");

Será mostrada na tela a mensagem:

Seu nome é: José Manolo.
Sua cidade é: São Paulo.

Atente para os espaços. Se eu não tivesse colocado o " " entre nome e sobrenome (nome+" "+sobrenome), nome_completo ficaria com o valor "JoséManolo", e não "José Manolo".


5 - De real para string

Para usar um número como se fosse string, você tem que transformá-lo em string. A função string() faz isso.

show_message("Sua idade é: "+string(idade)+".");

Será mostrado na tela:

Sua idade é: 15.

Assim, pode-se desenhar valores na tela, como a vida ou pontos.

draw_text(x, y, "Vida: "+string(vida)+"#Pontos: "+string(pontos));


6 - De string para real

Também é possível transformar strings em números reais, com a função real(). Talvez não seja muito importante para aplicações simples, mas vou aproveitar a oportunidade e falar de uma aplicação de strings em algo mais avançado, apoiando o que eu disse na introdução deste tutorial.

Imagine que você não gosta do editor de rooms do GM (talvez você não precise imaginar XD) e quer criar um editor de fases ou mapas para o seu jogo, que salve num formato próprio que será lido e interpretado pelo jogo. E agora, como fazer isso? Será que você terá que continuar usando o pobre editor de rooms do GM? Se você souber utilizar bem strings, não. (ufa!)

Eu não vou fazer um exemplo disso aqui, seria demorado e inconveniente, mas vou explicar. Você teria que:
* pensar em tudo que deveria ser guardado no arquivo para seu jogo ler depois - instâncias, posição e outras características delas que fossem necessárias;
* de algum modo, salvar tudo no arquivo - para salvar valores reais como a posição, teria que usar a função string;
* por último, na hora de o jogo ler o arquivo, usar as funções que lidam com strings para separar e utilizar os valores nele escritos. Aqui é que entra a função real(): Para que o jogo entendesse os valores numéricos lidos como strings do arquivo, esses teriam que ser transformados em reais.

Por exemplo, se você salvasse, em uma linha do arquivo, o nome de um objeto e a posição (x, y) em que uma instância dele seria criada, assim:

obj_Parede;64;32

Essa linha toda seria lida como uma string só, você teria que separá-la em três strings, retirando os ";" ("obj_Parede", "64" e "32") e transformar as duas últimas em reais para saber a posição da instância na hora de criá-la.


7 - Funções

Funções podem tanto receber strings como argumentos quanto retornar strings.

7.2 - Retornar
Um exemplo de função que retorna uma string é a get_string(). Ela pede uma string para o usuário/jogador, e a retorna. Então, você pode armazená-la numa variável.

seu_nome = get_string("Digite seu nome: ", "Anônimo");

7.1 - Receber como argumento
Acima, já usei algumas vezes a função show_message(), que recebe uma string como argumento e desenha-a numa janela de mensagem: show_message(string). string pode ser uma string (ex.: "Seu nome é: "), uma variável (ex.: nome_completo), o valor retornado por uma função (ex.: string(idade)) ou a junção de várias dessas, como visto no tópico 4.


Conclusão

Ao utilizar strings, um ponto importante é você ter bastante atenção. Tenha cuidado com espaços e pontuação ao concatenar strings. Não colocá-los pode dar uma aparência pouco profissional ao jogo. Uma aspa fora do lugar estraga tudo e pode ser difícil de encontrar!

Agora que você já terminou de ler este tutorial, você já deve estar capaz de usar as strings sem problemas, brincar com a concatenação de strings (e ainda aprendeu uma palavra nova! (ou não)), desenhar valores numa HUD, e quem sabe criar seus próprios formatos de arquivo. Leia no Help do GM sobre as funções que trabalham com strings para aprender mais.

Obs.: Antes de "me despedir", voltando ao assunto de que falei lá no início: se você não sabe bem, bem de verdade, alguma daquelas coisas que citei, aconselho que vá em busca de tutoriais sobre elas para aprender bem, bem de verdade. Eu ia colocar links sobre aqueles assuntos, mas também não posso dar tudo mastigado. Além disso, se colocasse os links lá, vocês não leriam este tutorial. Laughing

Enfim, boa sorte em suas criações, agora com pleno conhecimento sobre o básico das strings!


Créditos:
Tutorial totalmente redigido por mim, Igor KinGamer. Imagem dos caracteres pega da Wikipédia.


Última edição por Igor KinGamer em Qui 17 Nov 2011, 21:19, editado 1 vez(es)
Igor KinGamer
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : Tutorial - Strings no Game Maker Empty

Medalhas x 0 Tutoriais x 1 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

Tutorial - Strings no Game Maker Empty Re: Tutorial - Strings no Game Maker

Mensagem por Ritton Qui 17 Nov 2011, 21:16

Excelente tutorial! Muito bem formatado e explicado! Gostei do modo que você aplicou seus conhecimentos em uma aula dinâmica e isso é bastante importante! Com certeza eu guardarei para mim todos esses conhecimentos e farei bom proveito! Permite eu colocar esse tutorial na minha Apostila de 1000 Tutoriais Aprovados de Game Maker?

Até mais e continue com o excelente trabalho! Happy
Ritton
Ritton

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 07/06/2011
Reputação : 2
Número de Mensagens : 673
Prêmios : Tutorial - Strings no Game Maker 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

Tutorial - Strings no Game Maker Empty Re: Tutorial - Strings no Game Maker

Mensagem por Igor KinGamer Qui 17 Nov 2011, 21:22

Obrigado. Happy
Pode colocar, a vontade. Quanto mais gente puder ver esse tutorial, melhor. Very Happy
Igor KinGamer
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : Tutorial - Strings no Game Maker Empty

Medalhas x 0 Tutoriais x 1 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

Tutorial - Strings no Game Maker Empty Re: Tutorial - Strings no Game Maker

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