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:

4D
21H
3M
40S
Curso de Ruby

Curso de Ruby

Sim贸n Soriano

Sim贸n Soriano

Implementando el timer del movimiento

31/39
Recursos

Aportes 9

Preguntas 1

Ordenar por:

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

o inicia sesi贸n.

驴Alguien tiene este error?

#<Thread:0x000055ded44fc528 app.rb:21 run> terminated with exception (report_on_exception is true):
/usr/lib/ruby/gems/3.0.0/gems/ruby2d-0.10.0/lib/ruby2d/dsl.rb:30:in `render': wrong number of arguments (given 1, expected 0) (ArgumentError)
        from app.rb:29:in `block in init_timer'
        from app.rb:26:in `loop'
        from app.rb:26:in `init_timer'
        from app.rb:21:in `block in start'

Si les aparece un error que empieza con #<Thread:0x00007f8d48cd4358 src/app.rb:... es porque la nueva versi贸n de ruby2d ya tiene un m茅todo render, entonces a nuestro m茅todo render del view toca cambiarle el nombre. Y as铆 mismo llamarlo por ese nuevo nombre dentro de init_timer

me asombra como este curso tiene tantos pocos comentarios, ser谩 que ruby no es tan popular en la comunidad platzi?

excelente todo!

Lo que se necesita saber de la sintaxis se va conociendo a media de la practica, como llamar metodos, clases, valores, pero igual siento que algo se me escapa

De verdad creo que este deber铆a ser el 煤ltimo de los desaf铆os de un curso. Faltan muchos pasos intermedios.

Que es thread?

Este curso deja mucho que desear, el contenido tiene potencial, pero la metodolog铆a de ense帽anza del profesor no es para nada la mas optima, demasiados conceptos que no explica, siquiera los nombra y se enreda intentando explicar el c贸digo, ademas de lo pesado(lento y sin entusiasmo) en su forma de ense帽ar.

Este curso por lo que veo tiene mas de 4 a帽os de publicado, seria muy bueno hacer un refrescamiento

El c贸digo de app.rb

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

class App
    def initialize
        @state = Model::initial_state
    end

    def start
        view = View::Ruby2dView.new
        Thread.new { init_timer(view) }
        view.start(@state)
    end

    def init_timer(view)
        loop do
            @state = Actions::move_snake(@state)
            view.renderGame(@state)  
            sleep 0.5
        end
    end
end

app = App.new
app.start

El c贸digo de ruby2d.rb

  require "ruby2d"

module View
    class Ruby2dView 

        def initialize
            @pixel_size = 50
        end

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

        def renderGame(state)
            render_food(state)
            render_snake(state)
        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: 'orange',
            )
        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: 'blue',
                )
            end
        end
    end
end