Curso de Pygame, en español, online y gratuito

Estoy vago así que os pego el texto que he puesto por mi blog [360º] .

Vía el comentario de Damian en el articulo de la Sandía Pygame es divertido jugar con el que nos ofrecía información de un curso online y gratuito de PyGame (link a la wikipedia).

Bueno aquí tenéis el link que informa del curso CURSO DE PYGAME, comienza el 10 de marzo en el 2010.

Y os pego las normas que me han llegado por email…es que me apuntado, siempre he querido aprender bien PyGame:


Hola

Bueno despues de tanta espera aque esta la respuesta a la aceptacion al curso solo tienes que cumplir algunos requisitos.

Requisitos:

- Tener Ganas de Aprender
- Conocimientos en Fundamentos de Programación si no puedes ingresara a http://aprenderpython.com/smf/index.php?board=38.0
- Conocer Python pueden ir al curso de Introducción a la sintaxis Python http://aprenderpython.com/smf/index.php?board=22.0
puedes descargar nuestra ISO de Python desde http://www.aprenderpython.com/python/?p=823
- Tu apoyo es importante, puedes apoyarnos ********* ** ***** ** ** publicidad solo un *****.
- Todo va ser a través de la plataforma Moodle Enlace http://www.aprenderpython.com/aula/ y registrarse.
- Quien se retire se agregara a una lista donde no tendrá mas oportunidad de registrarse a ningún curso ni evento de este tipo.
- Realizar todas las actividades mencionadas en el curso y consultar el material de apoyo.
- Invitar a mas personas que estén interesadas en realizar el curso de Pygame.
- Las fechas de inicio del curso se estarán informando en la plataforma Moodle.
- Leer el reglamento en la Plataforma Moodle.

Bienvenidos a Aprender Python y bienvenidos al Curso.

Saludos Daniel Bermudez


Yo me apuntado a ver que tal y si mejoro el tema de python/pygame.
Pues muchas gracias, se agradece!!!
Ya me he apuntado :)
De nada, de nada, bueno ahora la pregunta del millón.

¿Que compis de curso somos de EOL?
Pff yo ahora no tengo tiempo, pero, el contenido del curso luego supongo que lo harán público no?
Pos de momento los 2 PDF que hay que hojeado, no he visto la típica reseña a la licencia en plan "Creative Commons bla...bla.." . Bueno se lo preguntaremos a ver.

Edito: Aunque por lo de los tiempos, de momento lo que he visto yo no pide una "asistencia" diaria al aula, aunque por yo tampoco tengo mucho tiempo por temas de curro y le preguntado vía email al administrador a ver cual va ser el tiempo que se considera como para ponerte "una falta y llamar a tus padres". A ver si me contesta y os comento.
Yo estoy apuntado , he ojeado un poco los pdfs y no estan mal , pero joder con las faltas de ortografía xD.
Dever , fabor ... etc xD.
Si a mi también me sangran los ojos con esas faltas de HORTOGRAFIA:
Imagen

Y eso que yo también meto buenas patadas al diccionario de la real academia de la lengua española.
yo también me he apuntado! muchas gracias por informar sobre lo del curso, lo que no se es si tendre mucho tiempo para entrar, sobre todo estas semanas que estoy de examenes. voy a echarle una mirada ahora antes de cenar a ver que tal
yo creo que tambien me voy a apuntar muchas gracias por informar de este curso

Saludos
De nada, de nada [+risas] . Con que devolváis el favor en un futuro cercano con un buen juego libre que vicie mucho y que sea muy chulo todos contentos ;) .
MDman escribió:De nada, de nada [+risas] . Con que devolváis el favor en un futuro cercano con un buen juego libre que vicie mucho y que sea muy chulo todos contentos ;) .


Es esté el momento de crear EOL: The game? :-|

Yo también me he apuntado, a ver como va.
Gracias MDman ;) .
Achiss escribió:Es esté el momento de crear EOL: The game? :-|


