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
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Hoje à(s) 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

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


[Carlos - Tutorial] Lógica Booleana.

+3
saim
Limalokão
Carlos L.
7 participantes

Ir para baixo

[Carlos - Tutorial] Lógica Booleana. Empty [Carlos - Tutorial] Lógica Booleana.

Mensagem por Carlos L. Seg 14 Fev 2011, 11:00

Nome: Lógica Booleana.
Descrição: Neste tutorial abordarei um pouco a lógica booleana, explorando sistema binário e os quatro operadores lógicos mais importantes além de ser os únicos com que o Game Maker trabalha que são eles (and, not, or e xor) então boa leitura e vamos nessa feliz3.
Nível de dificuldade: Iniciante.
Requerimentos: Uma Cabeça funcionando no seu mais perfeito juízo + GM8.

  • Sistema binário:
O sistema binário e um sistema onde só se trabalha com um e zero, e é com esse sistema que o computador trabalha ou seja tudo que você faz no seu computador e representado como um e zero e segundo a lógica booleana 1=Verdadeiro (true), e 0=falso (false).

  • Porta lógica and (&&):
A porta lógica and em português significa e é ela só será executada se ambas as declarações forem verdadeiras, sendo assim temos a seguinte tabela.
true + true = true
true + false = false
false + true = false
false + false = false

A mesma tabela mais no sistema binário.
1 * 1 = 1
1 * 0 = 0
0 * 1 = 0
0 * 0 = 0


// Exemplo do uso da porta lógica AND.

var _var1, _var2, _var3;
_var1 = 'Deu certo';
_var2 = false;
_var3 = false;

if (_var2 = false and _var3 = false)
{
draw_text(x,y,""+string(_var1));
}

Entendendo o que foi feito:
Ao executar o programa ele irá checar os valores dados as variáveis logo em seguida ele irá checar a pergunta feita (nesse caso perguntava se as duas variáveis eram falsas) e em seguida se o resultado for verdadeiro ele executara o código caso não seu código não será executado.

  • Porta lógica not (!):
a porta lógica not em português significa não, na programação ela será interpretada seguindo a lógica de seu código (se não existe um objeto, se não foi pressionada uma tecla, etc...).

// Exemplo do uso da porta lógica NOT.

if not(instance_exists(bloco))
{
room_goto_next();
}

Entendo o que foi feito:
O código usado como exemplo e muito usado em jogos de Arknoid, Breakout (nintendo vs atari), pois ele checa se não existe nenhuma instância bloco na room, caso não exista ele passa de fase, mas ai você me pergunta "E o que foi que o not fez?" o not nesse caso irá fazer com que o código em si cheque se NÃO existe a instância bloco na room, sem o not ele simplesmente iria checar se existe algum bloco na room e se existisse ele passaria de room.

  • Porta Lógica or (||):
A porta lógica or em português significa ou, e na programação ela checa se uma das variáveis tem valor verdadeiro caso sim ela executará o código caso não, o código não será executado, seguindo esse raciocino temos a seguinte tabela.
true + true = true
true + false = true
false + true = true
false + false = false

A mesma tabela mais no sistema binário.
1 * 1 = 1
1 * 0 = 1
0 * 1 = 1
0 * 0 = 0


// Exemplo do uso da porta lógica OR.

var _var1, _var2, _var3;
_var1 = 'Deu certo';
_var2 = true;
_var3 = true;

if (_var2 = false or _var3 = false)
{
draw_text(x,y,''+string(_var1));
}

Entendendo o que foi feito:
Automaticamente quando foi executado o programa verificou se alguma das duas variáveis tem o resultado falso, se alguma das duas ou as duas tiver o resultado falso ele irá desenhar o resultado na tela, caso nenhuma das duas tenha o resultado igual a falso ele não irá desenhar nada na tela.
No caso do exemplo acima como não coloquei nenhuma das duas variáveis com verificação verdadeira nesse caso nâo irá resultar em nada sendo assim não irá desenhar nada na tela, mas, se mudarmos o resultado de alguma da duas vars para true ao executar o programa ele irá desenhar o resultado na tela, por que agora ele terá uma verificação verdadeira, e automaticamente ele executará o código seguinte.

  • Porta Lógica xor (^ ^):
A porta lógica xor e um or exclusivo e irá retornar um valor verdadeiro somente-se os dois valores forem diferentes, caso eles sejam iguais ele irá retornar um valor falso, sendo assim temos a seguinte tabela.
true + true = false
true + false = true
false + true = true
false + false = false

A mesma tabela mais no sistema binário.
1 * 1 = 0
1 * 0 = 1
0 * 1 = 1
0 * 0 = 0

Agora vamos ver um código usando o xor.

// Exemplo usando aporta lógica XOR.

var _var1, _var2, _var3;
_var1 = 'Deu certo';
_var2 = true;
_var3 = false;

if (_var2 xor _var3 = false)
{
draw_text(x,y,""+string(_var1));
}

Entendendo o que foi feito:
Agora vamos entender o que a porta lógica xor fez, assim que o programa foi executado ele leu as variáveis, então ele foi executar o programa e o xor verificou as duas variáveis ao verificar ele retornou dois valores diferentes assim o resultado seria true seguindo nossa tabela mas no código nos só queremos que ele processe e desenhe nossa string na room se o resultado for igual a false(0) então seria necessário dois valores iguais ou seja o código ficaria desse jeito.

var _var1, _var2, _var3;
_var1 = 'Deu certo';
_var2 = true;
_var3 = true;

if (_var2 xor _var3 = false)
{
draw_text(x,y,""+string(_var1));
}

Retornado um valor falso por que as variáveis tem o mesmo valor.

:arrow: Complemento dado pelo usuário Fuzenrad.

Só complementando, a junção das portas NOT (!) com AND (&&), OR (||) e XOR (^) possuem nomes próprios, são elas: NAND, NOR e XNOR.

A 'Porta Inversora E' ou 'NAND' (! + &&) retorna falso quando as entradas são verdadeiras:
!(0 && 0) = 1
!(0 && 1) = 1
!(1 && 0) = 1
!(1 && 1) = 0


A 'Porta Inversora OU' ou 'NOR' (! + ||) retorna verdadeiro quando as entradas são falsas:
!(0 || 0) = 1
!(0 || 1) = 0
!(1 || 0) = 0
!(1 || 1) = 0


E finalmente a 'Porta Inversora OU Exclusivo' ou 'XNOR' (! + ^) que retorna verdadeiro quando as entradas são iguais:
!(0 ^ 0) = 1
!(0 ^ 1) = 0
!(1 ^ 0) = 0
!(1 ^ 1) = 1


Pronto cheguei ao fim do tutorial, espero que a galera tenha gostado, qualquer erro ou equivoco meu é só avisar blz .
Flw.

---EDIT---
Mudança do sinal dos sistemas binários, citados pelos Janx para um melhor entendimento, e agradecimento ao Fuzenrad pelo complemento do tutorial com a explicação das portas: NAND, NOR e XNOR.


Última edição por Carlos L. em Qui 28 Abr 2011, 21:06, editado 6 vez(es)
Carlos L.
Carlos L.

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 26/09/2010
Reputação : 8
Número de Mensagens : 271
Prêmios : [Carlos - Tutorial] Lógica Booleana. 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

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por Limalokão Seg 14 Fev 2011, 11:47

Muiiito bom cara, isso ajuda muito em criação de variaveis e "varialoucas" certo de que a pessoa tem que gostar de programação para mexer no GM EU especialmente adoro e gostei muito da sua aula em bora eu ja sabia sobre o not e o or mas aprendi tambem o and e o "xor" PqP nem sabia que existira isso "xor" KKKK Vlws cara coccerteza irá ajudar muita gente!
Limalokão
Limalokão

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 24/11/2009
Reputação : 10
Número de Mensagens : 805
Prêmios : [Carlos - Tutorial] Lógica Booleana. 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
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0


https://llgd.com.br

Ir para o topo Ir para baixo

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por Carlos L. Seg 14 Fev 2011, 19:24

Soul Limaloko escreveu:Muiiito bom cara, isso ajuda muito em criação de variaveis e "varialoucas" certo de que a pessoa tem que gostar de programação para mexer no GM EU especialmente adoro e gostei muito da sua aula em bora eu ja sabia sobre o not e o or mas aprendi tambem o and e o "xor" PqP nem sabia que existira isso "xor" KKKK Vlws cara coccerteza irá ajudar muita gente!
Opa valeu pelo coment amigão.
Procurei fazer o tutorial o mais claro possível principalmente para quem esta começando.
Flws. Very Happy
Carlos L.
Carlos L.

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 26/09/2010
Reputação : 8
Número de Mensagens : 271
Prêmios : [Carlos - Tutorial] Lógica Booleana. 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

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por saim Qui 14 Abr 2011, 16:14

Dá pra mandar uns exemplos práticos, além de incluir os operadores >> e << ?
Eu vi, em algum lugar, um jeito de usar booleanas pra alterar a direção. Tipo 0001 era uma direção, 0010 era outra, e aí por diante (mas não sei direito como era, me desculpe).
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 : [Carlos - Tutorial] Lógica Booleana. 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

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por sonic luan Qui 14 Abr 2011, 19:34

muito bom otimo tutorial exelente nota : 10,0 vai me ajudar muito eu so conhecia a a Not mas agora grasas a esse seu otimo tutorial eu sei mas coisas queria seber onde voçes aprendem esas coisas o bom que eo vou saber tambem adoro esse forum Very Happy
sonic luan
sonic luan

Games Ranking : Nota C

Notas recebidas : C-D-A-C
Data de inscrição : 28/01/2011
Reputação : 18
Número de Mensagens : 1003
Prêmios : [Carlos - Tutorial] Lógica Booleana. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

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

http://sonicmaker.forumeiros.com/memberlist

Ir para o topo Ir para baixo

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por Dan044 Qui 14 Abr 2011, 20:36

Muito bom o turorial. Só não sei pra que serve!
A 1ª tabela me lembrou de números negativos e positivos:
+ com + = +
+ com - = -
- com + = -
- com - = -

\o

