Mostrando postagens com marcador GML. Mostrar todas as postagens
Mostrando postagens com marcador GML. Mostrar todas as postagens

sábado, 8 de setembro de 2012

Aula 1 de GML

Entendendo o Funcionamento do GML: As Estruturas do GML.

Objetivo:
 Entender como definir os códigos em GML.
Dificuldade: Depende da sua leitura e atenção.
Ferramenta: GM7 ou GM8.

Esta aula também é teorica, mas vamos introduzir alguns aspectos básicos do GM, então você deverá acompanhá-la usando o programa dessa vez (e pelas próximas aulas também).

(Obs: Como dito, essas aulas serão um pouco da tradução do Manual do Game Maker/Ajuda do Game Maker, somado a interpretações e testes próprios meus e dos meus amigos que estarão fazendo as aulas também)


Usando o GML no seus Projetos:

Para começar, temos que saber onde digitar os nossos códigos de GML.
Existem 3 Lugares no GM que eles podem ser usados:

Na Pasta Scripts, você pode criar um novo script. (Scripts só servem para GML, e eles trabalham melhor que as outras funções, pois são lidos primeiro. Portanto sempre que possivel os usaremos)
Nos Objetos, na Aba Control existe um ícone de 'papelzinho' que tem o nome Piece of Code (PT: Peça/Pedaço de Código). Para usá-los basta você arrastar para dentro de um Evento.
Nas Rooms. Na Aba Settings das rooms existe um botão com o nome Creation Code, lá você digitar códigos de GMl que você quer que aconteçam quando aquela room especificamente é criada.

Agora que sabemos como usar as ferramentas de GML que o Game Maker nos disponibiliza, vamos criar um novo Obj e chamá-lo de Hero, então nele adicione um Evento Step.
Vá na Aba Control e arraste um Piece of Code para dentro do Evento Step.
Agora você poderá abrir o script e ver uma página em branco. Deixe ele quieto aí até que você precise usá-lo.

Por hora continuemos o estudo.

Estruturas de GML: Program, Assignment, Expressions e Statements.


Program - Programa

Em GML chamamos de 'Program' tudo que é declarado dentro de um script entre os simbolos { }.
O arquivo de ajuda do Game Maker nos diz o seguinte sobre Programas:

"Um programa consiste em várias instruções, chamadas Statements (PT: Declarações). Um programa deve começar com o Símbolo "{" e terminar com o Simbolo "}" (Nós aqui na Aula chamaremos eles de Start of a Block e End of a Block, respectivamente, como o Drag&Drop homônimo). Entre esses simbolos ficam os Statements. Os Statementsdevem ser ser separados pelo Simbolo ";" (Na verdade não é obrigatório, mas não usar causa bugs nos códigos muito mais frequentemente).
Então a estrutura global de qualquer Programa é:

CODE: 
{
<statement>;
<statement>;
...
}

Existem vários tipos de Statements, que veremos a seguir."
- Ajuda do Game Maker, por Mark Overmars


É bem fácil compreender o significado de um Program.
Então agora, quando o GM acusar um erro no seu script dizendo "Program Ends before the end of the Code" (PT: O Programa acaba antes do fim do Código), você vai entender o que ele quer dizer.
Nesse caso o GM está dizendo que o Programa acaba "}" mas tem códigos depois dele, que deveriam estar dentro dele ou em outro lugar, e isso causa o erro.


Assignments - Atribuições

Assignments são as operações que você coloca dentro dos Statements ou Programs. Assignments servem para mudar valores de variaveis.
Os Assignments devem ser sempre seguido de uma Expres​sion(veja a seguir), vamos mostrar três exemplos de Assignments, como se fosse em um Evento Create de um Obj:
Exemplo 1
CODE: 
direita=true;

Exemplo 2
CODE: 
inimigo_inicial_position=hero.x+128;

Exemplo 3
CODE: 
divisor=pi;

Veja que Assignments podem ser qualquer coisa: a definição true/false no Exemplo 1, uma definição de posição de objetos como no Exemplo 2, ou até operações matemáticas que envolvem trigonometria, como no Exemplo 3.
A estrutura das Assignments é sempre esta:
CODE: 
<variavel>=<expressão>

Expressões podem ser simples, como true/false ou um número, até coisas realmente complexas, como funções 3D, etc.
Expressões podem variar muito, e as Variaveis mais ainda! ("talvez seja por isso que se chamam VARIAVEIS né DHarrison?! Dããã")
Por isso separamos uma aula só para Variaveis, que será a próxima aula.


Expressions - Expressões