Uhmm creo que hace años se intento por EOL, había gente que tenia de firma el logo del juego que era unas letras rosas clarito y no se si se llamaba "Buble algo", recordáis el proyecto.
Yo también me he apuntado. A ver que tal sale!!
MDman escribió:
Achiss escribió:Es esté el momento de crear EOL: The game? :-|


Uhmm creo que hace años se intento por EOL, había gente que tenia de firma el logo del juego que era unas letras rosas clarito y no se si se llamaba "Buble algo", recordáis el proyecto.


Yo me acuerdo, y quedó abandonado...

hilo_proyecto-bombergum-by-pseol-team-juego-gpl-2_375930
Le habéis echado un vistazo a las practicas?

Ando liado con la segunda y no se como hacerla la verdad, hay que crear una ventana en la que el titulo se mueva de derecha a izquierda, pero no se como mover una cadena de texto, con rect no se puede, y si renderizo el texto, no se puede mostrar como título (TypeError: argument 1 must be string, not pygame.Surface). Qué hago mal, o como se debe hacer o qué?

Lo mismo esto era mejor que lo preguntara en el foro del curso, pero bueno :p .
K. Ichigo escribió:Yo me acuerdo, y quedó abandonado...

hilo_proyecto-bombergum-by-pseol-team-juego-gpl-2_375930


Si era ese...pero ¿Llego a ver algo de código o sprites?

Achiss escribió:Le habéis echado un vistazo a las practicas?

Ando liado con la segunda y no se como hacerla la verdad, hay que crear una ventana en la que el titulo se mueva de derecha a izquierda, pero no se como mover una cadena de texto, con rect no se puede, y si renderizo el texto, no se puede mostrar como título (TypeError: argument 1 must be string, not pygame.Surface). Qué hago mal, o como se debe hacer o qué?

Lo mismo esto era mejor que lo preguntara en el foro del curso, pero bueno :p .


Uhmm no se hasta que punto se considera copiar...a ver si me expulsan del curso [+risas] pero te doy una pista, es el titulo de la ventana y un titulo es una cadena de texto....
El problema es que no se como mover una cadena de texto :-? .

A no ser que lo haga haciendo una cutrada del estilo de esta: [carcajad]

  def titulo(title):
   
    pygame.display.set_caption(title)
    pygame.display.get_caption()
    return title
   

def main():
    pygame.init()
    screen = pygame.display.set_mode(RESOLUCION)
    pelota = pygame.image.load('pelota.png')
    espacios=80
   
    loop = True
    while loop:
       
       
        espacio = (" " * espacios)
       
        title = (espacio + "Ej2")
        titulo(title)
        espacios -= 1


Soy un novatazo, pero bueno, espero que con un poco de esfuerzo no se me haga demasiado difícil esto, seguiré intentándolo y si no pues ya pediré que me echen una mano por el foro :p .

PD: MDman, parece que no soy el único salmantino en el curso :p
Pues tienes varias opciones para mover la cadena de texto pero piensa como en la vida real, tengo un texto "ABCD" que quiero que se mueva pues le empujo metiendole caracteres por la derecha "ABCD " , "ABCD ", "ABCD " y llegado un momento mueves el que tienes delante atras.

Es como el "Algorith march" ...lo siento no encontrado el original http://www.youtube.com/watch?v=WjMd2Vabcv8.

¿Por cierto de Salamanca?
MDman escribió:Pues tienes varias opciones para mover la cadena de texto pero piensa como en la vida real, tengo un texto "ABCD" que quiero que se mueva pues le empujo metiendole caracteres por la derecha "ABCD " , "ABCD ", "ABCD " y llegado un momento mueves el que tienes delante atras.

Es como el "Algorith march" ...lo siento no encontrado el original http://www.youtube.com/watch?v=WjMd2Vabcv8.

¿Por cierto de Salamanca?


Así lo hice, bueno, borrando espacios en lugar de ponerlos, pero me parecía una forma un poco cutre [carcajad] .
Vi que eras de aquí en el curso, yo también :p .

