Tutorial - Strings no Game Maker

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

Tutorial - Strings no Game Maker

Mensagem por Igor KinGamer em 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.


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

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Tutorial - Strings no Game Maker

Mensagem por Ritton em 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

Ranking : Nota C
Número de Mensagens : 673
Idade : 18
Data de inscrição : 07/06/2011
Notas recebidas : C
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Tutorial - Strings no Game Maker

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

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

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Tutorial - Strings no Game Maker

Mensagem por Conteúdo patrocinado Hoje à(s) 16:18


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