São as expressões que fazem realmente a mágica acontecer no Game Maker. Elas definem o que deve ou não ser feito, e são importantíssimas.
Elas podem ser Números Reais (como 1, 4, 100), números Hexadecimais, começando com o Simbolo "$" (Como cores por exemplo, $f42525. Essa é a cor Vermelho em Hexadecimal). Também podem ser Strings (Frases) quando colocadas entre 'aspas' ou "aspas duplas", e essas frases podem ter multiplas linhas (procure aulas de Draw Text para aprender mais sobre isso).
Para Expressions usamos os seguintes Binary Operators (PT: Operadores Binários), listando os de maior prioridade no topo da lista (as aspas não fazem parte do código, exceto se especificado o contrário):

1 - "&&" "||" "Happy": combinam valores Boolean* (&& = and, || = or, Happy = xor)
*Bool.e.an (adj) diz-se do sistema combina­tório lógico (álgebra booleana) que representa simbolicamente relações entre entidades. Em outras palavras, esses simbolos agem na lógica da programação de GML, por exemplo:
CODE: 
If (keyboard_check(vk_right)) || (keyboard_check(vk_numpad6))

ou pode ser também escrito:
CODE: 
If (keyboard_check(vk_right)) or (keyboard_check(vk_numpad6))

Nos dois casos, declaramos o começo de um código, onde SE (if) apertar a tecla Seta Direita OU Número 6 (Teclado Numérico), vai acontecer algo (que não definimos).
Se não tivesse sido usado o ||, teriamos que declarar if 2 vezes, uma para a Seta Direita e outra para o Numpad 6.

2 - "<" "<=" "==" "!=" ">" ">=": Comparações, resultam em True(1 no valor binário, que seria "SIM/VERDADEIRO") ou False (0 no valor binário, que seria "NÃO/FALSO").
As comparações são poderosas, elas que fazem as coisas funcionarem e serem definidas.
Explicando o que é cada conjunto de Simbolos:
< - "Menor que"
<= - "Igual ou Menor que"
== - "Exatamente Igual"
!= - "Diferente" (O simbolo ! no GM significa não)
> - "Maior que"
>= - "Igual ou Maior que"
Sem mais.

3 - "|" "&" "^": Operadores Bitwise** (| = bitwise or, & = bitwise and, ^ = bitwise xor
**Explicação Sobre bitwise operators, retirado do site www.guj.com.br 
1) O que são Bitwise Operators?
Re: Bitwise operators são operadores que manipulam bits, deslocando pra esquerda, ou pra direita, invertendo, fazendo operações lógicas... 
2) Para que servem?
Re: Servem para você realizar operações binárias com variáveis numéricas Aqui e acolá aparecem coisas que a gente precisa usar esses operadores.


4 - "<<" ">>": Operadores Bitwise (<< = shift left, > > = shift right). Sem Explicação Temporariamente.
---
(Nunca usei Bitwise, se alguém souber explicar melhor essa parte post aqui que eu edito) 
---

5 - "+" "-": Adição e Subtração. Não precisa explicar né? Very Happy

6 - "*" "/" "div" "mod": : Multiplicação, Divisão, "Integer Division", and Módulo.
Essa Integer Division, segundo o que pesquisei num fórum de C++, é uma divisão onde os números decimais/fracionais são descartados.
Por exemplo, 11 dividido por 4 é igual a 2.75. Mas num Integer Division será apenas 2, pois o número fracional é descartado.
Ou seja, é um Operador muito bom se você quer trabalhar apenas com números inteiros
O Módulo é o valor absoluto de uma grandeza. É apenas o algarismo que representa tal grandeza, sem o sinal.
Para calcular o modulo, tire a raiz quadrada do quadrado(²) de um número.
exemplo:
CODE: 
o modulo de 3 é 3, pois raiz (3^2) = raiz (9) = 3
o modulo de -3 é 3 tb, pois raiz ((-3)^2) = raiz (9) = 3

Em termos geométricos, o modulo é distancia entre dois pontos ou o comprimento do vetor que liga esses dois pontos.
Obs: Isso não é código de GML, só coloquei ali pra ser melhor visualizado.

Esses são os Operadores Binários que usamos nas expressões. Também há outros Operadores, que não são binários:
!: Não, torna True em False, e False em True.
-: Nega o Próximo Valor.
~: Nega o Próximo Valor Bitwise.

Você pode usar como valores das expressões: variaveis, números ou scripts que retornam algum valor.
Comparações pode ser usadas para Strings (Frases), dessa forma:
CODE: 
 str = 'Olá Mundo'

Definimos a variavel str como a frase Olá Mundo.

E Sub-expressões podem ser colocadas dentro de parênteses ( ).
Como esse exemplo:
CODE: 
 x = 23*((2+4) / sin(y))

