24 respuestas

  1. Miguel
    18/02/2010

    Primero de todo felicitarte por el gran trabajo. Yo ya soy un «veterano» de la informática y creo recordar que en los tiempos del ZXspectrum, cuando se trabajaba con Sprites, en lugar de dibujar el fondo (sería muy lento) y a continuación el «personaje», lo que se hacía era:
    1- se guardaba la zona del fondo donde se va a «machacar» encima el personaje. Por ejemplo en la variable «temp».
    2- se colocaba el personaje. Si este se movía:
    3- se colocaba «temp» en su lugar, borrando el personaje y dejando el fondo como estaba. Y se volvía a guardar en «temp» la siguiente zona donde se iba a colocar el personaje.
    4- se colocaba el personaje y así repetidamente.
    ¿Se puede hacer esto mismo en pygame o sería más lento?

  2. admin
    18/02/2010

    Miguel, en esencia ahora es lo mismo, tu tienes el fondo guardado en un array y metes el personaje encima en una posición, luego si mueves el personaje, vuelves a recolocar el fondo y pintas al personaje encima.

    De hecho estoy haciendo ahora un motor de un rpg en pygame con ese estilo, pronto publicaré algo del tema en el blog.

    • Habemus Linux
      25/03/2019

      esto si que me interesa ! si puedo ayudarte en algo aca estoy !

  3. Kike Alonso
    07/05/2010

    Muy agradecido por tu excelente tutorial. He aprendido en horas lo que no pude en días. Gracias por tu esfuerzo.
    Kike

  4. animelafuerza
    21/07/2010

    Heres grande !! xD
    bueno dejando las bromas se agradece mucho el esfuerzo, la verdad tengo unos pocos dias que empece a programar con python (pyton para los cuates xD) y ya medio lo voy entendiendo.

    por sierto, yo quiero trabajar tambien en un RPG pero tactico.
    Saludos

  5. animelafuerza
    22/07/2010

    PD: olvide mecionar, ya tengo unos añitos programando con C#, visual Net, Gambas y quiero aprender C o C++ para luego ahi hacer mis Engines

    Saludos

  6. Lucas
    12/09/2010

    Exelente trabajo el de tu blog, dejame decirte que te sigo a diario, lamentablemente tuve un problema con esta parte del tutorial…cuando cargo el pygame ( que esta exactamente igual al que dejast en la pagina ) me salta el error invalid rect assigment en la linea self.rect.centery += self.speed[1] * time…supongo que es por se paso del limite ya que cuando cargo la pelota se va para abajo pero nose como corregirlo..el if de invertir la velocidad ta ahi

  7. Lucas
    12/09/2010

    no me hagas caso, de boludo me deje una linea de codigo :P

  8. Andrés
    13/09/2010

    Está muy interesante el tutorial, pero encontré que establecer la velocidad en X y en Y no es lo más apropiado, yo prefiero ajustar la velocidad solo en X y calcular Y con la ecuación de la recta:

    y = mx + n
    pero como la posición inicial de y es dada, hay que despejar n cada vez que se altera un valor ya sea m o la velocidad hay que recalcular n:
    n = y – mx

    el algoritmo me quedó así:

    class Bola(pygame.sprite.Sprite):
            def __init__(self):
                    pygame.sprite.Sprite.__init__(self)
                    self.image = load_image("images/ball.png", True)
                    self.rect = self.image.get_rect()
                    self.rect.centerx = WIDTH / 2
                    self.rect.centery = HEIGHT / 2
                    self.speed = 0.5
                    self.m = 1
                    self.n = self.rect.centery - self.rect.centerx * self.m
                    print self.n
    
            def actualizar(self, time):
                    self.rect.centerx += self.speed * time
                    self.rect.centery = self.rect.centerx * self.m + self.n
                    if self.rect.left <= 0 or self.rect.right >= WIDTH:
                            self.speed = -self.speed
                            self.m = -self.m
                            self.n = self.rect.centery - self.rect.centerx * self.m
                            self.rect.centerx += self.speed * time
                    if self.rect.top <= 0 or self.rect.bottom >= HEIGHT:
                            self.m = -self.m
                            self.n = self.rect.centery - self.rect.centerx * self.m
                            self.rect.centery = self.rect.centerx * self.m + 4
  9. adrigm
    13/09/2010

    Andrés y mejor que eso es aplicarle física mas realista con aceleración, razamientos, puntos de aplicación de la fuerza, que hiciera que pudiera dársele efecto, etc.

    Pero, el tutorial trata de enseñar a aprender a usar la biblioteca Pygame y no tenía sentido.

    Tengo pensado escribir algunos artículos de física aplicada a videojuegos.

    De todas maneras, buen trabajo siempre es bueno que la gente tenga iniciativa y haga sus propias modificaciones.

  10. Andrés
    13/09/2010

    Claro a nivel básico mi idea es que con conocimientos básicos de gráfica cartesiana puedas hacer cosas como modificar el ángulo de la trayectoria sabiendo que m es igual a la tangente de dicho ángulo en grados.

    Mi propósito es crear un juego estilo Arkanoid que solo modifica el ángulo de la trayectoria de la bola dependiendo del punto en el que se intercepta con la pala.

    Con un poco más de conocimeinto sobre el sistema de Descartes puedes conocer distintas funciones y gráficas, como la del seno, que haría que la bolita ande como en zig-zag, la de la circunferencia, la elipse o la parábola, con lo que puedes definir trayectorias interesantes como para usar en videojuegos estilo Mario.

    Lamentablemente me decanté por el área humanista, así que mis conocimientos más avanzados en la materia terminan en la trigonometría, que es lo que pasan en el colegio.

    Te felicito por los tutoriales.

  11. Aradenatorix
    28/09/2010

    Hola:

    Muy bueno el tutorial, de hecho ya logré hacer un pong, pero si quisiera saber más de como aplicarle física a los videojuegos. Sin embargo algo que me intriga de momento, es como en el modo de juego darle algo de variedad.

    Estoy en un proyecto en el que estamos, con ayuda de pygames desde luego haciendo videojuegos que ayuden a rehabilitar a pacientes de al tercera edad para lo que hay que desarrollar opciones de juego que permitan al paciente hacer el juego asequible a sus capacidades motrices y habilidades propias sin insultarlo.

    Concretamente lo que necesito es saber como después de x puntos o x errores alargar (aumentar en la longitud) la paleta del pong para facilitarle el juego a la persona, ¿no se si me di a entender? Entiendo que eso tiene que ser dentro de las propiedades asignadas a la clase paleta o raqueta, pero exactamente no ´se como hacerlo.

    Saludos y felicidades, buen tutorial.

  12. adrigm
    28/09/2010

    Aradenatorix, no es muy difícil de lograr, simplemente crea una pala mas grande y recarga el gráfico y obtén de nuevo el rect y listo.

  13. Aradenatorix
    05/10/2010

    Mmm si pero bueno apenas estoy empezando en pygame así que no estoy muy seguro de como lograr eso, yo tenia mas bien la idea de poder usar algún atributo de tamaño en la clase pala para ello y que de acuerdo a la puntuación pudiera variar el tamaño del elemento. Por eso te pregunto, saludos.

  14. Raziel
    22/03/2011

    Adrian, tengo la siguiente pregunta: en las líneas donde el objeto colisiona con los bordes, como en:

    self.speed[0] = -self.speed[0]

    no es mejor hacerlo:

    self.speed[0] *= -1

    o el que se haga como en el código tiene algún fin?

  15. adrigm
    22/03/2011

    De las dos formas es válida, la cosa es cambiar la dirección de la velocidad, tu en realidad lo que estas haciendo es:

    self.speed[0] = self.speed[0] * -1
    

    y yo lo que estoy haciendo al fin y al cabo es:

    self.speed[0] = -1 * (self.speed[0])
    

    Así que al final es lo mismo, da igual como lo escribas.

  16. Carlos
    03/07/2011

    Cuando lo ejecuto me anda lento =S es normal??

  17. Carlos
    03/07/2011

    Estoy que uso eclipse como IDE y estoy q trabajo en una core i3 con 4 de ram

  18. Juan Quiroga
    21/10/2011

    ya esta entendi!!!… Disculpa por la pregunta tan estupida, lo que pasa que habia cambiado las variables WIDTH como «alto» en mi codigo, y no me encuadraba la logica, eso me hacia interpretar que cuando el movimiento de derecha izquiera era mayor al alto cambiava el signo, pero era culpa mia jaja… solo fue un error, ya la cambie a «ancho» y la verdad entendi bien… jaja locuras mias y cosas que suceden… saludos muy bueno seguiré por los otros

  19. Piolin
    07/07/2012

    mi consulta es .,., si es posible agregar lineas de codigo.,.,., para lograr el movimiento de mas de una pelotita que esten chokando con los bordes de la ventana.,.,¿cuales serian los cambios del programa?????.,.,., gracias Salud

  20. KazE
    29/11/2013

    Genial los tutoriales.

    En la parte de Framerate dice «infotmacion»

    Saludos

  21. Gabriela Sofía
    24/08/2015

    Y si necesito hacer que un juego se detenga porque el jugador ha perdido, y en su lugar mostrar una tabla de score…. ¿cómo puedo ayudarme?

  22. manuel
    07/09/2016

    como hago para desplazarme de una plataforma a otra como mario que uno avanza a la derecha y se desplaza la pantalla con el personaje

Responder

 

 

 

Volver arriba
móvil escritorio