No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

5D
13H
32M
48S
Curso de Ruby

Curso de Ruby

Sim贸n Soriano

Sim贸n Soriano

Vista b谩sica

27/39
Recursos

Aportes 20

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Hay errores de edici贸n team Platzi, ojo por ah铆.

La verdad es que da pena ver este curso. Ven铆a con ilusi贸n a aprender Ruby debido a que en mi nuevo trabajo lo est谩n utilizando, pero vaya decepci贸n me he topado; conceptos vagos, poca profundizaci贸n, problemas en la edici贸n, desactualizado, incluso pareciera como si nosotros debi茅semos saber parte de la sintaxis de Ruby ya que ni se molestan en explicar algunos detalles (claro que tambi茅n corresponde investigar por nuestra cuenta, pero es que ya son temas b谩sico que debiese contar un curso de pago como este) y para qu茅 seguir enumerando. Bueno, supongo que Platzi le da m谩s amor a los cursos que generan m谩s platita que a los cursos de lenguajes no tan 鈥減opulares鈥 (y entre comillas porque igual es bastante popular). Hubiera sido m谩s provechoso en buscar uno en udemy directamente.
Bueno, me quej茅 lo suficiente, sigan con el curso 馃槃 (o no)

Hay problemas con la edicion!

Por qu茅 us贸 extend y no include http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/

Estructurando el proyecto


Les dejo mi c贸digo para los que necesiten ver. Algunas cosas las cambie de nombre o valor, pero igual sirve. Adem谩s le a帽ad铆 una mejor paleta de color aqu铆 el link

C贸digo del archivo: app.rb

# Nos ayuda a incluir archivo a este archivo, como @import de sass
require_relative "view/ruby2d"
require_relative "model/state"

vista = View::Ruby2dView.new

estado_inicial = Modelo::initial_state
vista.render(estado_inicial)

C贸digo del archivo: state.rb

# Representacion del estado del juego

module Modelo
    class Coord < Struct.new(:row,:col)
    end

    class Food < Coord
    end

    class Snake < Struct.new(:positions)
    end

    class Grid < Struct.new(:rows,:cols)
    end

    class State < Struct.new(:Snake, :Food, :Grid)
    end

    def self.initial_state
        Modelo::State.new(
            Modelo::Snake.new([
                Modelo::Coord.new(1,1),
                Modelo::Coord.new(0,1),
            ]),
            Modelo::Food.new(4,4),
            Modelo::Grid.new(10,12)
        )
    end
end

C贸digo del archivo: ruby2d.rb

require 'ruby2d'

module View
    class Ruby2dView
        def initialize
            @pixel_size = 50
        end

        def render(state)
            extend Ruby2D::DSL
            set(
                title: "La culebrita",
                width: @pixel_size * state.Grid.cols,
                height: @pixel_size * state.Grid.rows
            )
            render_snake(state)
            render_food(state)
            show
        end

        private
        def render_snake(state)
            extend Ruby2D::DSL
            serpiente = state.Snake
            serpiente.positions.each do |pos|
                Square.new(
                    x: pos.col * @pixel_size,
                    y: pos.row * @pixel_size,
                    size: @pixel_size,
                    color: '#00b7c2'
                )
            end
        end

        def render_food(state)
            extend Ruby2D::DSL
            comida = state.Food
            Square.new(
                x: comida.col * @pixel_size,
                y: comida.row * @pixel_size,
                size: @pixel_size,
                color: '#ecfeff'
            )
        end
    end
end

Hay varias formar de incluir el c贸digo de alg煤n modulo en una clase, y estas son: Include, Prepend y Extend

El profesor utiliza

extend Ruby2D::DSL

y esto permite importar los m茅todos de la clase DSL del modulo Ruby2D y utilizarlos en las funciones o m茅todos de la clase Ruby2dView

Tomado de https://medium.com/@leo_hetsch/ruby-modules-include-vs-prepend-vs-extend-f09837a5b073

Es bueno mencionar que el modificador private afecta directamente a todos los m茅todos que se encuentren por debajo de el, por este motivo es conveniente declarar los m茅todos privados al final de la clase.