Tradução: x = 23 multiplicado por ((2+4) dividido pel seno de (y))

Todos Operadores trabalham para formar Valores Reais.


Sei que você já está cansado de ler, por isso vamos finalizar a aula assim que acabarmos uma breve explicação sobre Statements.


Statements - Declarações


Como o nome diz, Declarações declaram algo. (Capitão Óbvio presente no Tópico)
Mas é isso mesmo, usando as declarações voce indica o que deve acontecer, e com as expressões como deve acontecer.
Por exemplo:
CODE: 
if keyboard_check(vk_enter)
{
pause_game
}

Tradução: SE apertar Enter, o Jogo Pausa.

"Bom, mas onde está o tal Statement nisso?"
O Statement é o pause_game.

Vejamos um breve exemplo para melhor compreendimento:
CODE: 
if (CONDITION)
{
    STATEMENT;
};

Esse é o IF Statement, que estudaremos na Aula 3.
IF - é um "Declarador", ele não é a Declaração (Statement) em sí, mas é ele que define ela.
CONDITION - é para saber sobre qual condição IF vai declarar algo. No caso acima, a condição era Apertar a Tecla Enter.
{ Começa um Programa.
STATEMENT - Aqui vai nossa Declaração, IF faz a checagem da CONDITION, se CONDITION fizer o que IF pede, IF vai declarar o que estiver no STATEMENT, no caso acima, pause_game para pausar o jogo.
} Fecha o programa, pois ja foi feito o que deveria ser feito.

Isso é um Statement. Uma Declaração.

Existem os seguintes "Declaradores"
IF
IF/ELSE
FOR
FOR i
WHILE
DO/UNTIL
SWITCH
WITH

Esses são os principais, e mais complexos, que estudaremos nas próximas aulas.
Temos também CONTINUE, BREAK, EXIT e REPEAT. Que são mais simples e serão explicados durante as outras aulas.


UFA! Acabou!
Espero que tenham gostado, e abaixo seque um Link para o Aplicativo de Revisão da Aula 1.


Na próxima aula: Variáveis, Variáveis Globais, Arrays e Built-in Variables. Por Markituh.

Aqueles que conhecem GML e quiserem contribuir, favor ver o tópico do projeto: Projeto Aulas de GML 


Usei todo meu ki nessa aula hoje, então por hoje é só pessoal!
Aguardem as próximas aulas que serão muito em breve.

Atencionsamente, DHarrison


EDIT: O Aplicativo de Revisão foi postado na Parte 1, pois ele não demonstra nada do que é dito nessa parte da aula, aqui é puura teoria ;)


Inicie programando em GML


Curso de G.M.L. - Parte 1 por rafael3do


Área/software: Game Maker

Autor: rafael v. f.

Dificuldade: Estrela Estrela

Requisitos: Game Maker

Sumário

  • Introdução
  • Entendendo o sistema
  • Programando
  • Operadores lógicos
  • Finalização

Introdução
A G.M.L., deixa seus jogos mto mais profissionais e inteligentes, além de ser mais fácil de programar(apenas digitar), lhe proporciona maior flexibilidade na hora de programar.
Por isso chega de enrolação e mãos a obra

Entendendo o sistema
Para se ter uma boa idéia de como é gml veja este exemplo:
Código:
if keyboard_check_pressed(vk_right)
{
x+=3
direita = true
}

ou
Código:
if keyboard_check_pressed(vk_right){x+=3; direita = true;}

Agora vamos fazer a descompilação usando a lógica e faremos uma traduçãozinha:

"if"=se
"keyboard_checked_pressed(vk_right)"=tecla direita pressionada
"{"=abre um bloco
"x+=3"=é adicionado mais 3 na usa posição "x"
"direita=true"=torna variavel "direita" verdadeira
"}"=fecha o bloco

Então, caro leitor e programador ficaria assim em português:
Código:
se tecla for pressionada(direita)
{
posiçãox+=3
direita=true
}


Agora, creio eu que deu para ter uma idéia Muito feliz

Programando
"//"= este comando aciona cometários, escreva qualquer coisa nele, pois não irá interferir no código, exemplo:
Código:
//Exemplo de comentário

"if"= este comando seria um "se", o usuário usa ele para dar um comando lógico como:
Código:
if keyboar_check_pressed(key)// seria: se apertar tecla(tecla)

"then"= este comando seria "então" e é usado para declarar o valor absoluto como:
Código:
if keyboard_check_pressed(vk_shift) thenseria: se apertar tecla(shift) então...

