Mostrando postagens com marcador pt-br. Mostrar todas as postagens
Mostrando postagens com marcador pt-br. Mostrar todas as postagens

Curso de Pascal | Aula 06 - Vetores

 Se você quer armazenar e manipular conjuntos de valores de forma organizada, os vetores (ou arrays) são fundamentais. Nesta sexta aula do nosso curso de Pascal grátis, você aprenderá a criar, acessar e percorrer vetores, além de resolver problemas práticos usando essa estrutura de dados.

Um vetor é um conjunto indexado de elementos do mesmo tipo. Em Pascal, ele pode ser estático (com tamanho fixo) ou dinâmico, mas aqui trabalharemos com vetores estáticos, em que cada posição guarda um valor e é acessada por um índice. Os índices não precisam começar em 1 – podem iniciar em 0 ou qualquer outro valor inteiro, proporcionando flexibilidade para representar diferentes situações.

🎯 O que você vai aprender nesta aula

  1. Conceito de vetor e analogia com uma fila de senhas.

  2. Declaração de vetores em Pascal com diferentes intervalos de índices.

  3. Acesso e manipulação de elementos, incluindo índices negativos.

  4. Uso de laços for para preencher e percorrer vetores.

  5. Exercícios práticos envolvendo leitura de números, filtragem de pares, cálculo de médias e outras operações.


📺 Assista à Aula 6




📚 Conteúdo da Aula

O que é um vetor?

Um vetor é uma estrutura que armazena uma sequência ordenada de elementos do mesmo tipo. Pense em uma fila de senhas com dez posições; cada posição guarda um número, e você pode acessar qualquer uma delas diretamente pelo índice (a posição na fila).

Como declarar um vetor em Pascal

Para criar um vetor estático em Pascal, usamos a sintaxe:

var numeros: array[1..10] of integer;

Esse exemplo declara numeros com dez posições, indo do índice 1 ao índice 10. Os índices não precisam começar em 1: podemos declarar um vetor com índices de -55, ou mesmo começar em 0:

var exemplo: array[-5..5] of integer;

Acessando elementos do vetor

Cada posição do vetor é acessada com o operador []. No exemplo abaixo, usamos índices negativos para representar os dias passados, onde 0 é o dia atual:

var clima: array[-4..0] of string; begin clima[-4] := 'Chuva'; clima[-3] := 'Nublado'; clima[-2] := 'Ensolarado'; clima[-1] := 'Parcialmente nublado'; clima[ 0] := 'Chuva leve'; end.

Assim, clima[0] contém o clima de hoje e clima[-2] representa anteontem.

Usando laços para preencher e percorrer vetores

Quando o vetor possui várias posições, não é prático atribuir valores manualmente. Em vez disso, utilizamos laços for. Por exemplo, para ler cinco números digitados pelo usuário:

var i: integer; numeros: array[1..5] of integer; begin for i := 1 to 5 do begin write('Digite o número da posição ', i, ': '); readln(numeros[i]); end; end.

Para exibir os valores:

for i := 1 to 5 do writeln('Posição ', i, ': ', numeros[i]);

Também é possível preencher vetores automaticamente:

for i := 1 to 5 do numeros[i] := i * 10; randomize; for i := 1 to 5 do numeros[i] := random(100); // valores de 0 a 99

Exemplo completo: Mostrar apenas os pares

var i: integer; numeros: array[1..5] of integer; begin for i := 1 to 5 do begin write('Digite o número ', i, ': '); readln(numeros[i]); end; writeln('Números pares digitados:'); for i := 1 to 5 do if (numeros[i] mod 2 = 0) then writeln(numeros[i]); end.

📝 Exercícios

  1. Scanner de números positivos: leia dez números e mostre somente os positivos.

  2. Mini banco de notas: armazene quatro notas e calcule a média final.

  3. Caça ao maior número: leia sete números e mostre qual foi o maior.

  4. Contador de pares e ímpares: conte e exiba quantos números pares e ímpares foram digitados.

  5. Soma dos elementos extremos: some o primeiro e o último valor do vetor.


✍️ Exercício proposto para a aula

Faça um programa em Pascal que leia seis nomes de pessoas e depois exiba:
• O primeiro nome digitado
• O último nome digitado
• Todos os nomes em ordem inversa

Treine bastante! Quanto mais você pratica a manipulação de vetores, mais naturais se tornam essas operações no dia a dia da programação.


📂 Recursos

📜 Código Fontehttps://github.com/Programming-Drops/pascal-course

Curso de Pascal | Aula 05 - Manipulando Strings

Se você quer dominar a manipulação de textos no Pascal e escrever programas que tratem dados de forma eficiente, essa quinta aula do nosso curso de Pascal grátis é para você! Nessa etapa exploramos como acessar cada caractere de uma string, localizar e substituir partes do texto e utilizar a unit SysUtils, compatível com a versão Delphi e presente em todas as plataformas suportadas. Também conhecemos funções essenciais como Length – que retorna o tamanho de uma string ou array – e LowerCase e UpperCase, que transformam toda a string em minúsculas ou maiúsculas.

🎯 O que você vai aprender nesta aula

  1. O que são strings em Pascal e como indexar cada caractere.

  2. Como localizar e substituir caracteres ou trechos dentro de uma string.

  3. Como utilizar a unit SysUtils e suas rotinas de manipulação de texto.

  4. Como usar as funções Length, LowerCase e UpperCase para medir e alterar o texto.

  5. Exercícios práticos: contar vogais em um texto e capitalizar a primeira letra de cada palavra.


📺 Assista à Aula 5


📚 Conteúdo da Aula

Uma string em Pascal é uma sequência de caracteres. Nesta aula mostramos como acessar cada caractere pelo índice (por exemplo, S[i]) e como percorrer a string com loops. Você aprenderá a trabalhar com a unit SysUtils, que oferece várias utilidades, como:

  • Length(s) – retorna o tamanho de uma string ou array;

  • LowerCase(s) – gera uma versão totalmente em minúsculas;

  • UpperCase(s) – gera uma versão totalmente em maiúsculas.

Exemplo de uso:

var s: string; begin s := 'Olá Mundo'; writeln('Tamanho: ', Length(s)); // imprime 9 writeln(LowerCase(s)); // olá mundo writeln(UpperCase(s)); // OLÁ MUNDO end;

📝 Exercícios

  1. Contar vogais: escreva um programa que percorra um texto e conte quantas vezes cada vogal aparece.

  2. Capitalizar palavras: crie um procedimento para colocar a primeira letra de cada palavra em maiúscula (ex.: fulano de talFulano De Tal).

Acesse o artigo completo no blog para ver o código fonte e as soluções desses desafios.

📌 Próxima aula: veremos como utilizar vetores no Pascal.


📂 Recursos

📜 Código Fontehttps://github.com/Programming-Drops/pascal-course

Curso de Pascal Grátis | Aula 4: Procedimentos e Funções

Se você quer escrever códigos mais organizados, reutilizáveis e fáceis de manter, vai adorar esta quarta aula do nosso curso de Pascal grátis! 🚀

Nesta etapa, exploramos procedimentos e funções, dois recursos fundamentais para estruturar melhor seus programas, evitar repetição de código e melhorar a clareza do que você escreve.
Você vai aprender quando usar cada um, como criar parâmetros, como retornar valores e boas práticas para aplicar no dia a dia da programação.

🎯 O que você vai aprender nesta aula

  1. O que são funções e procedimentos no Pascal

  2. Quando usar funções para retornar valores

  3. Quando usar procedimentos para executar ações sem retorno

  4. Estrutura e sintaxe de cada um

  5. Exemplos práticos com cálculos e mensagens na tela


📺 Assista à Aula 4



📚 Conteúdo da Aula

Funções

Uma função é como uma máquina que recebe entradas (parâmetros), processa algo e retorna um valor como resultado.
Usamos funções quando precisamos calcular um valor e utilizá-lo em outras partes do programa.

Sintaxe:

function NomeDaFuncao(parametro1: tipo; parametro2: tipo): tipoDeRetorno;
var variavelLocal: tipo; begin // Código da função NomeDaFuncao := valorDeRetorno; end;

Exemplo – Calcular área de um retângulo:

function CalcularAreaRetangulo(base: real; altura: real): real;
begin CalcularAreaRetangulo := base * altura; end; var largura, comprimento, area: real; begin largura := 10; comprimento := 5; area := CalcularAreaRetangulo(largura, comprimento); WriteLn('A área do retângulo é: ', area); end.


Procedimentos

