segunda-feira, 28 de dezembro de 2015

O jogo das côres

Baseado em outros programas no qual mostrei o funcionamento em vídeo criei este aqui:
"O jogo das côres".
A finalidade do programa é de reunir três côres iguais na mesma linha ou na mesma
coluna ou nas diagonais da tabela, e quando isto acontece o programa retorna as
seguintes mensagens: Sequência premiada com a côr "Uma côr".
Local ==> Linha " alguma linha".
"Você ganhou dez mil reais".
Como o grau de dificuldade é muito alto, limitei em 9 tentativas por jogo.
Básico do funcionamento:
Três vetores foram suficiente para nosso programa, sendo um pré_definido com números
de 1 a 9 e que ficam visíveis na tabela, e um outro dibâmico que  recebe a carga de
uma rotina geradora de números aleatórios onde a repetição de alguns algarismo é
fundamental para o funcionamento de nosso programa.
Estes números ficam entre 1 e 9 e são responsáveis pelo chamamento das côres.
O show aqui é ter a certeza que num próximo jogo as côres foram trocadas de posição
não deixando o usuário comparar um jogo com outro, nisto está a inteligência do programa
que tem ainda a capacidade de saber quando um mesmo número está sendo digitado por
mais de uma vez graças a um terceiro vetor que trabalha em modo temporário apenas para
armazenamento dos números digitados fazendo comparações com cada número que está sendo
lançado pela entrada de dados.
Quando um novo jogo é iniciado este importante vetor é  descarregado,acreditam que
apanhei algumas horas nisto? Sabia que alguma variável deveria ser resetada más não me
vinha na idéia de qual, más depois de alguns chingamentos e de algumas xícaras de café
resetei o dito vetor e o programa seguiu seu curso normal.
As comparações das côres onde se verifica a existência de uma sequência de três côres
consecutivas são testadas por uuma cadeia longa de ifs, acreditem que isto me custou
algumas centenas de linha de código para que o funcionamento dos testes saiam precisos.
Em fim, se eu for falar de cada trecho de código do programa aqui na descrição quem iria
lê? ficaria longo e cansativo e fugiria do propósito adotado.







sábado, 26 de dezembro de 2015

Vetor : côres secretas - números secretos

Atrás de cada um dos números visíveis nos retângulos da tabela
onde mais parece uma matriz más não é, temos uma côr e um número
escondido, que são mostrados na chamada de cada posição do vetor.
Este vetor opera permitindo que se escolha suas posições em modo
aleatório, e cada retângulo da tabela mostra uma côr e
um número diferente entre 1 e 9, estes números embutidos são os
responsáveis pela chamada da côr correspondente.
Vale apena soltar a imaginação e fazer coisas incríveis com isto.
Pena que o tempo é tão curto para programar.

Veja este vídeo abaixo:




domingo, 20 de dezembro de 2015

Vetor - colorindo posições


Geramos doze côres diferentes para cada posição, pode ver na tabela
que temos também doze posições, só que apenas uma entre as dozes côres
geradas são chamadas de cada vez para o preenchimento da posição.
o funcionamento é completamente aleatório e automático, os retângulos
são coloridos normalmente sem que nenhuma côr se repita.
Pensam que foi fácil fazer isto?
É possível fazer coisas incríveis com isto mesmo sendo no cmd do windows.

Assista o vídeo abaixo:




sexta-feira, 18 de dezembro de 2015

Vetor randômico automático

Agora otimizado e customizado este vetor totalmente aleatório ficou
mais bonito, forcei a função sorteia (...);gerar duas sequências
aleatórias e sem repetições, assim, uma preenche a tabela que parece
uma matriz porém não é, e a outra se transforma em posições para o vetor dinâmico.
Os números gerados pela primeira sequência que
preencheu a a tabela são chamados aleatoriamente pelos números da segunda.
Então as contagens segue normalmente entre "zero e onze", e no final, de cada apresentação são gerados outras duas sequências diferentes que uma preenche novamente a tabela e a outra chama novamente cada número correspondente da posição, limitei em "três", apresentações sequenciais aleatórias, para não
estender muito o vídeo, más poderia colocar dezenas de apresentações e deixá-lo
rodando quanto tempo fosse necessário para a chegada do fim, que termina
imprimindo meu e-mail e meu nome.
Este código não está disponível para visualização, más se realmente lhe interessa entre em contato comigo.









domingo, 13 de dezembro de 2015

Matriz - sorteando posições automaticamente

Este programa escolhe automaticamente as posições de uma matriz
para receber caracteres pela entrada de dados, isto mesmo, o computador
é quem faz a escolha da posição da matriz que irá receber
o caractere digitado pelo usuário, imagine o quanto é útil este
programa, para quem gosta de programar jogos, precisa muito destes
tipos de recursos, temos muitas vêzes de deixar o computador fazer
determinadas operações.

Acompanhe no vídeo abaixo, este excelente programa em linguagem c:


sábado, 12 de dezembro de 2015

Matriz - sorteando palavras

Já vi muitos iniciantes em c perguntando como criar um programa
para fazer sorteios de um nome dentro de uma matriz aleatoriamente
e sem repetições dos mesmos.
Sortear apenas um nome entre dez aleatoriamente não seria tão
complicado, agora fazer sorteio de todos os dez nomes um por um
sem repetir nenhum, já é algo mais difícil, e é isto que faz este
programa, que após escolher todos os nomes em modo aleatório,
imprime em outra matriz a formação modificada.

Veja abaixo uma imagem do programa em execução:



sábado, 5 de dezembro de 2015

Memcpy - de vetor para matriz

Transformar um vetor em matriz usando a função memcpy, é algo
muito fácil de se fazer.
A função memcpy(); faz parte do arquivo de cabeçalho string.h.
Com o recebimento de seus três parâmetros que são:

memcpy ( *Mat, A, sizeof ( *Mat ) * 3 );

*Mat => destino.
A => origem.
3 => número de bytes a serem copiados.

Esta função está ápta a copiar blocos de memória, por isto
não importa o tipo de dados armazenados a exemplos de outras funções.
Neste código trago um claro exemplo de como utilizar esta importante
função do C.
O programa é um verdadeiro achado para iniciantes
que querem aprender a gerar números aleatórios sem repetições
de dígitos, onde nove sequência diferentes são geradas e é finalizado no fim da nona sequência.

Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa:

domingo, 29 de novembro de 2015

Matriz - marcando e somando diagonal principal

O c é uma linguagem estruturada e cheia de recursos, matrizes por exemplo é uma estrutura de dados acima de duas dimensões, lembro
aos iniciantes que matrizes devem ser declaradas com o mesmo tipo de dado, e quando estão armazenadas na memória, são em formas de uma tabela, sendo assim, criei este programa, que imprime uma tabela
no qual é preenchida com valores inteiros já que a matriz é do tipo
int. No que vamos preenchendo a matriz, o c já vai marcando automaticamente a diagonal principal, com a cor vermelha para seus
valores, e os demais valores de outras posições são marcados em azul.
Porventura este não é um ótimo código indicado a iniciantes desta importante linguagem de programação?

Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa:

#include <stdio.h>
#include <conio.h>
#define tam 3
void Moldura ( int a , int c , int b , int d , int e , int f ) {
     system ( "Color 10" );
     for ( a = e; a < c ; a++ ) {
         for ( b = f; b < d ; b++ ) {
              gotoxy ( b , a );
              textbackground ( WHITE );
              printf ( " " );
         }
     }
}
void Tabela ( ) {
     textbackground ( WHITE );
     int c, i = 0;
     textbackground ( BLACK );
     textcolor ( 12 );
     //Abaixo as rotinas pras colunas
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 56 , i + 5 ); //colunaa da direita
         printf ( " " );
     }
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 46 , i + 5 ); //coluna do meio mais a direita
         printf ( " " );
     }
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 36 , i + 5 ); //coluna do meio ainda mais pro meio direita
         printf ( " " );
     }
     for ( i = 2; i <= 16 ; i++ ) {
         gotoxy ( 26 , i + 5 ); //coluna da esquerda
         printf ( " " );
     }
     //Abaixo as rotinas pras linhas
     gotoxy ( 26 , 7 );
     for ( c = 26; c < 56 ; c++ ) {
         printf ( " " );
     }
     gotoxy ( 26 , 12 );
     for ( c = 26; c < 56 ; c++ ) {
         printf ( " " );
     }
     gotoxy ( 26 , 17 );
     for ( c = 26; c < 56 ; c++ ) {
         printf ( " " );
     }
     gotoxy ( 26 , 22 );
     for ( c = 26; c <= 56 ; c++ ) {
         printf ( " " );
     }
}
int main ( ) {
     system ( "title MATRIZ - MARCANDO E SOMANDO DIAGONAL PRINCIPAL" );
     Moldura ( 2 , 28 , 2 , 79 , 2 , 3 );
     int l, c;
     int matriz [ tam ] [ tam ], dl = 0, dc = 0, adc = 0;
     textcolor ( LIGHTRED );
     gotoxy ( 20 , 3 );
     printf ( "MATRIZ - MARCANDO E SOMANDO DIAGONAL PRINCIPAL" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 21 , 5 );
     printf ( "Digite " );
     textcolor ( LIGHTRED );
     printf ( "9" );
     textcolor ( LIGHTBLUE );
     printf ( " valores para inserir na matriz" );
     Tabela ( );
     for ( l = 1; l <= tam ; l++ ) {
         dc = 0;
         for ( c = 1; c <= tam ; c++ ) {
              if ( l == c ) {
                   textcolor ( LIGHTRED );
                   textbackground ( WHITE );
              } else textbackground ( WHITE );
              gotoxy ( 31 + dc , 9 + dl );

              scanf ( "%d" , &matriz [ l ] [ c ] );
              textcolor ( LIGHTBLUE );
              dc = dc + 10;
         }
         dl = dl + 5;
     }
     for ( l = 1; l <= tam ; l++ ) {
         for ( c = 1; c <= tam ; c++ ) {
              if ( l == c )
                   adc = adc += matriz [ l ] [ c ];
         }
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 23 , 24 );
     printf ( "A soma da diagonal principal é ==> " );
     textcolor ( LIGHTRED );
     printf ( "%d" , adc );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 35 , 26 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
}