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
[Carlos - Tutorial] Lógica Booleana.
+3
saim
Limalokão
Carlos L.
7 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Carlos - Tutorial] Lógica Booleana.
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 .
Nível de dificuldade: Iniciante.
Requerimentos: Uma Cabeça funcionando no seu mais perfeito juízo + GM8.
A mesma tabela mais no sistema binário.
// 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.
// 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.
A mesma tabela mais no sistema binário.
// 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.
A mesma tabela mais no sistema binário.
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.
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 .
Flw.
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 .
Nível de dificuldade: Iniciante.
Requerimentos: Uma Cabeça funcionando no seu mais perfeito juízo + GM8.
- Sistema binário:
- Porta lógica and (&&):
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 (!):
// 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 (||):
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 (^ ^):
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 && 1) = 1
!(1 && 0) = 1
!(1 && 1) = 0
A 'Porta Inversora OU' ou 'NOR' (! + ||) retorna verdadeiro quando as entradas são falsas:
!(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 ^ 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 .
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.- Games Ranking :
Notas recebidas : C
Data de inscrição : 26/09/2010
Reputação : 8
Número de Mensagens : 271
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Carlos - Tutorial] Lógica Booleana.
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!
Re: [Carlos - Tutorial] Lógica Booleana.
Opa valeu pelo coment amigão.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!
Procurei fazer o tutorial o mais claro possível principalmente para quem esta começando.
Flws.
Carlos L.- Games Ranking :
Notas recebidas : C
Data de inscrição : 26/09/2010
Reputação : 8
Número de Mensagens : 271
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Carlos - Tutorial] Lógica Booleana.
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).
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- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Carlos - Tutorial] Lógica Booleana.
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
Re: [Carlos - Tutorial] Lógica Booleana.
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
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
Re: [Carlos - Tutorial] Lógica Booleana.
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.
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
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.
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.
Carlos L.- Games Ranking :
Notas recebidas : C
Data de inscrição : 26/09/2010
Reputação : 8
Número de Mensagens : 271
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Carlos - Tutorial] Lógica Booleana.
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'.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 - = -
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- Games Ranking :
Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: [Carlos - Tutorial] Lógica Booleana.
Carlos L. escreveu: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.
- Porta lógica and (&&):
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- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [Carlos - Tutorial] Indentação.
» [Carlos - Tutorial] Vamos Argumentar.
» [Carlos - Tutorial]Operadores Aritméticos.
» [Carlos - Tutorial] Operadores Relacionais.
» [Carlos - Tutorial]Aprendendo a mexer com os efeitos do GM.
» [Carlos - Tutorial] Vamos Argumentar.
» [Carlos - Tutorial]Operadores Aritméticos.
» [Carlos - Tutorial] Operadores Relacionais.
» [Carlos - Tutorial]Aprendendo a mexer com os efeitos do GM.
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos