Posts Tagged Java
[JAVA] Fullscreen exclusive utilizando a placa gráfica
Posted by Daniel Accorsi in Java on 26/08/2010
Tudo que precisamos fazer para iniciar uma aplicação em modo fullscreen exclusive é apenas instanciarmos uma JFrame buscando os recusos da placa gráfica, de acordo com sua capacidade. Fullscreen exclusive é um recurso implantado recentemente no Java para deixar a aplicação mais ágil, sem muita concorrência com recursos das bibliotecas que trabalham com recursos gráficos (Swing e AWT). Afinal, o que é isso? Acontece que o Java trabalha com bibliotecas exclusivas para tratamento de janelas, desta forma, esta implementa uma camada acima da camada do Windows (ou outro SO), deixando a aplicação um pouco mais lenta. Aí que entra o modo fullscreen exclusive, que utiliza o mínimo de recursos das bibliotecas gráficas do Java, e fornece exclusivamente em modo fullscreen apenas os recursos necessários para a aplicação.
Neste código iremos encontrar as seguintes características:
[JAVA] Projeto Morg – Download
Posted by Daniel Accorsi in Java, Morg on 24/06/2010
Está disponível a versão 0.6 para download do projeto Morg. O projeto foi retomado. Lembrando que é necessário fazer as configurações corretas no console do DOS para conseguir exibir sem quebra de caracteres.
Configuração do console:
Buffer:
Largura: 110
Altura: 400
Janela:
Largura: 110
Altura: 50
Fonte: Lucida Console
Ahh, claro… Tenham o Java!
Para carregar o game, basta descompactar e executar o morg.bat.
Segue o link: http://code.google.com/p/morggame/
[JAVA] Assert (teste unitário) – Você sabe o que é?
Posted by Daniel Accorsi in Java on 14/07/2009
Não? Pois bem, aprendi sobre ele esses dias. Pesquisei pela internet para tentar entender sua a real utilização. Vi muita coisa em fóruns. Ah, antes deixe-me comentar uma coisa: valeu pela dica de um colega usuário (não me lembro em qual fórum) que ao ver meu checklist do Projeto Morg, me recomendou em acrescentar o estudo sobre teste unitário (Assert). Isso mesmo! Eu estou falando aqui dos Testes Unitários, que são utilizados somente em modo de desenvolvimento e nunca em fase de produção.
[JAVA] Projeto Morg 0.6
Posted by Daniel Accorsi in Java, Morg on 02/07/2009
Deopis de um mês de estudo e desenvolvimento, mais outro mês parado por causa de tempo (padrão), estou postando a nova versão do Projeto Morg, agora na 0.6. Para quem ainda não sabe do que se trata, veja aqui a explicação inicial.
No post anterior aceitei a sugestão de Suissa, para exibir as mensagens do sistema logo abaixo do mapa. Valeu Suissa.
[JAVA] Desafio: percorra circularmente uma matriz
Posted by Daniel Accorsi in Java on 22/05/2009
Vamos lá, isso aqui precisa um pouco mais de movimento. Um pequeno desafio aos leitores do blog. Estão vendo a imagem abaixo? Então, que tal fazer uma varredura na matriz seguindo a ordem da flecha? O matriz pode ser do tipo que quiser. O objetivo é apenas seguir a ordem. Deve-se imprimir no console a coordenada atual (x,y) e seu conteúdo.
[JAVA] Atualização SDK 6u13 com JavaFX 1.1
Posted by Daniel Accorsi in Java on 15/04/2009
Saiu a atualização do Java SDK, versão 6.0_13 com opção do JavaFX 1.1 integrado.
Conheca aqui o changelog da versão.
[JAVA] Projeto Morg 0.5
Posted by Daniel Accorsi in Java, Morg on 13/04/2009
O Projeto Morg nasceu na necessidade do estudo da linguagem Java através dos conceitos de desenvolvimento de jogos voltados ao RPG. Foi escolhido o estilo RPG por necessitar de dezenas de classes para as definições gerais do game, como classes de personagens, itens, mundos, mapas, acessórios, inventórios etc. Como se não bastasse, tudo isso necessita de alguns conceitos em Java, como Packages, FSO, Herança, Thread entre outras. A diferença é que neste estilo de game, tudo isso é usado de forma consistente.
Eu poderia começar com um simples jogo de Memória ou Descubra o Número através de classes swing. Mas eu estaria saindo do foco, que é meu estudo em Java. Esse é o motivo principal por iniciar o Projeto Morg em um console DOS (no caso de Windows), onde o Mundo é renderizado em forma de caracteres.
Porque Console? Porque meu foco é estudar os conceitos básico em Java, ainda.
Por se tratar de Console, o projeto até que está avançado. Veja meu checklist:

Veja que Swing está como foco em meu estudo, como consequência um ambiente mais amigável, e mais adiante, utilizaremos Java 2D. Lembrando que tudo isso tem como foco o estudo da linguagem. Futuramente estarei dando continuidade, transformando num projeto para distribuição.
Estou na versão 0.5. A versão 1.0 será um fato somente quando for implementado todos os itens em “Conceitos RPG“, conforme a lista acima. Tudo ainda em modo Console. Nesta etapa o objetivo não é a diversão.
O funcionamento é simples, mesmo tratando com todos os conceitos acima especificados. Ao iniciar, é instanciado um Mundo, instanciando um Mapa para este Mundo, instanciado os objetos do Mapa, como Arvores e Gramas e por fim instanciado o Personagem principal, na qual temos o controle através das teclas WASD. A opção X sai do loop principal e encerra o game.
As instâncias das Árvores, da Grama e do Personagem são feitas através de um arquivo texto que é lido assim que o Mundo é criado. Cada linha contém um objeto a ser criado, incluindo o Personagem principal. Dentro de cada loop é redesenhado a tela com as posições dos objetos e a nova posição do Personagem quando solicitamos que este ande para um dos lados.
Sobre o arquivo texto, ele é gerado através de uma Thread que “grava o Mundo” com intervalos de 30 segundos independete da ação do jogador. Ao iniciar o game, antes do loop, inicio essa Thread para que o mundo nunca deixe de ser salvo, assim teremos a posição atualizada de todos os itens do mapa incluindo do Personagem principal.
Veja abaixo um exemplo de quando o game é iniciado (clique):
No Mapa gerado, o caractere “*” simboliza uma Árvore, em “~” simboliza a Grama e aquele caractere estranho no canto inferior esquerdo simboliza o Personagem principal, na qual temos o controle.
Você pode ver no checklist o item “Reconhecimento de itens a sobrepor”. Isso significa que no mapa existem itens que posso passar por cima, como uma grama. Outros itens não posso passar por cima, como a Árvore. Isso é definido em regras de programação no método de movimentação do personagem. Se for um item de sobrepor, meu Personagem sobrepõe esse item (no caso a grama), e ao sair do local, a grama deve voltar em seu ponto de origem, dando a grotesca impressão de que passamos por cima. No caso de árvores, há uma verificação de colisão e o Personagem simplesmente não anda.
Veja abaixo um vídeo do funcionamento:
Importante comentar que todo o game está baseado em vetores, tanto para o Mundo, como para o Mapa. Todas os itens do Mapa estão dentro de um vetor e a varredura para remontar a tela é feita com base nessa mesmo vetor.
Há alguns itens a mais no projeto que não descrevi aqui, como uma breve definição de armadura (está na tela), utilização da classe do cores do Java, sistema bem simples de batalha (sim, já existe) e outras cositas a mais. Estarei evoluindo conforme o checklist e criando novos posts aqui no blog. Se eu lembrar de alguma coisa dessa versão que não comentei, faço um update aqui.
Opiniões são muito bem vindas, só comentar abaixo.
[JAVA] Conexão com Oracle
Posted by Daniel Accorsi in Java, Oracle on 03/03/2009
Abaixo um exemplo simples para conexão Oracle em JAVA utilizando a biblioteca ojdbc14.jar (abaixo para download)
A estrutura dos arquivos estão da seguinte forma:
|Principal.java
|Ora (dir)
|-ConnectionMaker.java
|-lib (dir)
|–ojdbc14.jar
Através da classe Principal abaixo, importamos a classe Connection da bibliteca Java para fazer a instanciação de um objeto Connection e dar início a conexão Oracle. Importamos também, na linha 2, a classe em si que garante a conexão com o banco.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import java.sql.Connection; import ora.ConnectionMaker; public class Principal{ public static void main(String args[]){ try { ConnectionMaker conn = new ConnectionMaker(); Connection con1 = conn.getInstance("user", "password", "banco", "host"); //String user, String password, String sid, String url System.out.println("Conectou!"); con1.close(); System.out.println(""); System.out.println("Fechou conexão!"); } catch(Exception ex) { ex.printStackTrace(); } } } |
Confira abaixo como fica a classe ConnectionMaker para concretizar a conexão (atenção com a package, veja mais aqui). Veja a linha 5, aqui importamos a biblioteca ojdbc14.jar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package ora; import java.sql.Connection; import java.sql.DriverManager; import oracle.jdbc.driver.OracleDriver; public class ConnectionMaker { public static Connection getInstance(String user, String password, String sid, String url) throws Exception { DriverManager.registerDriver(new OracleDriver()); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@" + url + ":1521:" + sid, user, password); conn.setAutoCommit(false); return conn; } public static Connection getInstance(String user, String password, String sid) throws Exception { return getInstance(user, password, sid, "localhost"); } } |
Para que seu programa funciona com sucesso, defina a váriavel de ambiente CLASSPATH de nossa biblioteca ojdbc14.jar. Vai ficar mais ou menos assim, dependendo onde descompactou os arquivos:
set classpath=D:\caminho\subdir\subdir\subdir\ojdbc14.jar;
Cuidado para não substituir a CLASSPATH existente, insira o já existente na mesma linha separando por ponto e vírgua (;).
Faça download da biblioteca de conexão Oracle incluindo exemplos.
Participação de Luiz Claudio – Londrina/PR que me indicou a classe ConnectionMaker e a biblioteca ojdbc14.jar.
[JAVA] Trabalhando com Classes Abstratas
Posted by Daniel Accorsi in Java on 18/02/2009
É muito simples trabalhar com clases abstratas. Uma classe abstrata nada mais é do que uma especificação conceitual para outras classes. O que isso que dizer? Que nunca iremos instanciá-la. Ela apenas fornece um modelo para geração de outras classes. Esta nunca está completa, ou seja, servirá apenas para criação de funcionalidades genéricas de casses filhas. Podemos também chamar as classes abstratas de super classe.
Sem complicações, o basico é isso! Disponibilizei no final do post um link para download das classes exemplificadas aqui.
Agora a parte prática. Todos os arquivos poderão ficar no mesmo nível de diretório.
A hierarquia das classes deste exemplo estão da seguite forma (somente estrutura, e não definição de atributos e métodos):