Um procedimento é como um robô que executa uma ação, mas não retorna valores.
Utilizamos para mostrar mensagens, manipular dados ou controlar o fluxo do programa.

Sintaxe:

procedure NomeDoProcedimento(parametro1: tipo; parametro2: tipo);
var variavelLocal: tipo; begin // Código do procedimento end;

Diferença entre Funções e Procedimentos

  • Função → sempre retorna um valor.

  • Procedimento → executa ações, mas não retorna valores diretamente.

💡 Dica: Procedimentos e funções ajudam a evitar código duplicado e tornam seu programa mais fácil de entender e manter. Sempre que encontrar um bloco de código repetido, considere transformá-lo em uma função ou procedimento.

Se você perdeu a Aula 3 – Estruturas de Controle, recomendo assistir antes para manter a sequência de aprendizado.

📌 Próxima aula: veremos manipulação de strings no Pascal.


📂 Recursos

📜 Código Fonte: https://github.com/Programming-Drops/pascal-course

Curso de Pascal Grátis | Aula 3: Estruturas de Controle

 Se você está começando a aprender programação ou quer reforçar sua base na linguagem Pascal, esta terceira aula do nosso curso de Pascal grátis é para você! 🚀

Nesta etapa, exploramos as estruturas de controle em Pascal, que são responsáveis por alterar a ordem de execução de um programa, permitindo desvios e repetições de acordo com condições específicas.
Com elas, podemos criar códigos mais inteligentes, dinâmicos e eficientes.

🎯 O que você vai aprender nesta aula

  1. O que são estruturas de controle e como elas funcionam no Pascal

  2. Estruturas de desvio: if..then e else

  3. Estruturas de repetição: for, while..do e repeat..until

  4. Diferenças entre as estruturas de repetição e quando utilizar cada uma

  5. Exemplos práticos, como tabuada, somatório e cálculo de IMC


📺 Assista à Aula 3




📚 Conteúdo da Aula

Estruturas de Controle de Desvio

  • if..then: executa um bloco de código se a condição for verdadeira.

var x: integer; begin x := 100; if (x > 200) then begin WriteLn('o valor de x é maior que 200!'); end; end.
  • else: executa um bloco de código se a condição for falsa.

var
x: integer; begin x := 100; if (x > 200) then begin WriteLn('o valor de x é maior que 200!'); end else begin WriteLn('o valor de x é menor que 200!'); end; end.


Estruturas de Controle de Repetição

Permitem a execução de um conjunto de instruções várias vezes.

  • for – repete um conjunto de instruções um número definido de vezes.

var n: integer; // variável de controle (contador)
begin for n := 1 to 10 do begin { código a ser repetido } end; end.
  • while..do – repete enquanto a condição for verdadeira.

var
x: integer; begin x := 15; while (x <= 20) do begin x := x + 1; end; end.
  • repeat..until – executa pelo menos uma vez e testa a condição no final.

var
x: integer; begin x := 1; repeat x := x + 1; until (x > 10); end.

💻 Exemplos Práticos

1. Tabuada

var
i, x: integer; begin for i := 1 to 10 do begin x := i * 2; WriteLn(i, '* 2 = ', x); end; end.

2. Somatório

var
n, soma: integer; begin n := 1; soma := 0; while (n <= 100) do begin soma := soma + n; n := n + 1; end; WriteLn(soma); end.

3. IMC – Índice de Massa Corporal
Calcule o IMC sabendo que:

IMC = peso (kg) / (altura (m) ^ 2)

Tabela de classificação:

CategoriaIMC
Abaixo do normal< 18.5
Normal18.5 a 24.9
Sobrepeso24.9 a 29.9
Obesidade> 29.9

💡 Dica: Essa é uma aula prática. Tenha seu compilador Pascal e seu editor de código prontos para digitar os exemplos junto comigo. Assim, você assimila o conteúdo muito mais rápido.

Se você perdeu a Aula 2 – Variáveis e Estruturas Condicionais, recomendo assistir antes para manter a sequência de aprendizado.

📌 Próxima aula: veremos procedimentos e funções, que permitem organizar e reaproveitar partes do código de forma mais eficiente.


📂 Recursos

📜 Código Fonte: https://github.com/Programming-Drops/pascal-course

Curso de Pascal Grátis | Aula 2 - Variáveis e Estruturas Condicionais