Edito: http://www.aprenderpython.com/aula/mod/ ... hp?d=7#p23 , voy a hacerlo así, que es un código más corto y sencillo

Un saludo y gracias :p .
Si cierto, parecida es la que hice anoche.

Pero por cierto, ¿El tema de publicar públicamente las practicas en el foro? Esto va tener mucha chicha. Porque me veo que en un par de semanas va a haber piques a ver quien es el primero en resolverlas [qmparto] .

Saludos.
MDman escribió:Si cierto, parecida es la que hice anoche.

Pero por cierto, ¿El tema de publicar públicamente las practicas en el foro? Esto va tener mucha chicha. Porque me veo que en un par de semanas va a haber piques a ver quien es el primero en resolverlas [qmparto] .

Saludos.


Hombre yo de pique nada ya que con el trabajo tampoco puedo ponerme al 100%. Yo lo tengo claro, iré a mi ritmo a intentar aprender al máximo! A ver si mañana me pongo a hacer alguna cosilla que aun no he echo nada y el profe me regañará :P

Por cierto hay algun sitio donde ponga fechas limite para la entrega de las prácticas?

Saludos!!
BaRNi_ escribió:
MDman escribió:Si cierto, parecida es la que hice anoche.

Pero por cierto, ¿El tema de publicar públicamente las practicas en el foro? Esto va tener mucha chicha. Porque me veo que en un par de semanas va a haber piques a ver quien es el primero en resolverlas [qmparto] .

Saludos.


Hombre yo de pique nada ya que con el trabajo tampoco puedo ponerme al 100%. Yo lo tengo claro, iré a mi ritmo a intentar aprender al máximo! A ver si mañana me pongo a hacer alguna cosilla que aun no he echo nada y el profe me regañará :P

Por cierto hay algun sitio donde ponga fechas limite para la entrega de las prácticas?

Saludos!!


Me parece que estas no hay que entregarlas, solo subirlas al foro para compartirlas y si alguien tiene alguna duda ir mirando y tal, pero a ver que dice el jefe.

Y... bueno, yo tengo experiencia 0 en programación, aunque conozca un poquillo los lenguajes, así que poco me voy a picar [+risas] .

Aquí tengo la marquesina, voy a ver si lo hago como me comentaban en el curso, aunque esta funcionar funciona [carcajad] :
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#Practico1 : Ejercicio 2 por Carlos Sánchez
#Ventana en la que el titulo desplace  de derecha a izquierda.


import pygame
from pygame.locals import *
import time


#Datos de Pantalla
ANCHO = 400
ALTO = 400
RESOLUCION = (ANCHO, ALTO)


def marquesina(title):
   
    #función marquesina, define el título de la ventana con el texto title
    pygame.display.set_caption(title)
   

def main():
   
    #inicializo pygame
    pygame.init()
   
    #defino el tamaño de la ventana y la variable que hara referencia
    screen = pygame.display.set_mode(RESOLUCION)

    #rellena el fondo de la ventana de color
    screen.fill((0, 0, 0))
   
    #número de espacios que hay antes del texto
    n_espacios=70

    loop = True
    while loop:
       
        #el resultado de espacio es una cadena de texto con
        #el nº de espacios determinado en n_espacios
        espacio = (" " * n_espacios)
       
        #title es una cadena de texto con los espacios y el título
        titulo = (espacio + "Ej2")
       
        #llamamos a la función marquesina con el argumento titulo
        marquesina(titulo)
       
        #restamos uno al nº de espacios
        n_espacios -= 1
       
        #actualizamos la pantalla
        pygame.display.flip()
       
        #actualizo la pantalla
        time.sleep(0.1)
       
        #comprueba si el texto ha llegado a la izquierda:
        #si es así, lo devuelve a la derecha
        if n_espacios == 0:
            n_espacios = 70
       
        #control de eventos
        for evento in pygame.event.get():
            if evento.type == pygame.QUIT:
                loop =False
                return


