Este documento fornece uma introdução ao framework Ruby on Rails para desenvolvimento de web games, cobrindo tópicos como:
1) Uma breve introdução a linguagem Ruby;
2) Explicação das principais classes e estruturas de dados como Integer, String, Array, Hash;
3) Demonstração de operadores, fluxo de controle e convenções de nomenclatura;
4) Discussão sobre o padrão MVC usado no Rails e como ele se aplica aos modelos, views e controllers.
2. Oi
• Endel Dreyer
• Aluno de Jogos Digitais
• Desenvolvedor na Ocapi (ocapi.com.br)
• Utiliza Ruby / Rails à 2 anos
http://twitter.com/endel http://github.com/endel
12. Core classes:
String
nome = "Joselito"
"Oi, meu nome é #{nome}"
# => "Oi, meu nome é Joselito"
'Oi, meu nome é #{nome}'
# => "Oi, meu nome é #{nome}"
18. Core classes:
Array
notas = [8, 4, 5.9, 9, 4, 10]
notas.select {|nota| nota >= 6 }
# => [8, 9, 10]
notas.sort
# => [4, 4, 5.9, 8, 9, 10]
OBS: Blocos podem ser entre {} ou do / end
19. Core classes:
Hash
• Similar ao Array
• Armazenam qualquer tipo de objeto
• Índices podem ser qualquer tipo de objeto
hash = Hash.new
hash2 = {1 => 'um', 2 => 'dois'}
23. Fluxo: Condicionais
• if
• unless
if condição
bloco de código
end unless condição
bloco de código
variavel = 5 if condição end
variavel = 5 unless condição
24. Fluxo: Case / When
nota = 6
case nota
when 10 then puts "Excelente!"
when 8..9 then puts "Muito bom"
when 6..7 then puts "Regular"
else puts "Noob!"
end
25. Fluxo: Loops
• begin...end while
• enquanto (...) faça (...)
begin
alguma_coisa
end while (condicao == true)
26. Fluxo: Loops
• begin...end until
• faça (...) até (...)
begin
alguma_coisa
end until (condicao == true)
43. Estrutura padrão
Arquivo/Diretório Finalidade
Especifica as dependências de “gems” para a
Gemfile
aplicação.
app/ Controllers, models e views da aplicação.
public/ Arquivos públicos. Javascript, CSS, Imagens, etc.
Configurações da aplicação: rotas, banco de
config/
dados, etc.
lib/ Módulos para extensão da aplicação.
db/ Migrações do banco de dados.
vendor/ Códigos de terceiros. “Gems” estáticas.
log/ Arquivos de log da aplicação.
46. Models
• Objetos que representam uma entidade no banco de
dados
$ rails generate model personagem
nome:string
level:integer
exp:integer
hp:integer
47. Models
• Objetos que representam uma entidade no banco de
dados
$ rails generate model personagem
nome:string
level:integer
exp:integer
Convenção: Singular hp:integer
48. Models
• Objetos que representam uma entidade no banco de
dados
$ rails generate model personagem
nome:string
level:integer
exp:integer
hp:integer
campo : tipo
49. Models
$ rails generate model {identificador}
{atributo}:[ integer,
boolean,
string,
text,
float,
decimal,
datetime,
timestamp,
time,
date,
binary]
51. Models
• Extendem ActiveRecord::Base
• Devem gerenciar o comportamento do objeto
class Personagem < ActiveRecord::Base
def level_up!
level += 1
save
end
end
55. Controllers
• Recebem a entrada do usuário
• Fazem chamadas aos models
• Renderizam uma view
$ rails generate controller personagens
56. Controllers
• Recebem a entrada do usuário
• Fazem chamadas aos models
• Renderizam uma view
class PersonagensController < ApplicationController
end
57. Controllers
• Recebem a entrada do usuário
• Fazem chamadas aos models
• Renderizam uma view
• Cada método corresponde à uma URL
class PersonagensController < ApplicationController
def criar
end
end
http://localhost:3000/personagens/criar