Posts Tagged ‘exemplo’

Criando um Hello World usando a Game Engine Flixel

Postado em 09 jun 2010
Categoria(s) Flixel, Jogo

Flixel é uma game engine escrita em ActionScript 3, facilita bastante a construção de alguns tipos e formatos de jogos, especialmente jogos de plataforma. Já possuí classes e métodos para lidar com:

  • Texto;
  • Colisão;
  • Imagens
  • Efeitos
  • Mapa;
  • Pontos;
  • Estados;
  • Fases;
  • Inimigos;
  • Vidas;
  • Câmera
  • e muitas outras coisas.

Esse post tem o objetivo de construir um Hello World, esse exemplo será o passo inicial para a construção de jogos mais complexos no futuro.

Em primeiro lugar você precisa conhecer o site do Flixel: http://www.flixel.org lá você encontra a game engine para download, fórum, wiki e outros games já desenvolvidos pela comunidade.

Primeiro passo: Instalação do FlashDevelop

Faça o download do FlashDevelop, nós vamos usar ele como IDE de desenvolvimento. Para fazer o download: http://www.flashdevelop.org/downloads/releases/FlashDevelop-3.2.1-RTM.exe.
Faça a instalação seguindo o padrão next next finish be happy! :)

Segundo passo: Flex SDK

Para construir o jogo nós precisamos do Flex SDK, que são as bibliotecas padrões do ActionScript 3, a game engine Flixel utiliza essas bibliotecas internamente e você provavelmente vai precisar de alguma delas para as customizações ou necessidades do seu jogo.
Faça o download: http://opensource.adobe.com/wiki/display/flexsdk/download?build=4.1.0.16248&pkgtype=1 e descompacte em algum diretório da sua preferência, daqui a pouco nós vamos usar ele.

Terceiro passo: Download do Flixel

Vamos precisar dele para a construção do jogo, ele na verdade é um framework de desenvolvimento de jogos. Já possui muitas bibliotecas prontas que facilitam e aceleram o desenvolvimento. Faça o download em: http://github.com/AdamAtomic/flixel/archives/master e descompacte também em algum diretório da sua preferência.

Criando um Novo Projeto

  • Abra o FlashDevelop;
  • Clique no menu “Project”;
  • Clique na opção “New Project”;
  • Em “Installed Templates” selecione “AS3 Project”;
  • Em “Name:” digite HelloWorld;
  • Marque o checkbox na opção “Create directory for project”;
  • Clique no botão “Ok”.

Configurando o Flex SDK e Flixel no Projeto

  • Clique no menu “Project”;
  • Clique na opção “Properties…”;
  • Clique na aba “Compiler Options”;
  • No campo “Custom Path to Flex SDK” clique no botão “…” e selecione o diretório onde você descompactou o Flex SDK;
  • Clique na aba “Classpaths”;
  • Clique no botão “Add Classpaths…” e selecione o diretório onde você descompactou o Flixel, mas você precisa entrar na pasta e selecionar a pasta “org”;
  • Clique no botão “Ok”.

Programando o HelloWorld

HelloWorld.as

  • No diretório src do projeto existe o arquivo Main.as, apague esse arquivo;
  • Clique com o botão direito do mouse na pasta “src” depois “add” e “New Class…“;
  • Digite para o campo “Name:” o valor: HelloWorld.

Será gerando um código inicial como esse:

package  
{
	/**
	 * ...
	 * @author Patrick Espake
	 */
	public class HelloWorld
	{
 
		public function HelloWorld() 
		{
 
		}
 
	}
 
}

Vamos alterar para ficar dessa forma:

package  
{
	// Importa a game engine Flixel
	import org.flixel.*;
 
	// Tamanho da tela e cor de fundo
	[SWF(width = "640", height = "480", backgroundColor = "#000000")]
 
	// Classe HelloWorld
	// herda a classe FlxGame para incorporar as funcionalidades do Flixel
	public class HelloWorld extends FlxGame
	{
		// Método construtor
		public function HelloWorld() 
		{
			// Tamanho da área útil
			// classe inicial a ser chamada depois do jogo carregar
			// e nível de zoom
			super(640, 480, PlayState, 1);
		}	
	}
}

Através dos comentários acima você deve ser capaz de entender a maioria do código, basicamente nós definimos a dimensões do swf que será gerado, a cor de fundo, e qual classe de estado deve ser chamada após o jogo terminar de carregar, nesse exemplo PlayState que não criamos ainda.

E importante notar que nós herdamos no código a classe FlxGame, através desse herança podemos adquirir métodos e atributos da game engine Flixel.

Agora precisamos dizer para o FlashDevelop sempre compilar essa classe que acabamos de criar, clique com o botão direito do mouse sobre a classe “HelloWorld.as” e clique na opção “Always Compile“.

PlayState.as

Crie uma nova classe no diretório src chamada PlayState.

Altere o seu código para ficar da seguinte forma:

package  
{
	// Importa a game engine Flixel
	import org.flixel.*;
 
	// Classe inicial do jogo
	// herda de FlxState
	public class PlayState extends FlxState
	{
		// Método do Flixel
		// usado para criar os elementos do jogo
		override public function create():void
		{
			// Criação do texto com o Hello World!
			var t1:FlxText = new FlxText(0, 0, FlxG.width, "Hello World!");
			t1.alignment = "center";
			t1.size = 48;
 
			// Adiciona o texto na tela
			add(t1);
		}
	}
}

A classe PlayState representa o estado de jogo do Flixel, a game engine possui uma máquina de estados, você pode ter vários estados, por exemplo: menu, créditos, primeira fase, segunda fase, game over e vitória. O Flixel já possui alguns métodos para realizar facilmente essa transição de estados.

Nessa classe nós herdamos de FlxState que possui vários métodos e atributos para lidar com estados do jogo, através do método create é criado os elementos do jogo, nesse exemplo simples apenas um texto com “Hello World!”.

Você pode pressionar a tecla F5 para testar, caso você tenha o Flash Debugger instalado ele já vai abrir a tela com o jogo, caso contrário você terá que ir na pasta bin e abrir o arquinvo index.html no navegador.

  • Share/Bookmark

Instalação do PostgreSQL

Postado em 09 nov 2009
Categoria(s) PostgreSQL

Instalação

Para instalar o PostgreSQL no Ubuntu digite o comando:

sudo apt-get install postgresql-common postgresql-8.3 postgresql-client-8.3

Mudando a senha do usuário postgres

sudo su postgres psql

No console do psql

ALTER USER postgres WITH PASSWORD 'postgres';
\q

Configurando o postgresql.conf

sudo vi /etc/postgresql/8.3/main/postgresql.conf

Localizar a linha:

listen_addresses = 'localhost'

e mudar para:

listen_addresses = '*'