Declarar condição do "if" : para se fazer é usado "{" e para terminar "}" exemplo:
Código:
if keyboard_check_pressed(vk_shift){var_qualquer+=1}seria: se apertar tecla(shift){var_qualquer+=1

Condição do tipo "and": A condição "and" coloca dois eventos em uma só condição, ou seja, duas coisas para dar um resulrado tal, exemplo:
Código:
if keyboard_check_pressed(vk_shift) and direita=true {var_qualquer+=1 direita=false}//se apertar tecla(shift) e direita=true {var_qualquer+=1 direita=false}

Condição do tipo "or": muitas pessaos confudem "and" com "or", por parecerem diferentes mais "or" é diferente de "and", pois or funciona como qualquer um dos dois eventos vai gerar um resultado e "and" não tem esse efeito, pois ela precisa de dois eventos e não de um entre dois eventos, exemplo:
Código:
if keyboard_check_pressed(vk_shift) or                            keyboard_checked_pressed(vk_ctrl){var_qualquer+=1}

Codição de negação "else": esta condição gera o contrário da condição que está usando "if", ou seja, gera uma negação que seria no caso "se isso num acontecesse" ou "senão", exemplo:
Código:
if var_qualquer=1
{var_qualquer+=1}
else
{var_qualquer-=1}


Agora vocês devem estar tendo uma boa idéia, né?:wink:
Pois bem, a partir de agora vermos o que deve ser feito no game maker para declarar as variáveis:

Primeiro: clique em "add event" e logo depois crie um create > "execute a piece of code", lá você declara as variáveis

Segundo: clique em "add event" e logo depois crie um create > "step of code", lá você declara as modifções das variáveis

Pronto, agora voc^}e viu que num é um bicho de sete cabeças, ok?

Operadores Lógicos
Aqui num há problema é só isso:
1+=1 é o mesmo que 1+1
1-=1 é o mesmo que 1-1
1/=1 é o mesmo que 1:1
1*=1 é o mesmo que 1x1
obs: os que estão na esquerda o game maker compila e os outros não.

Finalização
Espero ter ajudado os inicantes que começaram a iniciar em G.M.L. e que acima de tudo quero dividir meus conhecimentos com vocês.

Saiba o que é GML

Game Maker Language, ou GML, é a linguagem de programação embutida no Game Maker. Ela é uma linguagem simples e fácil de aprender. A linguaguem é parecida com a maioria das linguagens de programação.
USO
Esta linguagem de programação pode ser usada para criar jogos,programas,animações e aplicativos em geral. Bastando apenas um bom estudo e entendimento de suas características.

A GML(Game Maker Language) suporta vários itens de programação, tais como:
  • O uso de variáveis
  • O uso de funções pré-determinadas, como as de sin(x), seno, e cos(x), cosseno.
  • O uso de funções determinadas pelo usuário, tanto as que retornam um valor quanto as que executam funções pré-determinadas(mover uma coisa, fechar a janela, mover a janela e etc.).
  • O uso de variáveis pré-determinadas.
  • A verificação de váriaveis pré-determinadas e only-read somente leitura. Por exemplo: A largura do monitor, que obviamente não pode ser alterada por código.
  • A criação das próprias variáveis locais, ou seja, variáveis que pertencem somente a um objeto. Por exemplo: x e y, que determinam a posição do objeto no jogo.
  • A criação de variáveis globais, que podem ser lidas por qualquer objeto sem a necessidade de escrever o nome do objeto que a iniciou. Váriaveis globais não declaradas devem ser escritas como "global.variável", enquanto as que forem declaradas pelo código "globalvar variável;" são escritas variável, sem a necessidade de global
  • O uso de condicionais como
    • if(condição) se a condição for verdadeira
    • while(Condição) enquanto a condição for verdadeira
    • do programa until(Condição) executar o programa, código, até condição for verdadeira
    • for(1° variável=valor;condição;alteração na 2° variável) altera o valor da 1° váriavel; verifica se a condição é verdadeira; executa o código; altera o valor da 2° variável, o programador especifíca como; verifica a condição de novo. Isso se segue até que a condição seja FALSA. Diferente das outras condições esse loop só acaba quando a condição é falsa. A 1° e a 2° variável podem ser a mesma variável.
  • Comentários no código de uma linha, usando //
  • Comentários no código de várias linhas, começando em /* e terminado em */
  • Chaves, { e }, para condicionais multilinha. Colocando uma chave de abertura, "{", no começo da condição e uma de fechamento, "}", no término da condição.
  • O uso de constantes pré-determinadas, tais como:
    • pi, o valor irracional mais famoso do mundo, vale 3,14159…
    • true, verdadeiro, vale 1
    • false, falso, vale 0
  • O uso de constantes criadas pelo usuário.

A GML possui diversos itens para a criação de jogos. Entre eles: