Professor Tomás Dias Sant Ana - PDF
Professor Tomás Dias Sant Ana
Download "Professor Tomás Dias Sant Ana"
Judite Fortunato Gama
1 Centro Universitário do Sul de Minas UNIS MG Unidade de Gestão da Educação Presencial GEDUP Bacharelado em Ciência da Computação Projeto e Implementação de Técnicas de Desenvolvimento de Jogos para Computador Professor Tomás Dias Sant Ana Fernando Henrique Martins Baldance Otávio Augusto de Queiroz Reis Varginha, 2006
2 Centro Universitário do Sul de Minas UNIS MG Unidade de Gestão da Educação Presencial GEDUP Bacharelado em Ciência da Computação Projeto e Implementação de Técnicas de Desenvolvimento de Jogos para Computador Professor Tomás Dias Sant Ana Fernando Henrique Martins Baldance Otávio Augusto de Queiroz Reis Projeto de Conclusão de Curso apresentado ao programa do curso de Bacharelado em Ciência da Computação do Centro Universitário do Sul de Minas, como requisito parcial para a obtenção do título de Bacharel em Ciência da Computação. Varginha, 2006
3 Folha de Aprovação Fernando Henrique Martins Baldance Otávio Augusto de Queiroz Reis Projeto e Implementação de Técnicas de Desenvolvimento de Jogos para Computador Monografia apresentada ao curso de Ciência da Computação do Centro Universitário do Sul de Minas UNIS/MG, como pré-requisito para obtenção do grau de bacharel pela Banca Examinadora composta pelos membros: Agnus Azevedo Horta, José Eduardo Silva Gomes e Tomás Dias Sant'Ana. ( ) Aprovado ( ) Reprovado Data / / Profº. Ms. Tomás Dias Sant'Ana. Profº. Esp. Agnus Azevedo Horta. Profº. Esp. José Eduardo Silva Gomes.
4 Dedicamos este trabalho a Deus por ter nos dado condições de realizar mais este projeto, a nossas famílias pelo incentivo e a nosso orientador Tomás Dias Sant Ana conhecimentos proporcionados. pelos
5 Agradecimentos Agradecemos a Deus pelos dons que nos propiciaram a execução deste projeto, a nossas famílias pelo incentivo, a nossos colegas pelo companheirismo, a nosso professor Fabrício Pelloso Piurcosky pelas dicas e a nosso orientador Tomás Dias Sant Ana pelos conhecimentos proporcionados.
6 Sumário AGRADECIMENTOS...V SUMÁRIO... VI LISTA DE FIGURAS... VII RESUMO... X ABSTRACT...XI 1. INTRODUÇÃO FUNDAMENTAÇÃO TEÓRICA IMPLEMENTAÇÃO DO JOGO CONCLUSÃO REFERÊNCIA BIBLIOGRÁFICA...47
7 Lista de Figuras FIGURA JOGO DE LUTA STREET FIGHTER...8 FIGURA JOGO DE ESTRATÉGIA WARCRAFT... 9 FIGURA JOGO DE RPG FINAL FANTASY FIGURA JOGO DE FUTEBOL WINNING ELEVEN FIGURA JOGO DE CORRIDA NEED FOR SPEED UNDERGROUND...11 FIGURA JOGO DE CONSTRUÇÃO SIM CITY...12 FIGURA JOGO DE AVENTURA THE LEGEND OF ZELDA. 13 FIGURA JOGO DE VIDA ARTIFICIAL THE SIMS FIGURA JOGO ON-LINE ERINIA...14 FIGURA A JANELA FORM: INTERFACE...18 FIGURA A JANELA OBJECT INSPECTOR: PROPRIEDADES E EVENTOS...19 FIGURA A JANELA CODE EDITOR: CÓDIGO FONTE DA APLICAÇÃO...20
8 FIGURA A JANELA OBJECT TREEVIEW: DIAGRAMAS DA APLICAÇÃO...20 FIGURA A JANELA MAIN: DIVIDIDA EM SETE PARTES. 21 FIGURA BARRA DE FERRAMENTAS FIGURA JANELA COM OS COMPONENTES DAS PALETAS. 23 FIGURA 3.1 BRICKS UTILIZADOS NA CONTRUÇÃO DO PLANO DE FUNDO...27 FIGURA IMAGEM DAS CAMADAS DE FUNDO SOBREPOSTAS FIGURA 3.3 SPRITE UTLIZADO COMO PERSONAGEM PRINCIPAL FIGURA 3.4 IMAGEM DO PERSONAGEM PRINCIPAL DESENHADO NA TELA FIGURA 3.5 MODELO UTILIZADO NA CONSTRUÇÃO DO CENÁRIO FIGURA IMAGEM DO CENÁRIO DESENHADO...36 FIGURA IMAGEM DO PERSONAGEM COLIDINDO COM O CENÁRIO...41 FIGURA IMAGEM DO PERSONAGEM PRINCIPAL DESENHADO COM A TRANSPARÊNCIA FIGURA IMAGEM DA GRAVIDADE EXERCIDA SOBRE O PERSONAGEM PRINCIPAL...44 FIGURA IMAGEM DO PERSONAGEM EXECUTANDO O SALTO....46
10 Resumo Esta monografia descreve algumas técnicas de desenvolvimento de jogos para computador. O projeto foi desenvolvido utilizando o ambiente Delphi, sem o auxílio de engine e/ou biblioteca de jogos pré-definidas. Este trabalho é o resultado do Projeto de Conclusão de Curso apresentado ao programa do curso de Bacharelado em Ciência da Computação do Centro Universitário do Sul de Minas. A indústria de desenvolvimento de jogos é hoje a maior indústria de entretenimento do mundo e é uma atividade que continua em plena ascensão. Segundo estudo da empresa de consultoria PricewaterhouseCoopers, o mercado mundial de jogos verá um crescimento astronômico nos próximos anos. Dos US$ 7 bilhões movimentados em 2005, passará a US$ 47 bilhões em Palavras-chave: Programação, BackBuffer, BoundingBox.
11 Abstract This monograph describes the development of the part of programming of a computer game. The project was developed without the aid of none engine and or specific library. This work is the result of the Project of Conclusion of Course presented to the program of the course of baccalaureate degree in Computer Science of the Centro Universitário do Sul de Minas. The industry of development of games is today the biggest industry of entertainment of the world and is an activity that continues in full ascension. According study of the company of consultoria PricewaterhouseCoopers, the world-wide market of games will see an astronomical growth in the next years. Of the US$ 7 billion put into motion in 2005, will pass the US$ 47 billion in Keywords: Programming, BackBuffer, BoundingBox.
13 1 1. Introdução A paixão pela essência criativa e divertida dos jogos e o mercado bilionário que representam têm despertado o interesse de um número crescente de pessoas. Cada vez mais populares, os jogos têm conquistado públicos de todos os gêneros e idades, criando novos desafios para os profissionais da área (PERUCIA, 2005). Mas o interesse por essa área já ocorre a algum tempo. Segundo Kishimoto (2004), o primeiro jogo eletrônico interativo criado na história foi o Spacewar, um jogo onde duas pessoas controlavam dois tipos diferentes de espaço-nave que deveriam combater entre si. Esse jogo foi programado por um estudante do Massachusetts Institute of Technology (MIT), Steve Russell, em um computador PDP-1 em 1961 (DEMARIA, 2004). Existem alguns historiadores, porém, que argumentam que o primeiro jogo eletrônico foi criado por Willy Higinbotham, um cientista do Brookhaven National Laboratory. Higinbotham programou, em 1958, um osciloscópio onde era possível jogar uma partida de tênis interativa (KENT, 2001). Em 1970, Nolan Bushnell começou a trabalhar em uma versão fliperama do jogo Spacewar, chamada Computer Space. No ano seguinte, a empresa Nutting Associates comprou o jogo de Bushnell, colocando no mercado a primeira máquina de fliperama da história. Em 1972, Bushnell abre sua própria empresa, a Atari, famosa pelo jogo Pong (criado pelo engenheiro Al Alcorn). Até o fim dessa década, muitas empresas entraram no mercado de jogos, como Taito, Midway e Capcom. Em 1972 a Magnavox lança o computador Odyssey (KENT, 2001). Seguindo a linha de tempo dos jogos em (KENT, 2001), nos anos 80 as máquinas de fliperama estavam em seu auge, com muitos jogos sendo lançados (Donkey Kong, Tron e Q*Bert são alguns exemplos) ao mesmo tempo em que surgiram os primeiros videogames 8bits: Famicom, da Nintendo e Master System, da SEGA (Service Games). Na área de jogos para computador, houve também um grande lançamento de jogos e criação de empresas, sendo a On-Line Systems (atual Sierra Online) uma das pioneiras no setor de jogos para computador (DEMARIA, 2004). Em março de 1986, Chris Crawford (CRAWFORD, 2003) reuniu alguns amigos desenvolvedores em sua casa para a primeira Computer Game Developers Conference (atual GDC), onde discutiram assuntos sobre game design e negócios.
14 2 A década de 90 foi marcada pelo lançamento e batalhas de videogames de 16-bits (Sega Genesis e Super Famicom, da Nintendo), de 32-bits (PlayStation da Sony e Sega Saturn) e o lançamento de videogames como 3DO da Panasonic e Nintendo64 da Nintendo (esse de 64-bits) (KENT, 2001). Um grande marco para a história de jogos para computador foi o lançamento do jogo Wolfstein 3D pela id Software em 1991, o primeiro jogo de tiro em primeira pessoa, atualmente um dos gêneros de jogos mais famosos entre os jogadores (KUSHNER, 2003). No final da década de 90 para 2000, Sony e Nintendo divulgaram seus novos videogames de 128-bit (PlayStation 2 e GameCube, respectivamente), enquanto a Microsoft também entrou para esse segmento. Atualmente, a atenção da mídia e dos jogadores está voltada aos jogos online multiplayer massivos (centenas a milhares de pessoas jogando ao mesmo tempo num mundo virtual via internet) e aos videogames portáteis Sony PSP e Nintendo DS (esse inovando com duas telas, sendo uma delas sensíveis ao toque, como em PDA s) (EGM, 2004). Ou seja, desde a década de 1970, os jogos eletrônicos atraem adeptos de todas as idades. Atualmente, os jogos avançaram muito em termos de gráficos, história e são considerados uma das mais expressivas práticas de entretenimento do século 21. Consoles como, por exemplo, Playstation 2, Xbox e Xbox 360 têm levado adultos e crianças ao mundo da diversão eletrônica (SUA PESQUISA, 2006) Objetivos Geral Projetar e implementar técnicas de jogos para computador. Específicos Fazer um estudo detalhado dos recursos necessários como: linguagem de programação, recursos gráficos e técnicas empregadas no desenvolvimento de jogos. Criar o personagem (Protagonista) e cenário principal. Implementar algumas funcionalidades do jogo.
15 Problematização Existe algum estudo ou desenvolvimento de pesquisas na área do entretenimento digital, mais especificamente em relação a jogos, na região do sul de Minas Gerais? Se existe, esse estudo é bem difundido e aberto a todos os interessados? É possível ter algum retorno positivo para usuários, desenvolvedores e região onde o jogo foi criado? Existe a possibilidade de se proporcionar aprendizado através do entretenimento digital? Há motivos para utilizar o desenvolvimento de jogos de computador para pesquisa científica? Hipóteses Com a pesquisa na área de entretenimento digital é possível criar um novo nicho de mercado na região. Um jogo de computador pode conter informações sobre a cultura existente no sul de Minas Gerais e, por ser utilizado tanto por crianças como adultos e ser de fácil distribuição, pode ser um excelente aliado na divulgação e no aprendizado da cultura da região. O desenvolvimento desse tipo de entretenimento traz um grande ganho de conhecimento para quem participa do projeto, tendo em vista que um projeto bem elaborado de um jogo passa por diversos ramos de diversas áreas. Delimitação do Problema O desenvolvimento do ambiente do jogo ficará inicialmente restrito ao cenário principal e ao protagonista Justificativa Por que usar jogos para pesquisa científica? Há muitos motivos, como o apelo da área, mas há também a aplicação e integração de várias áreas da computação (Computação Gráfica, Inteligência Artificial, Redes, Programação, entre outras) e a possibilidade imensa de aplicação e teste de inovações tecnológicas e científicas. Afinal, que teste melhor (e mais intenso) um algoritmo de Inteligência Artificial pode ter do que jogar contra a máquina mais inteligente que existe (o homem)? (DEMASI, 2005) A possibilidade da utilização de jogos de computadores para promover novas formas de ensino também é bem interessante, pois além dos conhecimentos ganhos em tempo
16 4 de desenvolvimento, também é possível fazer com que os usuários possam adquirir conhecimentos nas mais diversificadas áreas enquanto jogam. Portanto, esse trabalho se justifica, pois, desta forma o jogo servirá de auxílio tanto para os desenvolvedores quanto para os usuários Estrutura do Trabalho O trabalho está organizado da seguinte forma: Capítulo 2: informações utilizadas como fundamentação teórica; Capítulo 3: formas utilizadas para a implementação do jogo; Capítulo 4: conclusões observadas no desenvolvimento do projeto.
17 5 2. Fundamentação Teórica 2.1. Jogos Eletrônicos Considerações Iniciais Este estudo pretende apresentar a fundamentação teórica tanto no âmbito histórico quanto atual sobre o desenvolvimento de jogos Histórico do desenvolvimento de jogos Segundo Perucia (2005), nos primeiros tempos de desenvolvimento de jogos, os computadores eram muito limitados, tanto em variedades como em capacidades. Havia processadores de 8 bits lentos (velocidade de 4MHz), gráficos limitados e memórias de 48 e 64 kb. Os gráficos em três dimensões eram raros e sem capacidade de mapear texturas. Programar para essas plataformas envolvia lidar com as limitações de se conseguir os melhores resultados. Os jogos eram geralmente codificados em Assembler, para que o jogo tivesse velocidade e lidasse com limitações de memória. Não existiam bons compiladores em C, e os poucos satisfatórios que existiam não tinham capacidade de gerar código suficientemente pequeno para jogos. Esse empecilho significava que para portar o jogo para uma outra plataforma o código deveria ser todo reescrito. No entanto, havia algumas vantagens. Na época, se tinha de certeza que a plataforma que o programador desenvolvia seria a mesma aonde quer que fosse. Trata-se de um fato semelhante ao desenvolvimento de jogos de videogames atuais: a máquina-alvo tem a mesma capacidade que a máquina de desenvolvimento, o que evita problemas de escalonamento do código para que funcione em igualdade em todas as plataformas (como os jogos de PC hoje em dia que oferecem diversas opções de configurações). Por causa das restrições de hardware, as prioridades de código eram velocidade e otimização. Os programadores restringiam-se às limitações da plataforma. Para atingir os requisitos de desempenho, normalmente os programadores descarregavam o sistema operacional da memória e escreviam diretamente no hardware. Até mesmo a depuração era
18 6 um processo complicado, pois exigia muita memória do sistema que era limitadíssima e era quase impossível carregá-lo com o jogo. No entanto, alguns desenvolvedores dizem que por causa dessas limitações, mais ênfase era colocada na jogabilidade e os jogos eram simplesmente melhores. Na verdade, os programadores poderiam apenas focar a jogabilidade para tornar o jogo melhor, pois as limitações gráficas os impediam de trabalhar melhor o visual, como ocorre atualmente. É claro que existiam jogabilidades fantásticas na época, tanto é que são copiadas até hoje. A linguagem Assembler não é mais muito utilizada hoje em dia. A maioria dos produtos é codificada em linguagens de alto nível e, em alguns casos, partes críticas de código que exigem performance são escritas em Assembler. Doom¹ foi escrito quase totalmente em C, o que chocou as pessoas na época, que simplesmente não acreditavam que um produto como este poderia ser escrito em qualquer outra linguagem que não fosse Assembler. Esse acontecimento foi um marco no desenvolvimento de jogos para PC e alguns dizem que Doom impulsionou a indústria de games. Doom foi compilado com o Watcom C/C++ que gerava uma aplicação DOS 32 bits muito rápida e otimizada, muito melhor do que os compiladores concorrentes da época. Mais tarde, a Microsoft direcionou suas atenções para o mercado de jogos, até mesmo pela vontade de terminar com o DOS. Surgiu, então o Windows e também o Game SDK, ou Software Development Kit, um conjunto de bibliotecas de programação que permite aos desenvolvedores de software criar produtos para rodar em uma plataforma específica ou trabalhar com uma API (Application Programming Interface, ou interface para programação de aplicativos). Esse SDK foi o precursor do DirectX, que é uma biblioteca projetada para facilitar acesso rápido a dispositivos de hardware. Após o lançamento do Windows 95 e do DirectX, a Microsoft também investiu em seus novos compiladores. Estes geravam códigos estáveis e rápidos e tinham uma interface bem amigável. Ferramentas como depuração remota e troca de código em tempo de depuração (on the fly) têm facilitado bastante a vida dos desenvolvedores de jogos. Atualmente, a maioria dos jogos de ponta (inclusive para consoles) são escritos em C Algumas áreas envolvidas no desenvolvimento de um jogo ¹ Doom, segundo o Wikipédia (2006), é um jogo de computador lançado em 1993 pela id Software, e um dos títulos seminais do gênero tiro em primeira pessoa.
19 7 Segundo Demasi (2005), as principais áreas envolvidas no desenvolvimento de um jogo são: Computação Gráfica: talvez a área mais óbvia de todas, já que é fundamental para a apresentação do jogo e a interface com o jogador. Inteligência Artificial: fundamental para o controle das diversas entidades do mundo em que o jogador está inserido, na interação entre elas e para a percepção de realidade. Compiladores: muitos jogos lidam com linguagens de scripts para personalização do mundo de jogo, bem como para extensão e "mods". Muitas vezes tal possibilidade pode garantir o sucesso de um jogo. Grafos e Algoritmos: são comuns programadores entusiastas não saberem lidar com algoritmos clássicos, porém fundamentais, desde a mais simples busca em largura até a implementação de um algoritmo de menor caminho de Dijkstra usando uma heap. Conhecer e dominar essa área podem ser a diferença entre um jogo lento e mal-feito para um otimizado e bem mais adequado. Arquitetura: não apenas em otimizações de baixo nível, mas principalmente na programação específica para determinadas plataformas, o conhecimento de arquitetura de computadores e de linguagens de baixo nível pode ser um requisito obrigatório. Redes: hoje em dia todo jogo que se preze deve ter a opção "multiplayer" para jogos pela Internet. Programação: saber usar e manipular estruturas de dados complexas, saber como implementar algoritmos e ter a noção clara de como a teoria de complexidade se aplica na prática é uma necessidade. Cálculo e Física: sistemas de partículas e outros simuladores físicos, que contam com o apoio teórico de cálculo, são necessários para se criar um ambiente mais realista possível, e uma experiência realmente cativante para o jogador Gêneros de Jogos
20 8 De acordo com Luz (2004), para um bom projeto de um jogo, é desejável um conhecimento quanto aos diversos gêneros de jogos disponíveis. Dentre eles, podemos destacar os seguintes: Jogos de Ação: representam uma grande faixa de estilos de jogos, podendo estes tanto serem encontrados com gráficos 3D, quanto com gráficos 2D. Geralmente eles são divididos em dois subgêneros: aqueles em que se atira e aqueles em que não se atira. As principais habilidades que este tipo de jogo explora no jogador são o tempo de reação e a coordenação entre a visão e as mãos do jogador em situações de pressão. Fazem parte desse gênero jogos de luta, como Street Fighter, jogos de tiro, como Doom III, jogos tipo labirinto, como Pac-Man, Mario, dentre outros tipos de jogos; FIGURA JOGO DE LUTA STREET FIGHTER. Jogos de Estratégia: jogos baseados nos jogos de tabuleiro. A grande maioria dos jogos deste gênero são lançados para PC, por sua grande capacidade de iteração entre usuário e jogo. Dividem-se em duas formas principais: baseado em turnos e em tempo real. Dentro desse gênero destacam-se títulos como Civilization, Warcraft, Outlive, dentre outros.
21 9 FIGURA JOGO DE ESTRATÉGIA WARCRAFT. Jogos de RPG: assim como os jogos de estratégia, os RPGs formam um gênero de jogo que também foi derivado dos jogos de papel e caneta. Geralmente os RPGs possuem duas características que os distinguem dos demais gêneros: Personagens de jogo configuráveis, que melhoram no decorrer do jogo, com o aumento da experiência; Histórias muito bem definidas e que desenvolvem no decorrer do jogo. A história é uma parte muito singular desse gênero. Nela, o jogador interage, de maneira que ele acaba se tornando uma parte muito real da mesma. Fazem parte desse gênero jogos do estilo Final Fantasy, Dragon Quest, Diablo, Erinia, dentre outros;
22 10 FIGURA JOGO DE RPG FINAL FANTASY. Jogos de Esportes: ao contrário dos outros gêneros, onde o mundo em que a história se desenvolve é pouco conhecida pelos jogadores, nos jogos esportivos o mundo é bastante conhecido. Por exemplo, muitas pessoas conhecem como é o futebol profissional e as suas regras. Entretanto, isso não quer dizer que os jogos desse gênero são extremamente realistas. Exemplos de jogos desse gênero incluem Winning Eleven, Fifa Soccer, NHL, FutSim etc. FIGURA JOGO DE FUTEBOL WINNING ELEVEN.
23 11 Jogos de Simulação de Veículos: simuladores de veículos tentam criar a sensação de dirigir ou pilotar um veículo, real ou imaginário. No caso de veículos reais, o principal ponto a ser levado em consideração é a aproximação da realidade. Os jogadores desse tipo de jogo querem ter a experiência mais próxima possível de qual seria a sensação na realidade. Jogos como The Need For Speed Underground, Nascar, Flight Simulator, dentre outros, fazem parte desse gênero. FIGURA JOGO DE CORRIDA NEED FOR SPEED UNDERGROUND. Jogos de Construções e Gerenciamento de Simulações: neste gênero o jogador não tem que enfrentar um inimigo, mas construir algo dentro de um determinado contexto e fazer o seu gerenciamento. Quanto melhor o jogador entender e controlar o processo de gerenciamento, maior será o seu sucesso na empreitada desse gênero. Sim City e Capitalism são os jogos mais famosos desse gênero;
24 12 FIGURA JOGO DE CONSTRUÇÃO SIM CITY. Jogos de Aventura: ao contrário dos demais gêneros, um jogo de aventura não é uma simulação ou uma competição. Ele é uma história interativa sobre um determinado personagem que é controlado pelo jogador. Apesar do gênero ter se alterado muito no decorrer dos anos, existem certas qualidades que o caracterizam: exploração, coleção ou manipulação de objetos, solução de quebra-cabeças e a ênfase reduzida quanto ao combate ou aos elementos de ação. Podemos citar jogos como The Legend of Zelda, Grim Fandango, Gabriel Knight etc. como do gênero;
25 13 FIGURA JOGO DE AVENTURA THE LEGEND OF ZELDA. Jogos de Vida Artificial: estes jogos envolvem uma modelagem do processo biológico, geralmente para simular os ciclos de vida de seres vivos, podendo simular a vida de pessoas, animais, monstros etc. The Sims é um jogo desse gênero; FIGURA JOGO DE VIDA ARTIFICIAL THE SIMS.
26 14 Jogos On-line: nos últimos anos, os jogos on-line deixaram de ser apenas uma minúscula fração do comércio de entretenimento interativo, para se tornar a maior fração desse mercado. Atualmente esse gênero tem crescido bastante para o lado dos MMOs, Multiplayer Massive Online, que são os jogos via rede, acessando o servidor central do jogo e interagindo com outros jogadores. Neste gênero, as trapaças no jogo devem ser evitadas ao máximo. Futsim e Erinia são dois MMOs desenvolvidos no Brasil. FIGURA JOGO ON-LINE ERINIA Considerações Finais A área de desenvolvimento de jogos ainda engatinha no Brasil, e há muito obaoba por parte da imprensa e dos próprios desenvolvedores. Não há qualquer resultado realmente significativo que justifique qualquer projeção animadora quanto ao futuro, mas ainda é preciso passar por um momento de retração (esperar "a poeira baixar") para ter uma real idéia do que é possível de se fazer aqui. A falta de recursos maiores para investimentos ainda é um grande problema, e a quantidade de "entusiastas" despreparados também atrapalha muito. Mas tais estágios são necessários, e é esperado que em breve exista uma indústria amadurecida, bem como um respeito adequado na academia com relação à importância do desenvolvimento de jogos. (DEMASI, 2006).
27 A linguagem Delphi Considerações Iniciais Este estudo pretende informar e demonstrar algumas características da ferramenta de desenvolvimento de aplicações Delphi Histórico do Delphi Segundo o Wikipédia (2006), quando lançado em 1995 para a plataforma Windows 16 bits, Delphi foi o primeiro a ser descrito como ambiente Rapid Application Development (RAD - em português, Desenvolvimento Rápido de Aplicações). A sua segunda versão, lançada um ano depois com o Delphi 2 já produzia aplicativos para a plataforma Windows 32 bits, sendo que uma versão em C++, o C++ Builder surgiu alguns anos depois. Em 2001 uma versão para plataforma Linux, conhecida como Kylix foi disponibilizada. Em 2002 foi lançada nova versão compatível com Linux (através do Kylix e a paleta CLX de componentes), sendo que em 2003 o Delphi 8 passou a incluir suporte para desenvolvimento de aplicações.net. No final de 2004 foi lançada a versão Delphi 2005 (correspondente a versão 9), com suporte, na mesma IDE, ao desenvolvimento para plataformas Windows 32 bits e Windows.NET, além de integrar no mesmo ambiente de desenvolvimento a possibilidade de se desenvolver utilizando o ambiente do Delphi, C++ Builder ou C#. No final de 2005 foi lançada a versão Delphi 2006 (correspondente a versão 10) integrada no Borland Developer Studio 4.0 com destaque para a total integração com o Borland Together, o preview do compilador do C++ Builder, atualização dos drivers DBExpress, novos refactorings e recursos da IDE. Nessa versão o gerenciador de memória utilizado pelo Delphi foi substituído, tornando os aplicativos compilados em Delphi mais rápidos. Como a ferramenta é compilada utilizando o próprio Delphi, esta nova versão também está muito rápida. O arquiteto por trás do Delphi e de seu predecessor Turbo Pascal foi Ander Hejlsberg, até a sua mudança para a Microsoft em 1996, onde se tornou o arquiteto responsável pelo projeto do C# e foi peça chave na criação do ambiente Microsoft.NET, utilizado no Delphi 8. O Delphi teve o formato da IDE alterado pela primeira vez na versão 8, basicamente similar ao formato do Microsoft Visual Studio para.net.
28 16 As principais diferenças entre o Delphi/Kylix e outras ferramentas de desenvolvimento são: a Linguagem Delphi, as paletas VCL e CLX, forte ênfase na conectividade com diversos bancos de dados e um grande número de componentes produzidos por terceiros, muitos deles disponíveis na internet e grande parte deles com o código fonte disponível. Os defensores do Delphi sustentam que fornecer juntos a linguagem, a IDE e sua biblioteca de componentes (VCL/CLX) contribui para uma boa consistência interna e um pacote mais reconhecível. Alguns destacam como vantagens do Delphi: a existência de uma grande quantidade de componentes prontos em sua biblioteca, facilidade de uso e aprendizado, desenvolvimento rápido e velocidade de execução do código comparada apenas à linguagem C Características do Delphi De acordo com Gomes (2004), Delphi possui um ambiente de desenvolvimento fácil de usar, com uma grande Biblioteca de Componentes Visuais (VCL - Visual Component Library). A VCL contém código de botões, campos, rótulos, gráficos, caixas de diálogo e acesso e tabelas de bancos de dados, e foi desenvolvida levando em conta as velocidades no desenvolvimento de aplicativos e na execução destes aplicativos. Vantagens do Delphi: Facilidade em alterações e implementações; Melhor estruturação do código; Velocidade; Verdadeira orientação a objetos. O RAD é possível graças aos vários controles disponíveis na paleta de componentes, onde o programador escolhe um destes componentes, e coloca-o diretamente no local desejado, dentro de um formulário. Formulário este que será a janela do aplicativo apresentada ao usuário. O Delphi permite o uso de objetos, e sua criação. Ele trabalha com eventos que dão início a alguma rotina de trabalho, ou seja, o programa fica parado até que um evento ocorra; como por exemplo: arrastar o mouse, clicar com o botão direito do mouse, selecionar um item de menu, pressionar a tecla Enter o a tecla TAB, etc. Um programa
29 17 tradicional, feito para ser executado em DOS, é organizado em torno de estruturas de dados com um loop principal e uma série de sub-rotinas constituindo o aplicativo, com procedimentos e funções separados para manipular os dados. Um programa orientado a objetos e eventos é organizado em torno de um conjunto de objetos. Onde cada objeto possui propriedades que o definem, e vários códigos (eventos) dando funcionalidade a este objeto. Ou seja, objetos são estruturas que combinam dados e funções em uma mesma estrutura. Assim, o Delphi é um ambiente de desenvolvimento totalmente orientado a objetos, trabalhando com classes e seus objetos, que possuem atributos (propriedades) e métodos, sendo também orientado a eventos. O ambiente utiliza a linguagem Object Pascal para codificação dos programas Ambiente Delphi Neste item será estudado o Integrated Developer Environment (IDE em português, Ambiente de Desenvolvimento Integrado) do Delphi que possui um conjunto de ferramentas que permitem facilitar e agilizar a construção de programas, permitindo uma melhor interação entre o programador e o computador. Suas principais janelas são: Janela Form; Janela Object Inspector; Janela Code Editor; Janela Object TreeView; Janela Main Janela Form O Form é a tela onde o desenvolvedor constrói sua aplicação. A partir de um Form é que se estabelece a interação usuário-computador, através de botões, rótulos e outros componentes, estabelecendo-se funções, métodos ou eventos que serão ativados. Os componentes são dispostos dentro da área útil do Form.
30 18 FIGURA A JANELA FORM: INTERFACE Janela Object Inspector A janela Object Inspector contém propriedades e eventos dos componentes inseridos em um Form, e do próprio Form. É na guia Properties (Propriedades), por exemplo, que se estabelecem as características de cada componente, como nome, fonte, altura, largura, etc. Já na guia Events (Eventos) estabelecem-se ações a serem tomadas pelo componente a partir de um evento associado ao mouse, teclado, sistema operacional, etc.
31 19 FIGURA A JANELA OBJECT INSPECTOR: PROPRIEDADES E EVENTOS Janela Code Editor A janela Code Editor, ou editor de código, é onde se desenvolve o programa fonte. É neste editor que se encontra a estrutura sintática propriamente dita da linguagem Object Pascal, que é utilizada pelo Delphi. Cabe ressaltar, no entanto, que boa parte do código escrito é gerado automaticamente.