if __name__ == '__main__':
    main()
jsierra escribió:no hay manera!


De ¿Que no hay manera? :-? .
Pues nada, yo sigo igual que vosotros, esperando para ver donde finalmente se deben subir o enviar los ejercicios. Sobre el tema de la marquesina aquí os pongo como lo he resuelto yo por si queréis echarle un vistazo:

    #coloque aqui sus variables
    texto = 'Este titulo se desplaza'
    pygame.display.set_caption(texto)
   
    loop = True
    while loop:
        # escriba aca el codigo del juego
        if texto.__len__() > 49:
            texto = texto[1:] + texto[0]
        else:
            texto += ' '
        pygame.display.set_caption(texto)
        time.sleep(0.1)
       
        #actualizo la pantalla
        pygame.display.flip()
Ya ha comentado el profe ;) en el foro donde se sube los deberes XD . Es en lo del evento.
Pues yo ya los tengo listos :p .

Me ha costado un poquillo el último, que como ya decía no tengo nada de experiencia, pero lo he conseguido, a ver que os parece le código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import pygame
from pygame.locals import *
import time
import random
import colores

#Datos de Pantalla
ANCHO = 400
ALTO = 400
RESOLUCION = (ANCHO, ALTO)



def colornombre():
#Da el nombre de un color al azar del archivo colores.py

nombrecolor = random.choice(colores.listacolores.keys() )

return nombrecolor

def colorrgba(nombrecolor):
#Da la tupla r,g,b,a de un color del archivo colores.py
return colores.listacolores[nombrecolor]


def main():

#inicializo pygame
pygame.init()

#defino el tamaño de la ventana y la variable que hara referencia
screen = pygame.display.set_mode(RESOLUCION)

loop = True
while loop:


#Titulo de la ventana: resultado de la funcion colornombre
pygame.display.set_caption(colornombre())

#Rellena el fondo con el color que da la funcion colorrgba
screen.fill(colorrgba(colornombre()))


#actualizamos la pantalla
pygame.display.flip()

#actualizo la pantalla
time.sleep(3)





#control de eventos
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
loop =False
return




if __name__ == '__main__':
main()


colores.py es un diccionario con los colores :p . Algo que mejorar?
Pues yo ya los tengo listos :p .

Me ha costado un poquillo el último, que como ya decía no tengo nada de experiencia, pero lo he conseguido, a ver que os parece le código:


Parece facil pygame, y por lo q vi es bastante portable. Creo q me voy a poner a investigar. Exitos a los q ya lo estan haciendo!
Achiss escribió:Pues yo ya los tengo listos :p .

Me ha costado un poquillo el último, que como ya decía no tengo nada de experiencia, pero lo he conseguido, a ver que os parece le código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import pygame
from pygame.locals import *
import time
import random
import colores

#Datos de Pantalla
ANCHO = 400
ALTO = 400
RESOLUCION = (ANCHO, ALTO)



def colornombre():
#Da el nombre de un color al azar del archivo colores.py

nombrecolor = random.choice(colores.listacolores.keys() )

return nombrecolor

def colorrgba(nombrecolor):
#Da la tupla r,g,b,a de un color del archivo colores.py
return colores.listacolores[nombrecolor]


def main():

#inicializo pygame
pygame.init()

#defino el tamaño de la ventana y la variable que hara referencia
screen = pygame.display.set_mode(RESOLUCION)

loop = True
while loop:


#Titulo de la ventana: resultado de la funcion colornombre
pygame.display.set_caption(colornombre())

#Rellena el fondo con el color que da la funcion colorrgba
screen.fill(colorrgba(colornombre()))


#actualizamos la pantalla
pygame.display.flip()

#actualizo la pantalla
time.sleep(3)





#control de eventos
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
loop =False
return




if __name__ == '__main__':
main()


colores.py es un diccionario con los colores :p . Algo que mejorar?


Puff pos yo creo que el que yo he hecho, lo he hecho mal MAL [qmparto] porque he puesto el RGB tal cual, el tuyo es una solución mas elegante.
Muchas gracias, habra que leerse el curso.
Señores el 3º capitulo públicado, esta vez trata del ratón, eventos y draw (todavía no lo leído...¿Qué sera?). Aunque todavía no están los deberes para este capitulo.
MDman escribió:Señores el 3º capitulo públicado, esta vez trata del ratón, eventos y draw (todavía no lo leído...¿Qué sera?). Aunque todavía no están los deberes para este capitulo.


Le he echado un vistacillo rápido y parece que ya vienen las cosas un poco más interesantes, me voy a la escuela de idiomas y allí le echo un vistacillo. Los ejercicios ha dicho que hoy o mañana, hora argentina supongo.
Es un poco tarde, pero estaría a tiempo de apuntarme?
al081570 escribió:Es un poco tarde, pero estaría a tiempo de apuntarme?


Hablalo con Ricardo D. Quiroga , prueba por aquí:

http://www.aprenderpython.com/aula/
No sale dirección de contacto, pero me he intentado registrar en el curso y no me manda el correo de autenticación v.v una auténtica pena :(
Creo que tienes que esperar a que te lo validen.
al081570 escribió:No sale dirección de contacto, pero me he intentado registrar en el curso y no me manda el correo de autenticación v.v una auténtica pena :(


Yo lo acabo de hacer y si que me han enviado el correo de autentificación pero ha llegado a la bandeja de "Correo no deseado" del msn. Ese mail contenia un link que me dirige hacia una página que pone que no se aceptan más matriculas por el momento :( asi que veremos a ver que pasa
Prueba en este foro, habla con el admin o con Ricardo D. Quiroga a ver que te dice.

http://www.aprenderpython.com/smf/
Que vaguete ando, a ver si me pongo con los deberes del 3º capitulo, que ni me los he leído. [+risas]
MDman escribió:Que vaguete ando, a ver si me pongo con los deberes del 3º capitulo, que ni me los he leído. [+risas]


Yo he hecho los facilongos, a ver si cuando tenga más tiempo me pongo con los otros [carcajad] .

Imagen
Jejeje, yo ayer me puse con los deberes y también tengo algo hecho:
- smiley
- campo de futbol
- rectangulo esquinas redondeadas

Y me falta el:
- polígono regular
- estrella regular
- copos de nieve

Los deberes de esta semana si que son mas difíciles.
Cómo has hecho el rectángulo? Se me ha ocurrido hacerlo con curvas y rectas, o pintando círculos en las esquinas y encima el cuadrado :-? .

Ah vale, no, con circulos no lo veo posible [+risas] .

Y para cualquier tamaño de lado, o solo dibujar uno sin más?
¿Cual es la formula para el desplazamiento que habéis aplicado a la hora de hacer el ejercicio de las estrellas de n puntas?.

def draw(n, screen):
    puntos = []
    puntos2 = []
   
    for a in range(n+1):
        ang = math.radians(360/n) * a
        x1 = CENTRO[0] + math.cos(ang) * (RADIO)
        y1 = CENTRO[1] + math.sin(ang) * (RADIO)
        puntos.append((x1, y1))
                       
    for b in range(n+1):
        ang2 = math.radians(360/n) * b - math.radians( ) # <----- ¿?
        x2 = CENTRO[0] + math.cos(ang2) * (RADIO - 30)
        y2 = CENTRO[1] + math.sin(ang2) * (RADIO - 30)
        puntos2.append((x2, y2))       
                       
    for i in range(n):
        pygame.draw.line(screen, (0, 0, 255, 255), puntos[i], puntos2[i])
        pygame.draw.line(screen, (0, 0, 255, 255), puntos[i], puntos2[i+1])

La relación que tengo es que para una estrella de 9 puntas hace falta un desplazamiento de mas o menos 20 grados. Pero no consigo sacar una fórmula general

EDIT: Solucionado, no había caído en que en "vector2d.py" hay un método para calcular la distancia entre dos puntos.
Ealdor escribió:¿Cual es la formula para el desplazamiento que habéis aplicado a la hora de hacer el ejercicio de las estrellas de n puntas?.
[spoiler]
def draw(n, screen):
    puntos = []
    puntos2 = []
   
    for a in range(n+1):
        ang = math.radians(360/n) * a
        x1 = CENTRO[0] + math.cos(ang) * (RADIO)
        y1 = CENTRO[1] + math.sin(ang) * (RADIO)
        puntos.append((x1, y1))
                       
    for b in range(n+1):
        ang2 = math.radians(360/n) * b - math.radians( ) # <----- ¿?
        x2 = CENTRO[0] + math.cos(ang2) * (RADIO - 30)
        y2 = CENTRO[1] + math.sin(ang2) * (RADIO - 30)
        puntos2.append((x2, y2))       
                       
    for i in range(n):
        pygame.draw.line(screen, (0, 0, 255, 255), puntos[i], puntos2[i])
        pygame.draw.line(screen, (0, 0, 255, 255), puntos[i], puntos2[i+1])

La relación que tengo es que para una estrella de 9 puntas hace falta un desplazamiento de mas o menos 20 grados. Pero no consigo sacar una fórmula general

EDIT: Solucionado, no había caído en que en "vector2d.py" hay un método para calcular la distancia entre dos puntos.[/spoiler]


No es más sencillo hacerlo como un polígono en lugar de lineas?

Los puntos exteriores los hallas igual que un polígono regular, y el ángulo para los interiores es el de la anterior punta + 360/2n. Así que for a in range(n) pones el del punto exterior y el del interior que va después y los vas añadiendo a una pointlist.

Bah, te dejo el código de todas formas si le quieres echar un vistazo :p .


def points(n):

point = []


for a in range(n):


ang = radians(360/n) * a
xtemp = CENTRO[0] + cos(ang) * RADIO
ytemp = CENTRO[1] + sin(ang) * RADIO
point= point + [(xtemp, ytemp)]

ang = ang + radians(360/n)/2
xtemp = CENTRO[0] + cos(ang) * RADIO/3
ytemp = CENTRO[1] + sin(ang) * RADIO/3
point= point + [(xtemp, ytemp)]


return point


Y si alguien me echa una mano con los copos se lo agradezco [carcajad]

Edito: Acabo de ver el edit, y... no me ha dado por mirar que hay ahí, voy a echarle un vistazo [+risas] .
Pues si, es mucho más elegante hacerlo de tu manera, pasándole la lista de puntos a la función "polygon". :)
Yo necesito una manilla con los copos, no se muy bien como cogerlo :( .
Achiss escribió:Yo necesito una manilla con los copos, no se muy bien como cogerlo :( .


Puff yo ya tengo el resto y ahora ando pegandome con el de los copos, no se como sacar el punto superior del triangulo equilátero. Ando pegandome con trigonometría y vectores puff.
MDman escribió:
Achiss escribió:Yo necesito una manilla con los copos, no se muy bien como cogerlo :( .


Puff yo ya tengo el resto y ahora ando pegandome con el de los copos, no se como sacar el punto superior del triangulo equilátero. Ando pegandome con trigonometría y vectores puff.


El punto superior es, si n es la distancia del lado y n/2 la de la base

x=n/2 y=sin(ang)*n

si no me equivoco, pero el ejercicio no se hacerlo, lo tengo que mirar con más calma [carcajad] .
Puff que locura el ejercicio de los copos de nieve, pero bueno ya lo remate, al final he usado una solución basada en movimiento de vectores...muy parecida a la que viene en la wikipedia, pero haciendome a mano el movimiento de vectores...que por cierto...que jaleo los puñeteros angulos.

Por cierto, ya esta los ejercicios 4º tema...uff que presión [carcajad] .
80 respuestas
1, 2