Ah, e... pra q escrever em itálico? o.O
Dan044
Dan044

Games Ranking : Nota D

Notas recebidas : 3D Snake - D
Data de inscrição : 14/11/2010
Reputação : 3
Número de Mensagens : 209
Prêmios : [Carlos - Tutorial] Lógica Booleana. 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

http://www.chefreceitas.blogspot.com

Ir para o topo Ir para baixo

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por Carlos L. Sex 15 Abr 2011, 17:07

saim escreveu:Dá pra mandar uns exemplos práticos, além de incluir os operadores >> e << ?
Eu vi, em algum lugar, um jeito de usar booleanas pra alterar a direção. Tipo 0001 era uma direção, 0010 era outra, e aí por diante (mas não sei direito como era, me desculpe).

Opa beleza, esses operadores (<< e >>) são outro assunto que quando tiver tempo provavelmente postarei um tutorial, e sobre os exemplos creio que não seja necessário pois você deve usar o and, o not, o or e o xor constantemente em seus jogos mais se você precisar me avise por MP. flw

sonic luan escreveu:muito bom otimo tutorial exelente nota : 10,0 vai me ajudar muito eu so conhecia a a Not mas agora grasas a esse seu otimo tutorial eu sei mas coisas queria seber onde voçes aprendem esas coisas o bom que eo vou saber tambem adoro esse forum Very Happy

Opa amigo tenho um conselho a lhe dar, se você quer seguir na área de programação não procure ficar preso somente no GM procure ler uns livros de lógica primeiramente para expandir seu raciocínio no quesito programação, aprenda outras linguagens, mas, não largue o GM pois creio que ela e uma ótima ferramenta e futuramente acho que ela possa estar trabalhando com dispositivos portáteis. flw

Dan044 escreveu:Muito bom o turorial. Só não sei pra que serve!
A 1ª tabela me lembrou de números negativos e positivos:
+ com + = +
+ com - = -
- com + = -
- com - = -

\o

Ah, e... pra q escrever em itálico? o.O

Olha não tenho muito o que lhe dizer, o tutorial e para iniciantes saberem como funciona a coisa para ter um primeiro olhar, sobre essa tabela ela funciona da mesma forma que na programação mais ai e uma tabela da relação dos sinais na multiplicação e divisão, não esqueça que a programação está diretamente relacionada com a matemática.
E sobre o itálico e mania.
flw
Carlos L.
Carlos L.

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 26/09/2010
Reputação : 8
Número de Mensagens : 271
Prêmios : [Carlos - Tutorial] Lógica Booleana. 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

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por Fuzenrad Sáb 16 Abr 2011, 16:48

Dan044 escreveu:Muito bom o turorial. Só não sei pra que serve!
A 1ª tabela me lembrou de números negativos e positivos:
+ com + = +
+ com - = -
- com + = -
- com - = -
Não exatamente, a porta lógica 'OR' (||) é uma soma e a 'AND' (&&) uma multiplicação, porém na matemática 'negativo' multiplicado por 'negativo' é igual á 'positivo'.

Só complementando, a junção das portas NOT (!) com AND (&&), OR (||) e XOR (^) possuem nomes próprios, são elas: NAND, NOR e XNOR.

A 'Porta Inversora E' ou 'NAND' (! + &&) retorna falso quando as entradas são verdadeiras:

!(0 && 0) = 1
!(0 && 1) = 1
!(1 && 0) = 1
!(1 && 1) = 0

A 'Porta Inversora OU' ou 'NOR' (! + ||) retorna verdadeiro quando as entradas são falsas:

!(0 || 0) = 1
!(0 || 1) = 0
!(1 || 0) = 0
!(1 || 1) = 0

E finalmente a 'Porta Inversora OU Exclusivo' ou 'XNOR' (! + ^) que retorna verdadeiro quando as entradas são iguais:

!(0 ^ 0) = 1
!(0 ^ 1) = 0
!(1 ^ 0) = 0
!(1 ^ 1) = 1
Fuzenrad
Fuzenrad

Games Ranking : Nota A

Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios : [Carlos - Tutorial] Lógica Booleana. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

Mensagem por Janx Qui 28 Abr 2011, 18:42

Carlos L. escreveu:
  • Porta lógica and (&&):
A porta lógica and em português significa e é ela só será executada se ambas as declarações forem verdadeiras, sendo assim temos a seguinte tabela.
true + true = true
true + false = false
false + true = false
false + false = false

A mesma tabela mais no sistema binário.
1 + 1 =1
1 + 0 = 0
0 + 1 = 0
0 + 0 = 0


Ficaria mais óbvio o significado se você trocasse o sinal de "+" por "*".
1*1*0*1*0 = 0 -> false
1*1*1 = 1 -> true
0*0*1 = 0 -> false
É só uma sugestão, achei que a parte "0+1 = 0" ficou muito estranha...

Mas esse é um bom tutorial, ganhou selo de qualidade ;D
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : [Carlos - Tutorial] Lógica Booleana. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

[Carlos - Tutorial] Lógica Booleana. Empty Re: [Carlos - Tutorial] Lógica Booleana.

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