Se você está começando a aprender programação ou quer reforçar sua base na linguagem Pascal, esta segunda aula do nosso curso de Pascal grátis é para você!

Nesta etapa, exploramos dois conceitos fundamentais que estão presentes em praticamente todas as linguagens de programação:

  • Variáveis – o que são, como declarar, atribuir valores e escolher tipos adequados.

  • Estruturas condicionais – como criar decisões no seu código usando if...then...else e outras variações.

Com exemplos práticos, você vai entender como controlar o fluxo de execução de um programa e como armazenar e manipular dados usando variáveis.

🎯 O que você vai aprender nesta aula:

  1. Diferença entre variáveis e constantes

  2. Tipos de variáveis mais comuns no Pascal

  3. Como receber dados do usuário e armazená-los em variáveis

  4. Tomada de decisões com if e else

  5. Criando programas interativos que respondem às condições estabelecidas

📺 Assista à Aula 2



💡 Dica: Essa é uma aula prática. Tenha seu compilador Pascal e seu edidor de cógido pronto para digitar os exemplos junto comigo. Assim, você assimila o conteúdo muito mais rápido.

Se você perdeu a primeira aula, recomendo assistir antes para ter uma base sólida

📌 Próxima aula: vamos entrar no tema laços de repetição, para criar programas que executam tarefas automaticamente várias vezes.


📂Recursos

Curso de Pascal Grátis em Vídeo

Sim! É isso mesmo: um novo curso de Pascal em vídeo, totalmente gratuito, disponível em pleno 2025! 🚀

Se você tem dificuldade de encontrar material recente e de qualidade sobre a linguagem Pascal, esta é a oportunidade perfeita para começar.

Nesta primeira aula, vamos conhecer a linguagem, o ambiente de desenvolvimento e entender quais recursos básicos vamos utilizar para criar uma base sólida no aprendizado. O objetivo é conduzir você, passo a passo, ao domínio dessa linguagem fantástica que tanto amamos.

Além de apresentar os conceitos fundamentais, todos os exemplos serão desenvolvidos ao vivo, de forma interativa. Isso significa que você vai acompanhar o processo real de escrita de código, incluindo erros e como corrigi-los — exatamente como acontece na vida de um programador.

🎯 O que você vai aprender nesta aula

  1. O que é a linguagem Pascal e para que ela é utilizada.

  2. Como configurar o ambiente de desenvolvimento.

  3. Estrutura básica de um programa em Pascal.

  4. Como compilar e executar seu primeiro programa.

  5. Boas práticas para começar no mundo da programação.


📺 Assista à Aula 1


Próxima aula: veremos Variáveis e Estruturas Condicionais, para criar programas interativos e inteligentes.

📂 Recursos

📜 Código Fonte: https://github.com/Programming-Drops/pascal-course

YAMS - Um clone do Jogo Campo Minado Perdido no Tempo

Este jogo foi originalmente escrito em Delphi 7 no final de 2003 como um exercício de aprendizado da linguagem Object Pascal e da programação de jogos do Windows.

O código-fonte original foi publicado no bom e velho site Delphi Pages, que agora está, infelizmente, morto. Foi um momento de sorte incrível quando encontrei uma versão quase finalizada de seu código-fonte em um CD-ROM de backup empoeirado e agora estou disponibilizando-o novamente no Git Hub.

Ele abriu e foi compilado perfeitamente 21 anos depois, no Delphi 12. Cara, isso é simplesmente incrível!!! 😮

Essa é a cara dele rodando no Windows 11!

Espero que apreciem.


Links

Repositório: https://github.com/fabianosalles/yams

Página de relase: https://github.com/fabianosalles/yams/releases

Executáveis: x86 | x64


Criando um Game Completo - Parte 7


Bem vindo à sétima parte do nosso mini curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joysticks e uma tabela de scores online! Tudo isto compilando em Delphi e Lazarus.

Neste post iremos criar o menu inicial do game, definir a lógica de transição entre as telas e realizar os ajustes necessários na tela de gameplay para que o jogador possa voltar à tela inicial.

Criando um Game Completo - Parte 6.1

Bem vindo à parte 6.1 do nosso mini curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joysticks e uma tabela de scores online! Tudo isto compilando em Delphi e Lazarus.

Neste post, vamos complementar as melhorias introduzidas no texto anterior e criar um efeito de estrelas para deixar o plano de fundo do jogo mais interessante. A imagem ao lado mostra como ficará o visual das animações na cena do gameplay no final do processo.

Criando um Game Completo - Parte 6

Bem vindo à sexta parte do nosso mini curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joysticks e uma tabela de scores online! Tudo isto compilando em Delphi e Lazarus.

Já faz um tempo desde o último artigo da série, um ano, para ser exato e eu gostaria de começar pedindo desculpas por esta ausência tão longa. Estive envolvido com vários projetos simultâneos nestes últimos 12 meses, ministrando muitas aulas e trabalhando com sistemas embarcados, o que foi muito enriquecedor mas acabou me afastando um pouco aqui do blog. Mea culpa, mea culpa...

Bom, explicações dadas, vamos ao que interessa: nosso game!

Criando um Game Completo - Parte 5

Sequencia de introdução do game
Bem vindo à quinta parte do nosso mini curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joysticks e uma tabela de scores online!

No último artigo completamos uma versão jogável do game. Os sons, as animações o tratamento de colisões, tudo o que planejamos foi implementado com sucesso. Mas ainda falta muita coisa para o game estar, de fato, completo.

A imensa maioria do código que escrevemos está contido dentro de uma única classe: TGame. Isto vinha funcionando bem, mas conforme o game cresce, fica evidente que as classes estão acumulando responsabilidades demais. Com a necessidade de criar outras telas, é preciso isolar algumas tarefas e criar objetos mais genéricos para que possamos reutilizá-los em outras partes.

Neste post, vamos fazer uma grande refatoração no código e criar nosso próprio motor, de modo que sejamos capaz de realizar tudo o que TGame faz atualmente e começar a esconder alguns detalhes de nível mais baixo do SDL. Vamos caminhar rumo a um modelo de programação menos procedural e mais orientado a eventos, um conceito bem familiar para quem está acostumado a bibliotecas como VCL e LCL.

Espero que apreciem.

Abraços!

Criando um Game Completo - Parte 4

Game rodando em debug no Lázarus
Bem vindo à quarta parte do nosso mini-curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joystics e uma tabela de scores online!

No último artigo, o projeto começou a tomar uma cara de game. Criamos o código que distribui os inimigos na tela, incluímos o tratamento de colisões entre os tiros do jogador e os alienígenas e demos os primeiros passos na construção da interface do usuário.

Vamos seguir nossa jornada adicionando algumas animações extras, fazendo os inimigos se movimentar e atirar, ampliar a lógica de colisões para detectar os danos sofridos pelo jogador e adicionar vários efeitos sonoros.

No final, como bônus, vamos adicionar a capacidade de alternar entre os modos de tela cheia e exibição em janela. Acompanhe o código no GitHub ou faça o download nos links no final do texto e, mais uma vez, mãos à obra!

Criando um Game Completo - Parte 3

Inimigos, pontuação e colisões!
Bem vindo à terceira parte do nosso mini-curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joystics e uma tabela de scores online!

No último artigo, preparamos as fundações e demos os primeiros passos na construção do game. Agora, com as bases prontas, vamos começar a nos concentrar no conteúdo - imagens, animações e interação entre os objetos do jogo e a interface do usuário.

Este post será maior que os outros dois, construiremos objetos mais complexos e resolveremos alguns problemas mais difíceis portanto, é aconselhável baixar o código-fonte e ir acompanhando as explicações utilizando-o como referência. Caso não queira fazer o download, você também pode ver o código no repositório do GitHub.

Abraços, e mão à obra!

Criando um Game Completo - Parte 2

Modelo do controle usado para os testes
Bem vindo à segunda parte do nosso mini-curso Criando um Game Completo, onde criamos uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joystics e uma tabela de scores online!

No último artigo, criamos uma classe para encapsular a lógica do game, carregamos algumas imagens para a memória e exibimos o primeiro inimigo na tela.  Seguiremos, agora, com a animação dos sprites e a movimentação do jogador através do teclado ou do joystick.

Vamos lá!

Criando um Game Completo - Parte 1

Você não precisa ver toda a escada,
simplesmente dê o primeiro passo!
Bem vindo à primeira parte do nosso mini-curso Criando um Game Completo, onde iremos criar, do zero, uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2D, suporte a joysticks e uma tabela de scores online!