Hola estoy siguiendo el curso pero me tira un error que me tiene loco desde ayer y no lo pude resolver, este es el mensaje:

Traceback (most recent call last):
	3: from src/app.rb:1:in `<main>'
	2: from src/app.rb:1:in `require_relative'
	1: from /Users/fernando/Documents/Platzi/ruby-platzi/snake/src/view/ruby2d.rb:1:in `<top (required)>'
/Users/fernando/Documents/Platzi/ruby-platzi/snake/src/view/ruby2d.rb:1:in `require': cannot load such file -- ruby2d (LoadError)

Los archivos son tal cual los del ejemplo pero se me esta escapando la tortuga y no se por donde!!! Me ayudan? 馃槂

Que paso con la edici贸n tambi茅n en la clase anterior hubo errores

Cuidado con las mayusculas, a mi me dio error con state.Grid.cols

module Views
    class Ruby2dView
        def initialize 
            @pixel_size = 50
        end
    
        def render(state)
            extend Ruby2D::DSL
            set(
                title: "Snake", 
                width: @pixel_size * state.Grid.cols, 
                height: @pixel_size * state.Grid.rows
            )
            show
        end
    end
end

C贸digo del archivo: app.rb

require_relative "view/ruby2d"
require_relative "model/state"

view = View:: Ruby2dView.new

initial_state = Model::initial_state
view.render(initial_state)

C贸digo del archivo: ruby2d.rb

require "ruby2d"
module View
  class Ruby2dView

    def initialize
      @pixel_size = 50
    end

    def render(state)
      extend Ruby2D::DSL
      set(
        title: "Snake",
        width: @pixel_size * state.grid.cols,
        height: @pixel_size * state.grid.rows)
      render_snake(state)
      render_food(state)
      show
    end

    private

    def render_food(state)
      extend Ruby2D::DSL
      food = state.food
      Square.new(
        x: food.col * @pixel_size,
        y: food.row * @pixel_size,
        size: @pixel_size,
        color: 'yellow'
                )
    end

    def render_snake(state)
      extend Ruby2D::DSL
      snake = state.snake
      snake.positions.each do |pos|
        Square.new(
        x: pos.col * @pixel_size,
        y: pos.row * @pixel_size,
        size: @pixel_size,
        color: 'green'
                )
      end

    end

  end
end

C贸digo del archivo: state.rb

module Model

  class Coord < Struct.new(:row,:col)
  end

  class Food < Coord
  end

  class Snake < Struct.new(:positions) # cabeza de serpiente y cola
  end

  class Grid < Struct.new(:rows,:cols)
  end

  class State < Struct.new(:snake,:food,:grid)
  end

  def self.initial_state
    Model::State.new(
      Model::Snake.new([
        Model::Coord.new(1, 1),
        Model::Coord.new(0, 1)
                      ]),
      Model::Food.new(4, 4),
      Model::Grid.new(8,12)
    )
  end

end

render_food y render_snake cuando se escriben dentro del metodo render qu茅 son exactamente?? algo aqui no entiendo y es como se conectan todas esas variables y cosas

sera que en State.rb tenemos las medidas en pixeles de todo.
en Ruby2d.rb tenemos los objetos: triangulos, cuadrados, canvas, etc鈥
y en app.rb los mandamos a mostrar?

hay problemas con la edici贸n

Yo tengo un problema ya que la pantalla donde se debe dibujar la serpiente se abre y se cierra sin que pueda ver como se van dibujando las figuras

Se repite el contenido en la clase, hay un error en la edici贸n de v铆deo.

El m茅todo initial_state est谩 declarado como m茅todo de un module 驴Igualmente se le llama m茅todo de instancia? 馃

Aqu铆 hay un recurso para entender sobre el concepto de DSL y como se aplica en aplicaciones de Ruby
https://www.infoq.com/news/2007/06/dsl-or-not/

Hay problemas de edici贸n en esta clase. Hay puntos en donde el tutor vuelve a repetir nuevamente las cosas.

No me ejecuta ninguna ventana, por mas que he hecho todo lo que en el video menciona. La verdad que mal, no se si sea por el error de edici贸n que todos menciona.