remova o carácter de comentário (#) da linha.

A opção listen_addresses permite definir qual host pode se conectar no servidor, exemplo: localhost somente para conexões locais, * para qualquer host ou um ip específico como: 192.168.1.236.

Configurando pg_hba.conf

sudo vi /etc/postgresql/8.3/main/pg_hba.conf

Adicionar no fim do arquivo a linha:

host all all 192.168.1.0/24 md5

Essa configuração específica na ordem:

  • host: Define regras para o protocolo TCP/IP, essa opção pode ser host, local ou hostssl;
  • all: Define qual banco de dados que essa regra se aplica, se definindo all será para todos;
  • all: Define qual usuário tem permissão para usar essa regra, se definido all será para todos;
  • 192.168.1.0/24: Padrão CIDR, define qual faixa de ip’s podem ser conectar no servidor através do padrão CIDR;
  • md5: Método de autenticação, md5 padrão, trust para aceitar, reject para negar e mais algumas outras opções.

Reiniciar o PostgreSQL

sudo /etc/init.d/postgresql-8.3 restart

Usuários de banco de dados

Criar um novo usuário. Para pode criar um novo usuário é necessário estar logado com o usuário postgres.

sudo su postgres

Existem duas formas de criar e deletar um usuário, uma através do shell e outra através do cliente postgre.

Via Shell

createuser patrick

Via cliente postgres

psql
CREATE USER patrick;

As duas opções criam patrick como superusuário.

Exemplos:

Definindo password

CREATE USER patrick PASSWORD '123';

Definindo privilégios de superusuário, permissão para criar databases e roles:

CREATE USER patrick SUPERUSER INHERIT CREATEDB CREATEROLE;

Mais informações: http://pgdocptbr.sourceforge.net/pg80/sql-createuser.html.

Deletar usuário

Via Shell:

dropuser patrick

Via cliente postgres:

psql
DROP USER patrick;

Alterar usuário:

ALTER USER patrick PASSWORD ‘teste123′;

Mais detalhes: http://pgdocptbr.sourceforge.net/pg80/sql-alteruser.html.

  • Share/Bookmark

Ruby-Processing Exemplo de Modelo 3D com Drag e Carregamento de Material OBJ e MTL

Postado em 24 ago 2009
Categoria(s) PIBIC, Processing, Ruby, Ruby-Processing

O exemplo abaixo ilustra uma aplicação no modelo 3D com drag e carregamento de material OBJ e MTL, usando Ruby-Processing.
Para trabalhar com .OBJ esse exemplo usa a biblioteca: .OBJ loader for Processing, você pode encontrar mais informações em: http://code.google.com/p/saitoobjloader/.

Para esse exemplo funcionar você deve possuir o Ruby-Processing instalado, caso não possua siga os passos: http://blog.patrickespake.com/2009/08/23/ruby-processing.

Exemplo Modelo 3D com Drag e Carregamento de Material OBJ e MTL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Example < Processing::App
  load_library :objloader
  import "saito.objloader"
 
  def setup
    size 800, 600, P3D
    @model = OBJModel.new(self, "m1.obj")
    @rot_x = 0
    @rot_y = 0
  end
 
  def draw
     background 51
     no_stroke
     lights
     smooth
 
     push_matrix
     translate width/2, height/2, 0
     rotate_x @rot_y
     rotate_y @rot_x
     scale 3
     @model.drawMode POLYGON
     @model.draw
     pop_matrix
  end
 
  def mouse_dragged
    @rot_x += (mouse_x - pmouse_x) * 0.01;
    @rot_y -= (mouse_y - pmouse_y) * 0.01;
  end
end
 
Example.new :title => "Example 3D With .OBJ Loader"

Esse exemplo importa um modelo 3D criado no 3D Studio Max, quando você clica e faz drag o modelo 3D se movimenta.

Executando

No terminal digite:

rp5 run example.rb

Resultado

ruby-processing-modelo-3d-drag-objloader

Você pode ver esse exemplo em execução no endereço: http://lab.patrickespake.com/ruby-processing-examples/example_3d_objloader/run/. Você precisa ter paciência para visualizar o modelo rodando, ele demora um certo tempo para carregar no browser.

Código fonte completo: http://github.com/patrickespake/ruby-processing-examples/tree/c80a080dd1e27a562b252fa01bc1030d924a9f47/example_3d_objloader.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby-Processing Exemplo de Modelo 3D com Animação

Postado em 23 ago 2009
Categoria(s) PIBIC, Processing, Ruby, Ruby-Processing

O exemplo abaixo ilustra uma aplicação no modelo 3D com animação, usando Ruby-Processing.
Para esse exemplo funcionar você deve possuir o Ruby-Processing instalado, caso não possua siga os passos: http://blog.patrickespake.com/2009/08/23/ruby-processing.

Exemplo Modelo 3D com Animação

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class Teste3d2 < Processing::App
  attr_accessor :rotx, :roty, :tex, :bg, :rate
 
  def setup
    size 800, 600, P3D
    self.bg = load_image "candy_2.jpg"
    self.tex = load_image "smile.jpg"
    texture_mode NORMALIZED
    fill 255
    stroke(color(44, 48, 32))
    self.rotx = 0
    self.roty = 0
    self.rate = 0.05
  end
 
  def draw
    background self.bg
    no_stroke
    translate width/2.0, height/2.0, -100
    rotate_x self.rotx
    rotate_y self.roty
    scale 90
    texture_cube self.tex
    position_update
  end
 
  private
 
  def position_update
    self.rotx += rate
    self.roty += rate
 
    puts "rotx: #{self.rotx}"
    puts "roty: #{self.roty}"
  end
 
  def texture_cube(tex)
    begin_shape QUADS
    texture tex
 
    # +Z "front" face
    vertex(-1, -1,  1, 0, 0)
    vertex( 1, -1,  1, 1, 0)
    vertex( 1,  1,  1, 1, 1)
    vertex(-1,  1,  1, 0, 1)
 
    # -Z "back" face
    vertex( 1, -1, -1, 0, 0)
    vertex(-1, -1, -1, 1, 0)
    vertex(-1,  1, -1, 1, 1)
    vertex( 1,  1, -1, 0, 1)
 
    # +Y "bottom" face
    vertex(-1,  1,  1, 0, 0)
    vertex( 1,  1,  1, 1, 0)
    vertex( 1,  1, -1, 1, 1)
    vertex(-1,  1, -1, 0, 1)
 
    # -Y "top" face
    vertex(-1, -1, -1, 0, 0)
    vertex( 1, -1, -1, 1, 0)
    vertex( 1, -1,  1, 1, 1)
    vertex(-1, -1,  1, 0, 1)
 
    # +X "right" face
    vertex( 1, -1,  1, 0, 0)
    vertex( 1, -1, -1, 1, 0)
    vertex( 1,  1, -1, 1, 1)
    vertex( 1,  1,  1, 0, 1)
 
    # -X "left" face
    vertex(-1, -1, -1, 0, 0)
    vertex(-1, -1,  1, 1, 0)
    vertex(-1,  1,  1, 1, 1)
    vertex(-1,  1, -1, 0, 1)
 
    end_shape
  end
end
 
Teste3d2.new :title => "Teste 3D"

Esse exemplo gera um cubo em 3D com animação.

Executando

rp5 run teste_3d_2.rb

ruby-processing-modelo-3d-animacao

Você pode ver esse exemplo em execução no endereço: http://lab.patrickespake.com/ruby-processing-examples/example_3d_animation/run/. Você precisa ter paciência para visualizar o modelo rodando, ele demora um certo tempo para carregar no browser.

Código fonte completo: http://github.com/patrickespake/ruby-processing-examples/tree/c80a080dd1e27a562b252fa01bc1030d924a9f47/example_3d_animation.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby-Processing Exemplo de Modelo 3D com Drag

Postado em 23 ago 2009
Categoria(s) PIBIC, Processing, Ruby, Ruby-Processing

O exemplo abaixo ilustra uma aplicação no modelo 3D com drag, usando Ruby-Processing.
Para esse exemplo funcionar você deve possuir o Ruby-Processing instalado, caso não possua siga os passos: http://blog.patrickespake.com/2009/08/23/ruby-processing.

Exemplo Modelo 3D com Drag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class Teste3d < Processing::App
  attr_accessor :rotx, :roty, :tex, :bg
 
  def setup
    size 800, 600, P3D
    self.bg = load_image "candy.jpg"
    self.tex = load_image "smile.jpg"
    texture_mode NORMALIZED
    fill 255
    stroke(color(44, 48, 32))
    self.rotx = PI/4
    self.roty = PI/4
  end
 
  def draw
    background self.bg
    no_stroke
    translate width/2.0, height/2.0, -100
    rotate_x self.rotx
    rotate_y self.roty
    scale 90
    texture_cube self.tex
  end
 
  def mouse_dragged
    rate = 0.01
    self.rotx += (pmouse_y - mouse_y) * rate
    self.roty += (mouse_x - pmouse_x) * rate
  end
 
  private
 
  def texture_cube(tex)
    begin_shape QUADS
    texture tex
 
    # +Z "front" face
    vertex(-1, -1,  1, 0, 0)
    vertex( 1, -1,  1, 1, 0)
    vertex( 1,  1,  1, 1, 1)
    vertex(-1,  1,  1, 0, 1)
 
    # -Z "back" face
    vertex( 1, -1, -1, 0, 0)
    vertex(-1, -1, -1, 1, 0)
    vertex(-1,  1, -1, 1, 1)
    vertex( 1,  1, -1, 0, 1)
 
    # +Y "bottom" face
    vertex(-1,  1,  1, 0, 0)
    vertex( 1,  1,  1, 1, 0)
    vertex( 1,  1, -1, 1, 1)
    vertex(-1,  1, -1, 0, 1)
 
    # -Y "top" face
    vertex(-1, -1, -1, 0, 0)
    vertex( 1, -1, -1, 1, 0)
    vertex( 1, -1,  1, 1, 1)
    vertex(-1, -1,  1, 0, 1)
 
    # +X "right" face
    vertex( 1, -1,  1, 0, 0)
    vertex( 1, -1, -1, 1, 0)
    vertex( 1,  1, -1, 1, 1)
    vertex( 1,  1,  1, 0, 1)
 
    # -X "left" face
    vertex(-1, -1, -1, 0, 0)
    vertex(-1, -1,  1, 1, 0)
    vertex(-1,  1,  1, 1, 1)
    vertex(-1,  1, -1, 0, 1)
 
    end_shape
  end
end
 
Teste3d.new :title => "Teste 3D"

Esse exemplo gera um cubo em 3D, quando você clica e faz drag o cubo se movimenta.

Executando

No terminal digite:

rp5 run teste_3d.rb

Resultado

ruby-processing-modelo-3d-drag

Você pode ver esse exemplo em execução no endereço: http://lab.patrickespake.com/ruby-processing-examples/example_3d_drag/run/. Você precisa ter paciência para visualizar o modelo rodando, ele demora um certo tempo para carregar no browser.

Código fonte completo: http://github.com/patrickespake/ruby-processing-examples/tree/c80a080dd1e27a562b252fa01bc1030d924a9f47/example_3d_drag.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark