Gracias Gracias:  0
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 23

Tema: ayuda con pygame

  1. #1
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    ayuda con pygame

    ola estoy aprendiendo pygame y no consigo entender como puedo ejecutar el código. alguien me podría ayudar?
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  2. #2
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    decirme lo que debo de poner en el símbolo del sistema\comand prompt si tengo un ejemplo llamado chimp en una carpeta llamada examples en el escritorio de un usuario llamado capricornio (pues ponga lo que ponga me da error)
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  3. #3
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    ya soy capaz de ejecutar mis programas hechos en pygame, gracias de todas formas. estoy haciendo un sencillo script, pero me sale un problema que logro comprender. el script es el siguiente:
    import pygame
    from pygame.locals import *

    screen_mode = (640, 480)
    color_blue = (100, 149, 237)
    posx=0
    posy=0

    class Game:
    def __init__(self):

    pygame.init()
    self.screen = pygame.display.set_mode(screen_mode)
    pygame.display.set_caption("MY FIRST 2D GAME IN PYGAME!")
    self.quit = False
    self.dinosaurio = pygame.image.load("dinosaurio.png")

    def update(self):

    keys = pygame.key.get_pressed()

    if keys[K_LEFT]:
    posx -= 1
    if keys[K_RIGHT]:
    posx += 1
    if keys[K_DOWN]:
    posy -= 1
    if keys[K_UP]:
    posy += 1
    return

    def draw(self):

    self.screen.fill(color_blue)
    self.screen.blit(self.dinosaurio, (posx, posy))
    pygame.display.flip()

    def mainLoop(self):

    while not self.quit:

    for event in pygame.event.get():

    if event.type == QUIT:
    self.quit = True

    self.update()
    self.draw()

    if __name__ == "__main__":

    game = Game()
    game.mainLoop()

    y el error que me sale es este:

    Tracebak (most recent call last):
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\pygame_pruebas.py", line 54, in <module>
    game.mainLoop()
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\pygame_pruebas.py", line 48, in mainLoop
    self.update()
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\pygame_pruebas.py", line 25, in update
    posx += 1
    UnboundLocalError: local variable 'posx' referenced before assignment

    alguien saba quer es lo que tengo que cambiar?
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  4. #4
    BlenderAdicto Avatar de Caronte
    Fecha de ingreso
    Dec 2004
    Ubicación
    Valencia-España
    Mensajes
    14,691

    Respuesta: ayuda con pygame

    Cita Iniciado por Sadyk Ver mensaje
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\pygame_pruebas.py", line 25, in update
    posx += 1
    UnboundLocalError: local variable 'posx' referenced before assignment

    alguien saba quer es lo que tengo que cambiar?
    Yo de Python no controlo mucho, pero en el último error te esta diciendo que pretendes usar el valor de posx sin haberle dado ninguno y no porque no se lo hayas dado, que ya veo que sí al inicio, sino porque la trata como una variable local, así que o la inicializas dentro o la haces global.
    No me preguntes como
    "Algún día todo será digital". Caronte.
    Mi web: NicoDigital.com

  5. #5
    Tresmiltornillero Avatar de Leander
    Fecha de ingreso
    Oct 2004
    Ubicación
    Zaragoza (ESPAÑA)
    Mensajes
    10,969

    Respuesta: ayuda con pygame

    Prueba a separar el posx=0 por espacios como: posx = 0

    Quizás sea una chorrada, pero cuando llevaba el c chorras como estas me hizo malas jugadas.

    Yo de python ni chorra.

  6. #6
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    gracias por sus comentarios, ya solucione el problema de ESE código y he conseguido hacer que un objeto se mueva continuamente hacia abajo, y que tu lo puedas mover de derecha a izquierda. les dejo el código completo:
    import pygame
    from pygame.locals import *

    screen_mode = (420, 1500)
    color_blue = (100, 149, 237)

    class Game:
    def __init__(self):

    pygame.init()
    self.screen = pygame.display.set_mode(screen_mode)
    pygame.display.set_caption("MY FIRST 2D GAME IN PYGAME!")
    self.quit = False
    self.dinosaurio = pygame.image.load("dinosaurio.png")
    self.posx=0
    self.posy=0
    self.key = pygame.key.get_pressed()

    def update(self):
    self.key = pygame.key.get_pressed()
    self.posy += 0.5
    if self.key[K_LEFT]:self.posx-=2
    if self.key[K_RIGHT]:self.posx+=2

    def draw(self):

    self.screen.fill(color_blue)
    self.screen.blit(self.dinosaurio, (self.posx, self.posy))
    pygame.display.flip()

    def mainLoop(self):

    while not self.quit:

    for event in pygame.event.get():

    if event.type == QUIT or self.key[K_ESCAPE]:
    self.quit = True

    self.update()
    self.draw()

    if __name__ == "__main__":

    game = Game()
    game.mainLoop()

    es uno de los códigos de ejemplo más básicos, si alguien quiere que se los explique se lo explicare con mucho gusto, ahora estoy realizando un código un poco as complejo y (al ser mi segundo código en pygame) me han salido tropecientos fallos que he ido solucionando uno a uno pero he llegado a un punto muerto y no consigo solucionar un error del codigo. les dejo aquí el código:
    import pygame
    from pygame.locals import *

    class prota:
    def __init__(self):
    self.x = 210
    self.y = 1390
    self.nave = pygame.image.load("nave.png")
    def update(self):
    key = pygame.key.get_pressed()
    if key[K_RIGHT]:self.x += 1
    if key[K_LEFT]:self.x -= 1
    self.y -= 0.5
    def draw(self):
    W.screen.blit(self.nave (self.x, self.y))
    class obstacle(pygame.sprite.Sprite):
    def __init__(self, x, y):
    self.state = 1
    self.px = x
    self.py = y
    self.obstacle = pygame.image.load("obstaculos.png")
    def update(self):
    if self.px >= 420:self.state = 2
    elif self.px <= 0:self.state = 1
    if self.state == 1:
    self.px += 2
    elif self.state == 2:
    self.px -= 2

    def draw(self):
    W.screen.blit(self.obstacle(self.px, self.py))

    class world:
    def __init__(self):
    pygame.init()
    self.blak = (100, 200, 100)
    self.screen_size = (420, 1500)
    self.screen = pygame.display.set_mode(self.screen_size)
    pygame.display.set_caption("GAME NAVE")
    self.fondo = pygame.image.load("fondo.png")
    self.quit = False
    self.clok = pygame.time.Clock()
    self.nave = prota()
    self.obst1 = obstacle(0, 215)
    self.obst2 = obstacle(105, 430)
    self.obst3 = obstacle(210, 645)
    self.obst4 = obstacle(315, 860)
    self.obst5 = obstacle(0, 1075)
    def update(self):
    self.nave.update()
    self.obst1.update()
    self.obst2.update()
    self.obst3.update()
    self.obst4.update()
    self.obst5.update()
    def draw(self):
    self.screen.fill(self.black)
    self.nave.draw()
    self.obst1.draw()
    self.obst2.draw()
    self.obst3.draw()
    self.obst4.draw()
    self.obst5.draw()
    pygame.display.flip()
    def game(self):
    while not self.quit:
    for event in pygame.event.get():
    if event.type == QUIT:
    self.quit = True
    self.update()
    self.draw()
    self.clock.tick(60)
    if __name__ == "__main__":
    W = world()
    W.game()

    y aquí les dejo el error:

    Tracebak (most recent call last):
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\game nave.py", line 76, in <module>
    W.game()
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\game nave.py", line 72, in game
    self.draw()
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\game nave.py", line 59, in draw
    self.nave.draw()
    File "C:\Documents and Settings\Capricornio\Escritorio\trabajos\pygame\pr acticas\game nave.py", line 16, in draw
    W.screen.blit(self.nave (self.x, self.y))
    TypeError: 'pygame.Surface' object is not callable

    en el programa de compilación que incorpora python, cuando tienes un error te especifica su situación dentro de la jerarquia de lectura del código, es decir, la línea del error es W.screen.blit(self.nave (self.x, self.y)).

    si alguien me podría echar una mano le estaría muy agradecido
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  7. #7
    Vampiro Giovanni Avatar de Pepius
    Fecha de ingreso
    Feb 2004
    Ubicación
    Guadassuar, Valencia
    Mensajes
    4,998

    Respuesta: ayuda con pygame

    Has pasado un solo argumento a blit y a la vez estas intentando pasar argumentos a una a estructura de datos del tipo pygame.Surface. Resumiendo, la línea correcta, si no me equivoco, debe ser esta:

    W.screen.blit(self.nave,(self.x,self.y))

    ya que en realidad lo que recibe la función blit es una superficie y un vector con las coordenadas x e y donde la vas a copiar.

  8. #8
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    pero no es la misma línea de codigo?
    es decir, no encuantro la diferencia entre escribir:
    (la que dices que esta bien)W.screen.blit(self.nave,(self.x,self.y))
    (la que esta mal)W.screen.blit(self.nave (self.x, self.y))
    creo que te has equivocado porque has puesto la misma línea de código XD
    de todas formas muchas gracias.
    Última edición por Sadyk; 11-08-2009 a las 10:51
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  9. #9
    BlenderAdicto Avatar de Caronte
    Fecha de ingreso
    Dec 2004
    Ubicación
    Valencia-España
    Mensajes
    14,691

    Respuesta: ayuda con pygame

    ¿Has leído lo que ha puesto?
    En fin, que te falta una coma (,)
    "Algún día todo será digital". Caronte.
    Mi web: NicoDigital.com

  10. #10
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    Es cierto! muchas gracias XD
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  11. #11
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    les dejo el programa semiterminado, cambiaré la imagen de fondo y quizás más adelante la de la nave y los obstaculos, más tarde subire un zip para que lo podáis jugar, bueno, lo subire cuando halla sistema de colisiones. aquí subo lo que llevo de código:

    import pygame
    from pygame.locals import *

    class prota:
    def __init__(self):
    self.x = 210
    self.y = 750
    self.nave = pygame.image.load("nave.png")
    def update(self):
    key = pygame.key.get_pressed()
    if key[K_RIGHT]:self.x += 4
    if key[K_LEFT]:self.x -= 4
    self.y -= 2
    def draw(self):
    W.screen.blit(self.nave,(self.x,self.y))
    class obstacle(pygame.sprite.Sprite):
    def __init__(self, x, y):
    self.state = 1
    self.px = x
    self.py = y
    self.obstacle = pygame.image.load("obstaculos.png")
    def update(self, velocidad):
    if self.px >= 420:self.state = 2
    elif self.px <= 0:self.state = 1
    if self.state == 1:
    self.px += velocidad
    elif self.state == 2:
    self.px -= velocidad

    def draw(self):
    W.screen.blit(self.obstacle,(self.px, self.py))

    class world:
    def __init__(self):
    pygame.init()
    self.blak = (100, 200, 100)
    self.screen_size = (420, 800)
    self.screen = pygame.display.set_mode(self.screen_size)
    pygame.display.set_caption("GAME NAVE")
    self.fondo = pygame.image.load("fondo.png")
    self.quit = False
    self.clok = pygame.time.Clock()
    self.nave = prota()
    self.obst1 = obstacle(0, 140)
    self.obst2 = obstacle(105, 280)
    self.obst3 = obstacle(210, 420)
    self.obst4 = obstacle(315, 560)
    self.obst5 = obstacle(0, 680)
    self.obst6 = obstacle(300, 140)
    self.obst7 = obstacle(405, 280)
    self.obst8 = obstacle(10, 420)
    self.obst9 = obstacle(15, 560)
    self.obst0 = obstacle(300, 680)
    def update(self):
    self.nave.update()
    self.obst1.update(9)
    self.obst2.update(
    self.obst3.update(7)
    self.obst4.update(6)
    self.obst5.update(5)
    self.obst6.update(7)
    self.obst7.update(7)
    self.obst8.update(7)
    self.obst9.update(7)
    self.obst0.update(7)
    def draw(self):
    self.screen.fill(self.black)
    self.screen.blit(self.fondo, (0, 0))
    self.nave.draw()
    self.obst1.draw()
    self.obst2.draw()
    self.obst3.draw()
    self.obst4.draw()
    self.obst5.draw()
    self.nave.draw()
    self.obst6.draw()
    self.obst7.draw()
    self.obst8.draw()
    self.obst9.draw()
    self.obst0.draw()
    pygame.display.flip()
    def game(self):
    while not self.quit:
    for event in pygame.event.get():
    if event.type == QUIT:
    self.quit = True
    self.update()
    self.draw()
    self.clock.tick(60)
    if __name__ == "__main__":
    W = world()
    W.game()

    eres una nave (o un triángulo raro) que avanza continuamente y que solo puedes puedes mover de derecha a izquierda, y hay cinco filas de dos obstaculos cada una que se mueven a distinta velocidad y que debes esquivar. por ahora pasas, pero si chocas no ocurre nada, y tampoco si lo pasas todo sin chocarte.
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  12. #12
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    alguen tiene constancia de una función que facilite la tarea de las colisiones?
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  13. #13
    BlenderAdicto Avatar de Caronte
    Fecha de ingreso
    Dec 2004
    Ubicación
    Valencia-España
    Mensajes
    14,691

    Respuesta: ayuda con pygame

    No, si al final voy a saber yo más que tú solo por orientarte

    Simplemente usando Google encuentras la documentación de los sprites y sus colisiones
    Donde aparece la palabra collide, tienes para entretenerte con las colisiones.
    "Algún día todo será digital". Caronte.
    Mi web: NicoDigital.com

  14. #14
    Senior Member Avatar de Sadyk
    Fecha de ingreso
    Jun 2008
    Ubicación
    madrid
    Mensajes
    517

    Respuesta: ayuda con pygame

    muchas gracias caronte XD
    y me deberías estar agradecido, de aquí vas a salir haciendo un pedazo juego en pygame =)
    DICEN que tras la muerte está la vida eterna. Yo prefiero ensañarme con el cuerpo.

  15. #15
    BlenderAdicto Avatar de Caronte
    Fecha de ingreso
    Dec 2004
    Ubicación
    Valencia-España
    Mensajes
    14,691

    Respuesta: ayuda con pygame

    Je, Je... pequeño saltamontes, yo puedo hacer un juegazo cuando quiera y sin salir de Blender y el que no lo crea, que me rete si tiene webs
    "Algún día todo será digital". Caronte.
    Mi web: NicoDigital.com

Página 1 de 2 12 ÚltimoÚltimo

Temas similares

  1. Ayuda!! Apunto de pagar un curso y necesito vuestra ayuda.
    Por ruru en el foro Educacion 3D, escuelas y universidades
    Respuestas: 8
    Último mensaje: 11-05-2016, 23:49
  2. Hola busco ayuda mucha ayuda
    Por 3CHAPNLOPVD en el foro Discusiones generales
    Respuestas: 5
    Último mensaje: 14-09-2008, 17:22
  3. Pygame de Python
    Por Atman en el foro Videojuegos
    Respuestas: 4
    Último mensaje: 03-07-2008, 21:41
  4. Respuestas: 6
    Último mensaje: 04-05-2008, 22:39
  5. ayuda breve ayuda con maya
    Por An-Hell en el foro Modelado
    Respuestas: 18
    Último mensaje: 10-03-2008, 08:57

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •