terça-feira, 16 de dezembro de 2008

Sobre Lua (A linguagem de programaçao, nao o astro que voce ve no ceu toda noite)

Lua

Lua é uma linguagem de programação interpretada imperativa, procedural, pequena e leve, projetada para expandir aplicações em geral, para ser usada como linguagem extensível (que une partes de um programa feitas em mais de uma linguagem), para prototipagem e para ser embarcada em softwares complexos, como jogos. Assemelha-se com Python, Ruby e Icon, entre outras.
Lua é uma linguagem de programação leve, reflexiva e de programação processual, concebida como uma
linguagem de scripts com semântica extensível.
Lua foi criada por um time de desenvolvedores do
Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a Lucas Arts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral.
Lua combina programação procedural com poderosas construções para descrição de dados, baseadas em tabelas associativas e semântica extensível. É tipada dinamicamente, interpretada a partir de
bytecodes, e tem gerenciamento automático de memória com coleta de lixo. Essas características fazem de Lua uma linguagem ideal para configuração, automação (scripting) e prototipagem rápida.

Lua é normalmente descrito como uma linguagem de múltiplos paradigmas, oferecendo um pequeno conjunto de características gerais que podem ser estendidas para encaixar diferentes tipos de problemas, em vez de fornecer uma especificação mais complexa e rígida para combinar com um único paradigma. Lua, por exemplo, não contém apoio explícito à herança, mas permite que ela seja executada com relativa facilidade com metatables. Do mesmo modo, Lua permite que programadores quando implementam nomes, classes, e outras funções, o emprego de poderosas técnicas de programação funcional e completos escopos lexicais.
Lua é uma linguagem que suporta apenas um pequeno número de estruturas, tais como dados atômicos, valores booleanos, números (dupla precisão em ponto flutuante por padrão), e strings. As estruturas de dados comuns, tais como matrizes, conjuntos, tabelas, listas, e registros podem ser representados por meio da Lua. Lua não foi construída com suporte para programação orientada a objeto.


Fonte: Wikipedia.

Apenas alguns trabalhos

Aqui, postarei os codigos de alguns dos trabalhos dados por nosso ilustre(?) e grande(??) professor Mario Massakuni Kubo.

-> Translaçao de um objeto:

Arquivo - Translaçao.java



package main;

/**
*
* @author Eduardo Schlaepfer Pereira
*/

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;


public class Translaçao extends JFrame{

int x = 60;
int y = 60;

public void Translaçao (Graphics g){

for (y=0;y<=180;y++){ g.getColor(); g.clearRect(x, y-1, 50, 50); g.fillRoundRect(x, y, 50, 50, 10, 10); try{ Thread.sleep(5); } catch(InterruptedException ignored){ } } } public Translaçao(){ super("Translaçao"); setSize(200,300); Container window = getContentPane(); window.setLayout(null); show(); } @Override public void paint(final Graphics g){ super.paintComponents(g); Translaçao(g); } public static void main(String args[]){ Translaçao app = new Translaçao(); app.addWindowListener( new WindowAdapter(){ @Override public void windowClosing(WindowEvent e){ System.exit(0); } } ); } }




-> Escalonamento de um objeto:

Arquivo - Escalona.java




package main;

/**
*
* @author Eduardo Schlaepfer Pereira
*/

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;


public class Translaçao extends JFrame{

int x = 60;
int y = 60;

public void Translaçao (Graphics g){

for (y=0;y<=180;y++){ g.getColor(); g.clearRect(x, y-1, 50, 50); g.fillRoundRect(x, y, 50, 50, 10, 10); try{ Thread.sleep(5); } catch(InterruptedException ignored){ } } } public Translaçao(){ super("Translaçao"); setSize(200,300); Container window = getContentPane(); window.setLayout(null); show(); } @Override public void paint(final Graphics g){ super.paintComponents(g); Translaçao(g); } public static void main(String args[]){ Translaçao app = new Translaçao(); app.addWindowListener( new WindowAdapter(){ @Override public void windowClosing(WindowEvent e){ System.exit(0); } } ); } }




-> Rotaçao de um objeto:

Arquivo - Rotaçao.java



import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;


public class Rotaçao extends JFrame{

int x = 60;
int y = 60;

public void Rotaçao (Graphics g){

for (y=0;y<=360;y++){ g.getColor(); g.fillArc(47, 55, 50, 50, 1, y); try{ Thread.sleep(5); } catch(InterruptedException ignored){ } } } public Rotaçao(){ super("Rotaçao"); setSize(150,150); Container window = getContentPane(); window.setLayout(null); show(); } @Override public void paint(final Graphics g){ super.paintComponents(g); Rotaçao(g); } public static void main(String args[]){ Rotaçao app = new Rotaçao(); app.addWindowListener( new WindowAdapter(){ @Override public void windowClosing(WindowEvent e){ System.exit(0); } } ); } }

Portifolio de Programaçao!

Microsoft XNA


O Framework XNA e baseado na implementaçao nativa do .NET Compact Framework 2.0 para desenvolvimento no Xbox 360 e o .NET Framework 2.0 para o Windows. Ela inclui um extensivo conjunto de bibliotecas especificas para o desenvolvimento de jogos, para promover o maximo de reutilizaçao de codigo entre as paltaformas alvo. O framework roda em uma versao da Common Language Runtime que e otimizada para jogabilidade, para prover um ambiente de execuçao organizado. O Runtime esta disponivel para Windows XP, Windows Vista e Xbox 360. Ja que os jogos em XNA sao escritos para o Runtime, eles podem rodar em qualquer plataforma que suporte o Framework do XNA com minimas ou sem qualquer modificaçao. Jogos que rodam no framework podem, tecnicamente, serem escritos em qualquer linguagem dotipo .NET, mas apenas C# e o XNA Game Studio Express IDE e todas as versoes do Visual Studio 2005 sao suportadas oficialmente.

O Framework do XNA entao encapsula detalhes tecnologicos de pequeno nivel envolvidos na codificaçao de um jogo, certificando-se que o prorio framework cuide da diferença entre plataformas quando jogos sao transportados de uma plataforma compativel para outra, e assim permitindo que os desenvolvedores de jogos concentrem-se mais no conteudo do jogo e na experiencia que o jogo passa. O Framework do XNA tem e integrado com uma seria de acessorios, tais como as XACT, para ajudar na criaçao de conteudo. Estes acessorios podem ajudar o autor com os visuais e sons do jogo, e modelar personagens com dinamismo realista.

O Frameword do XNA oferece suporte para a criaçao de jogos tanto 2D quanto 3D, e permite o uso dos controles do Xbox 360 e sua funçao de vibraçao. Jogos feitos com o Framework cujo alvo e a plataforma Xbox podem, no momento, serem apenas distribuidos para membros do Microsoft XNA Creator's Club, cuja assinatura e de 99 dolares por ano. Aplicaçoes Desktop podem ser distribuidas de graça, sob a atual licensa da Microsoft.
aguns componentes do XNA:

-> Studio: IDE de desenvolvimento, baseado no Visual C# Studio. Assim, até o momento, só é possível desenvolver jogos usando a linguagem orientada à objetos C#. Existem duas versões:

---------->XNA Game Studio Express: versão gratuita e baseada no Visual C# 2005 Express. Ele foi desenvolvido para ser usado por estudantes, desenvolvedores hobbistas e pequenos grupos de desenvolvimento (indie developers), com o intuito de permitir que os usuários desenvolvessem seus próprios videogames;


---------->XNA Game Studio Professional: no momento, serem apenas distribuidos para membros do Microsoft XNA Creator's Club, cuja assinatura e de 99 dolares por ano;


->XNA Framework: conjunto de classes necessárias para se execução de um jogo XNA. Funciona sobre o .NET Framework 2.0 (games para PCs) ou do .NET Compact Framework for Xbox 360 (games para Xbox 360);

->XNA Content Pipeline: componente de gerência de conteúdo e artefatos do projeto, tais como imagens (JPG, PNG, BMP, etc), modelos 3D (X, FBX, etc), sonoros (WAV, etc) e dados (XML, etc). Ele transforma os arquivos automaticamente no momento do build em um formato que será entendido pela aplicação em tempo de execução. O Content Pipeline é extensível e permite que o desenvolvedor escreva um conversor para um formato especial ou desconhecido com flexibilidade;

->XACT (Audio Authoring Tool): ferramenta para audio designers organizarem seus arquivos de aúdio e efeitos sonoros. Somente são suportados os formatos WAV e AIF.