O jogo é propositalmente simples para que o leitor com pouca experiência na linguagem Pascal e no desenvolvimento de games possa acompanhar o texto e o código o início ao fim. Iremos utilizar uma abordagem mista de programação estruturada e orientada a objetos já que precisaremos interfacear com algumas bibliotecas de baixo nível, mas sempre buscaremos manter o código simples, comentando e explicando cada bloco que surgir.

O curso está divido em nove partes, com cada uma delas sendo publicada semanalmente aqui no blog. Dúvidas, críticas e sugestões poderão ser postadas livremente nos comentários.

Espero que apreciem.

Criando um Game Completo - Parte 0

Nesta série de artigos, divida em 9 partes, vamos partir do zero e criar uma versão do clássico Space Invaders compatível com Windows e Linux, utilizando aceleração de hardware para gráficos 2d, suporte a joystick e uma tabela de high scores online.

O jogo é propositalmente simples para que o leitor com pouca experiência na linguagem e no desenvolvimento de games possa acompanhar o texto e o código o início ao fim.

Ao final de cada etapa, como de costume, estarão disponíveis para download tanto o código fonte como o executável equivalente.

Espero que apreciem.

Refatoração com Class Interceptors e Métodos Anônimos

Quando assunto é manipulação de bancos de dados, há poucas ferramentas tão práticas e convenientes quanto os DataSets do Delphi. Instacie um dataset qualquer, informe uma consulta sql, chame o método open e bingo! temos uma cópia dos registros do banco (e uma infinidade de metadados) em memória, prontos para serem manipulados.

procedure Foo;
var
  qry: TSqlQuery;
begin
  qry := TSqlQuery.Create;
  try
    qry.CommandText := 'select some fields from some table';
    qry.Open;
    while not qry.Eof do
    begin
      //processa o registro atual..
      //e avança para o próximo
      qry.Next;
   end;
   finally
     qry.Close;
     FreeAndNil(qry);
   end;
end;

Prático e simples, não é?

Pois bem! Image dar manutenção em um sistema onde há milhares de funções exatamente iguais a esta, espalhadas por centenas de units e você começará sentir calafrios.

ASCII Art - Convertendo imagens para ASCII

Saída gerada pelo conversor
Um tópico um pouco esquecido, mas ainda interessante, é a criação de ASCII art a partir de imagens e fotos.

Na época em que os consoles de texto eram a mais comum, se não a única opção de interface disponível para os usuários de computador, as pessoas se valiam de muita criatividade (e um bocado de trabalho) para criar imagens usando somente os caracteres disponíveis na tabela ASCII. Muita coisa boa foi e ainda é criada com essa idéia, incluindo jogos e animações.

Depois de assistir a este vídeo, decidi implementar um pequeno conversor ASCII em pascal. O resultado da empreitada pode ser visto na imagem do rei do rock ao lado, que foi criada usando a versão do conversor criada para este artigo.


Animando o Console - Efeito Matrix Parte II

Saída da 2ª animação em modo texto. Bem mais interessante.
No último post criamos um pequeno programa que imprimia zeros e uns em posições aleatórias da tela, criando um efeito muito simples, mas nada parecido com o efeito do console do matrix que estamos querendo escrever.

O objetivo deste primeiro programa era se familiarizar com as funções da API do windows e começar a conhecer o ambiente e suas limitações.

O leitor mais atento poderá ter percebido, entretanto, vários problemas com o programa escrito. O primeiro deles é que não estamos realmente gerando os quadros (frames) de uma animação, estamos simplesmente jogando caracteres na tela da maneira mais displiscente e ineficiente se pode imaginar.

Animando o Console - Efeito Matrix

Saída da 1ª animação em modo texto. Bem vindo à Matrix! :)
Depois de ver o vídeo Armaggedon na postagem anterior, fiquei nostálgico e resolvi brincar um pouco com o console na tentativa de gerar algo graficamente interessante.

E por que alguém faria isto em pleno ano de 2014 com tantas opções e tantas tecnologias capazes de renderizar imagens super realistas em hardwares comuns e baratos? - eu até posso ouvir você perguntando.

Pelo prazer e pelo desafio, ora bolas! Sinceramente, precisa de mais que isto?

Então vamos começar nos familiarizando com o console dentro do Windows. Segundo a documentação da Microsoft

Consoles gerenciam inputs e outpus (I/O) para aplicações em modo caractere (aplicações que não providenciam sua própria interface gráfica).