Alguns arquivos desta página necessitam serem compilados neste IDE, pois utilizam algumas bibliotecas da borland, em geral a "graphics" e "conio".
Implementa uma árvore binária simples, utilizando alocação dinâmica e recursividade. O dado é uma estrutura que no mínimo deve conter uma chave para ordenação, o restante dos atributos podem ser adicionados na estrutura.
Fontes
Apenas lista a tabela ascii na saída padrao.
Exibe uma bolinha que pode ser controlada pelo usuário. Demonstra o uso do laço do jogo, entrada do usuário, principios basicos de física e colisão, atualização e renderização com o uso de uma biblioteca gráfica simples, mas genérica. Utiliza a graphics e conio da Borland. É necessário rodar com a biblioteca gráfica run-time SVGA256.BGI.
Este programa permite ao usuário andar em um belíssimo bosque tridimensional totalmente gerado por código, isto significa que nenhum objeto foi previamente "modelado" externamente. O chão, as árvores, núvens e pedras são esferóides perfeitos sobre os quais foram "enroladas" matrizes com números casuais de deformação gerando padrões randômicos, percebidos como copas de árvores, perturbações nas núvens e casualidade no terreno. Os troncos das árvores e dos coqueiros são cilindros deformados, os matos são apenas triângulos, o sol é uma esfera que é renderizada fora de padrões normais de translação e rotação da câmera, as copas dos coqueiros são segmentos de parábolas. Utiliza a biblioteca OpenGL e a API do windows.
Funções úteis para implementar um contador binário virtualmente ilimitado, baseado em um trecho de memória reservado para os bits e o número de bytes do contador.
Fontes
Jogo simples criado utilizando a biblioteca gráfica Allegro, é uma gozação comigo mesmo pois o objetivo é destruir minha cabeça que se irrita gradualmente com as bombas que recebe do jogador. Além do código está incluso o executável. É necessário rodá-lo com as imagems BMP no mesmo diretório e o dll da biblioteca dinâmica do allegro, e o projeto deve ser linkado com a biblioteca estática do allegro. Geralmente "liballeg.a".
As imagens BMP podem ser baixadas aqui.
Esta classe implementa uma estrutura de dados do tipo "fila"(FIFO), com alocação de memória dinâmica e templates. Muito útil pois o uso de templates dá caráter genérico a esta fila que pode armazenar qualquér tipo de dado desejado.
Fontes
Converte um número real de ponto flutuante de precisão simples(float), passado por parâmetro, para uma sequência de zeros e uns que é a sua representação binária na memória, exibida na saída padrão. Evidencia o bit de sinal, o expoênte e a mantissa.
Este projeto foi um trabalho final para a disciplina de introdução à ciência da computação - e que, diga-se de passagem, recebeu uma boa nota(9.8) - O projeto é sobre uma técnica de otimização de renderização de mundos tridimensionais chamada na literatura de "Frustum Culling", que basicamente consistem em calcular o volume de visão da câmera do observador, este volume, chamado de "Frustum" é um tronco de pirâmide. Após calculado o algorítmo testa se os objetos do mundo estão dentro ou são interceptados pelo volume afim de avaliar se o modelo será ou não renderizado. Esta técnica melhora significativamente o desempenho de uma aplicação que utilize gráficos 3D em tempo real, pois impede o processamento desnecessário de objetos não visíveis. De fato, uma mesma aplicação melhorou de 8 fps(frames per second) para 60 fps apenas pela adoção do método. O programa exemplifica a técnica descrita, apresentado uma câmera virtual em terceira pessoa e desenhando o volume de visão dela, sendo que, todos os objetos que adentram este volume se tornam visíveis enquanto que os restantes permanecem em wireframe. É possível se movimentar pelo mundo livremente com a câmera virtual e com a câmera real. Utiliza a biblioteca OpenGL e a API do windows.
Desenha o fractal do grupo "MandelBrot" e permite zoom quase infinitamente. Graficos em DOS, mas com resulação e numero de cores razoáveis para produzir imagens muito bonitas. Utiliza a graphics e conio da Borland. É necessário rodar com a biblioteca gráfica run-time SVGA256.BGI.
Gera o efeito de caracteres verdes descendo na tela ao estilo dos computadores vistos no filme "Matrix". Utiliza a graphics e conio da Borland. É necessário rodar com a biblioteca gráfica run-time SVGA256.BGI.
Implementa uma classe matriz, com sobrecarga de operadores para adição, subtração e multiplicação(inclusive com escalares), além da operação [][] de referência à um elemento da matriz. O construtor permite a criação de matrizes de qualquér tamanho, e por ser implementada com templates, de qualquér tipo numérico(ou outro que suporte os operadores). Esta classe pode ser muito útil em aplicações que envolvam Álgebra Linear, Computação gráfica ou outros cálculos.
Classe que implementa uma matriz esparsa. Este tipo de matriz tem as mesmas características de uma matriz normal, do ponto de vista de interface, entretanto sua implementação tem extremo ganho de desempenho no caso de aplicações que necessitem usar matrizes extremamente grandes(freqüentemente virtualmente infinitas) mas com uso de pequena porção de células(de forma esparsa). As únicas operações existentes nesta classe são inserção, remoção e acesso. Sua implementação é baseada em uma multilista de duas direções e duplamente encadeadas, como a alocação é dinâmica é possível inserir em qualquer posição inteira(mesmo negativa) na matriz, e acessar e remover idem(desde que existam). A classe utiliza templates, o que dá uma vantagem de genérica à aplicação desta.
Esta classe utiliza uma pilha no processo de destrução, a classe da pilha não foi incluída nestas fontes, mas está disponível nesta página.
Fontes
Implementa uma estrutura de dados do tipo "Pilha"(LIFO) utilizando alocação dinâmica de memória e templates. Muito útil pois o uso de templates dá caráter genérico a esta fila que pode armazenar qualquér tipo de dado desejado.
Fontes
Jogo simples "pong" de apenas um jogador, cujo objetivo é quebrar uma matriz de tijolos. A raquete é modificada, sendo um arco de circunferência, tornando a jogabilidade mais desafiante. Utiliza a graphics e conio da Borland. É necessário rodar com a biblioteca gráfica run-time SVGA256.BGI.
Mesmo jogo descrito acima, até mesmo o código foi copiado com algumas alerações, pois esta versão foi portada da biblioteca graphics da Borland para a biblioteca gráfica Allegro. Além do código está incluso o executável. É necessário rodá-lo com as imagems BMP no mesmo diretório e o dll da biblioteca dinâmica do allegro, e o projeto deve ser linkado com a biblioteca estática do allegro. Geralmente "liballeg.a".
As imagens BMP podem ser baixadas aqui.
Jogo de programação aonde dois programas "competem" no jogo jokempo(pedra-papel-tesoura) cerca de 10.000 vezes. Cada programa é escrito por um jogador e a única entrada de ambos é a jogada efetuada anteriormente pelo adversário, e a saída - obviamente - é pedra, papel ou tesoura. O objetivo é ganhar o maior número de vezes, e o desafio é escrever um programa capaz de prever a jogada adversária com base em seu comportamento e jogar contra para bate-lo na proxima jogada.
Fontes
Programa principal
Header que deve ser incluido em todos os bots.
Bots(Fontes)
Bot que joga contra a ultima jogada adversaria.
Mantem um controle de todas as jogadas adversarias e joga contra a maioria percentual.
Joga tesoura sempre.
Agrega todas os outras estrategias descritas num mesmo bot, e joga qual estiver dando mais resultado.
Resolve a torre de Hanoi com representação grafica 3D. A Torre de Hanoi é um problema de caracter não polinomial(2^n, aonde n é o número de discos) que consiste em trazer todos os discos de tamanhos descrescentes afixados em um cilindro até outro cilindro utilizando-se de um terceiro, valendo-se de que não é possível mover mais de um disco por vez nem colocar um disco maior sobre um menor. O algorítmo de resolução deste problema, neste programa, utiliza um contador binário para determinar qual disco será movimentado por vez(alcançando a melhor solução conhecida). Utiliza a biblioteca OpenGL e a API do windows.
Classe que implementa as funcionalidades de um vetor bidimensional, com todas as operações básicas utilizando sobrecarga de operadores. Faz uso de templates, mas o tipo de dado deve ser numérico para não ocorrer erro de compilação, já que baseia-se no uso de operações numéricas.
Fontes
Copyright 2006 Rodrigo Setti