SlideShare una empresa de Scribd logo
Pilas (Práctica 3)
Objetivo
Ahora vas a trabajar progresivamente en varios programas hasta conseguir dominar el
uso de diferentes elementos, sobre todo, entender cómo se trabaja con clases y con
objetos. Para ello vamos a modificar ligeramente el comportamiento de los programas y
vamos a dar una explicación más detallada de cada paso.
Programa 3: pilas3.py
En Pilas, el manejo del bucle de animación es automático y nos tenemos que centrar, en
su lugar, en definir el comportamiento de cada elemento. Observa el siguiente código (y
lee los comentarios para entender el funcionamiento); cuando se ejecuta el programa, con
cada click del ratón se dibuja un cuadrado de un color aleatorio...
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import pilas
from random import randint # Vamos a necesitar generar números al azar
pilas.iniciar()
# Indicamos que el fondo de la ventana será negro
pilas.fondos.Color(pilas.colores.negro)
# Vamos a crear una clase de objetos que represente a nuestros 'puntos'
# Estos objetos deben ser actores y, por tanto, la clase es derivada de ella.
class Punto(pilas.actores.Actor):
# El método __init__() debe incluir la posición del punto
def __init__(self, x=0, y=0):
# Siempre hay que llamar al __init__() de la clase 'Padre' para
# que la 'hija' herede sus características.
# En nuestro caso, como va a ser un actor a partir de una imagen
# cuadrada que representa el punto, primero generamos la imagen...
imagen = pilas.imagenes.cargar_superficie(4, 4)
# ... generamos el color que va a tener el cuadrado al azar...
color = pilas.colores.Color(randint(0, 255), randint(0, 255),
randint(0, 255))
# ... y pintamos el cuadrado con dicho color
imagen.pintar(color)
# Ahora sí, llamamos al __init__() del padre con la imagen hecha...
pilas.actores.Actor.__init__(self, imagen)
# ... ¡y que no se nos olvide! Guardamos la información de la posición
# del punto, al crearlo, en los correspondientes atributos.
TECNOLOGÍA DE LA INFORMACIÓN	

 	

 CURSO: 1 BACH
Programa 4: cuadradosDiagonales.py
Bien. Modifiquemos el programa anterior para que, durante la animación, los cuadrados
se muevan en diagonal. Las variaciones con respecto al programa anterior van
acompañadas con el correspondiente comentario en el código:
self.x = x
self.y = y
# Ahora solo queda definir la función que se encargará de crear el punto en
# pantalla cunado hagamos click con el ratón.
def crear_punto(evento):
# creamos un nuevo punto en la posición en la que se ha producido el evento
Punto(evento.x, evento.y)
# Concectamos la función con el evento de hacer click con el ratón
pilas.eventos.click_de_mouse.conectar(crear_punto)
# ¡Ya está todo definido! Podemos lanzar el programa...
pilas.ejecutar()
TECNOLOGÍA DE LA INFORMACIÓN	

 	

 CURSO: 1 BACH
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import pilas
from random import randint
pilas.iniciar()
pilas.fondos.Color(pilas.colores.negro)
class Punto(pilas.actores.Actor):
def __init__(self, x=0, y=0):
imagen = pilas.imagenes.cargar_superficie(4, 4)
color = pilas.colores.Color(randint(0, 255), randint(0, 255),
randint(0, 255))
imagen.pintar(color)
pilas.actores.Actor.__init__(self, imagen)
self.x = x
self.y = y
Programa 5: cuadradosRebotantes.py
Seguimos modificando. Ahora queremos que los cuadrados no se salgan de la ventana y
que reboten con los bordes...
# El método actualizar() nos permite definir comportamientos de los actores
# en cada fotograma de la animación. En este caso, aumentamos las coordena-
# das del punto, provocando que se produzca un movimiento en diagonal.
def actualizar(self):
self.x += 1
self.y += 1
def crear_punto(evento):
Punto(evento.x, evento.y)
pilas.eventos.click_de_mouse.conectar(crear_punto)
pilas.ejecutar()
TECNOLOGÍA DE LA INFORMACIÓN	

 	

 CURSO: 1 BACH
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import pilas
from random import randint
pilas.iniciar()
pilas.fondos.Color(pilas.colores.negro)
class Punto(pilas.actores.Actor):
def __init__(self, x=0, y=0):
imagen = pilas.imagenes.cargar_superficie(4, 4)
color = pilas.colores.Color(randint(0, 255), randint(0, 255),
randint(0, 255))
imagen.pintar(color)
pilas.actores.Actor.__init__(self, imagen)
self.x = x
self.y = y
# Para poder hacer el rebote al llegar a los extremos de la ventana,
# hemos de poder cambiar la dirección del movimiento. Para ello
Programa 6: cuadradosEnGrupo.py
Finalmente, vamos a ver cómo podemos actuar con todos los puntos a la vez
aprovechando el concepto de Grupos de Pilas...
# definimos los atributos dx y dy con el valor inicial de 1.
self.dx = 1
self.dy = 1
def actualizar(self):
# Ahora, para crear el movimiento, sumamos a la posición la velocidad
self.x += self.dx
self.y += self.dy
# Bien, ahora hay que ver si se llega al borde de la ventana. Hay que
# recordar que el centro tiene coordenadas x = 0 e y = 0. Así que
# si se pasa del borde derecho de la ventana (x = 320) o del borde
# izquierdo (x = -320) hay que cambiar el sentido de movimiento
if self.x > 320 or self.x < -320:
# Al cambiar el signo de la velocidad, se consigue lo que queremos
self.dx = -self.dx
# Y hacemos lo propio con los bordes superior e inferior...
if self.y > 240 or self.y < -240:
self.dy = -self.dy
def crear_punto(evento):
Punto(evento.x, evento.y)
pilas.eventos.click_de_mouse.conectar(crear_punto)
pilas.ejecutar()
TECNOLOGÍA DE LA INFORMACIÓN	

 	

 CURSO: 1 BACH
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import pilas
from random import randint
pilas.iniciar()
pilas.fondos.Color(pilas.colores.negro)
class Punto(pilas.actores.Actor):
def __init__(self, x=0, y=0):
imagen = pilas.imagenes.cargar_superficie(4, 4)
color = pilas.colores.Color(randint(0, 255), randint(0, 255),
randint(0, 255))
imagen.pintar(color)
pilas.actores.Actor.__init__(self, imagen)
self.x = x
self.y = y
self.dx = 1
self.dy = 1
def actualizar(self):
self.x += self.dx
if self.x > 320 or self.x < -320:
self.dx = -self.dx
self.y += self.dy
if self.y > 240 or self.y < -240:
self.dy = -self.dy
# Hasta ahora, hemos creado los puntos sin más. Si luego queremos hacer algo
# con ellos, sería más interesante guardar un listado de lo creado. Para ello
# es, precisamente, el concepto de Grupo. Vamos a crear, inicialmente, un grupo
# vacío que luego contendrá a nuestros puntos.
puntos = pilas.grupo.Grupo()
def crear_punto(evento):
# Ahora. además de crear un punto al hacer click con el ratón como hacíamos
# antes, lo añadimos al grupo
puntos.append(Punto(evento.x, evento.y))
# Vamos a mostrar una utilidad sencilla de tener la referencia de todos los
# puntos creados. Vamos a definir una función que reaccione al pulsar una tecla
# con todos los puntos a la vez.
def reaccionar_tecla(evento):
# Si se ha pulsado la tecla 'x', ponemos la coordenada x de todos los
# puntos a cero. Fíjate lo fácil que es hacerlo con la referencia del grupo
if evento.codigo == 'x':
puntos.x = 0
# Si la tecla es 'y', hacemos lo propio con la coordenada y
elif evento.codigo == 'y':
puntos.y = 0
pilas.eventos.click_de_mouse.conectar(crear_punto)
# Finalmente, falta conectar la nueva función con el evento de pulsar la tecla
pilas.eventos.pulsa_tecla.conectar(reaccionar_tecla)
pilas.ejecutar()
TECNOLOGÍA DE LA INFORMACIÓN	

 	

 CURSO: 1 BACH
¿Qué es lo que tienes que hacer? Escribe cada uno de los programas, comprueba que
funcionan y envíalos todos juntos a tu profesor. Para subir nota, como programa en un
correo aparte, podrías hacer dos modificaciones más. En primer lugar, ¿sabrías conseguir
que los puntos se movieran más deprisa? Hay dos formas, una de ellas muy simple, la
otra requiere de algo de investigación. Y en segundo lugar, más complicado, ¿sabrías
cambiar el color de cada punto en cada fotograma?...
Recapitulación
Esta práctica has visto cómo funciona la animación a base de fotogramas, has manejado
las posiciones de los protagonistas mediante coordenadas y has trabajado con clases,
objetos y grupos. Muchos conceptos, sí. Recuerda que puedes consultar la
documentación y la wiki para encontrar más explicaciones.
• ¿Controlas los diferentes tipos de eventos que hemos manejado?
• ¿Hay visto las dos formas diferentes de emplear import? ¿Cómo afecta a randint()?
• ¿Cómo se hace para crear una clase? ¿Y para crear una clase que derive de otra?
• ¿Para qué se usa __init__()?¿Hay otros métodos especiales?
• ¿Para qué se usa self ? ¿Qué diferencia self.x y x, por ejemplo?
• ¿Qué representa el atributo codigo del evento? ¿Qué otros eventos y atributos hay?
TECNOLOGÍA DE LA INFORMACIÓN	

 	

 CURSO: 1 BACH

Más contenido relacionado

La actualidad más candente

Programación con Pygame (II)
Programación con Pygame (II)Programación con Pygame (II)
Programación con Pygame (II)
Fernando Salamero
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtle
Albert Page
 
Portfolio deTurtle Art
Portfolio deTurtle ArtPortfolio deTurtle Art
Portfolio deTurtle Art
Verónica Blanco
 
Desarrollo de videojuegos con software libre
Desarrollo de videojuegos con software libreDesarrollo de videojuegos con software libre
Desarrollo de videojuegos con software libre
Carlos Zúñiga
 
Gnuplot
GnuplotGnuplot
Gnuplot
dklajd
 
Entorno visual p2
Entorno visual p2Entorno visual p2
Entorno visual p2
Jean Pierre Hernández
 
GNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funcionesGNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funciones
Esteban Saavedra
 
Instructivo tortugart
Instructivo tortugartInstructivo tortugart
Instructivo tortugart
Gladys León
 
Lección No. 1 de Python
Lección No. 1 de PythonLección No. 1 de Python
Lección No. 1 de Python
Victor Pando
 
Instructivo tortugart
Instructivo tortugartInstructivo tortugart
Instructivo tortugart
Yoèl Zamora
 
Aventura
AventuraAventura
tutorial-powerbot-3.pdf
tutorial-powerbot-3.pdftutorial-powerbot-3.pdf
tutorial-powerbot-3.pdf
Silver Caprice
 
Introduccion Scratch
Introduccion ScratchIntroduccion Scratch
Introduccion Scratch
miguelmaneu78
 
Practica 1
Practica 1Practica 1
Practica 1
MartinCetis109
 
Ejercicios básicos de msw logo 1 6
Ejercicios básicos de msw logo 1 6Ejercicios básicos de msw logo 1 6
Ejercicios básicos de msw logo 1 6
Carlos Bravo
 
Python03
Python03Python03
Python03
Victor Pando
 
Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)
Agneta Gallardo
 
Scratch tangram-
Scratch  tangram-Scratch  tangram-
Scratch tangram-
ctepay
 
Lenguaje de programación logo
Lenguaje de programación logoLenguaje de programación logo
Lenguaje de programación logo
AracelyLeyton
 
Scratch nivel básico con secuencia didáctica
Scratch nivel básico con secuencia didácticaScratch nivel básico con secuencia didáctica
Scratch nivel básico con secuencia didáctica
progeed
 

La actualidad más candente (20)

Programación con Pygame (II)
Programación con Pygame (II)Programación con Pygame (II)
Programación con Pygame (II)
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtle
 
Portfolio deTurtle Art
Portfolio deTurtle ArtPortfolio deTurtle Art
Portfolio deTurtle Art
 
Desarrollo de videojuegos con software libre
Desarrollo de videojuegos con software libreDesarrollo de videojuegos con software libre
Desarrollo de videojuegos con software libre
 
Gnuplot
GnuplotGnuplot
Gnuplot
 
Entorno visual p2
Entorno visual p2Entorno visual p2
Entorno visual p2
 
GNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funcionesGNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funciones
 
Instructivo tortugart
Instructivo tortugartInstructivo tortugart
Instructivo tortugart
 
Lección No. 1 de Python
Lección No. 1 de PythonLección No. 1 de Python
Lección No. 1 de Python
 
Instructivo tortugart
Instructivo tortugartInstructivo tortugart
Instructivo tortugart
 
Aventura
AventuraAventura
Aventura
 
tutorial-powerbot-3.pdf
tutorial-powerbot-3.pdftutorial-powerbot-3.pdf
tutorial-powerbot-3.pdf
 
Introduccion Scratch
Introduccion ScratchIntroduccion Scratch
Introduccion Scratch
 
Practica 1
Practica 1Practica 1
Practica 1
 
Ejercicios básicos de msw logo 1 6
Ejercicios básicos de msw logo 1 6Ejercicios básicos de msw logo 1 6
Ejercicios básicos de msw logo 1 6
 
Python03
Python03Python03
Python03
 
Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)Guía paso a paso Curso Scratch (Parte II - 2016)
Guía paso a paso Curso Scratch (Parte II - 2016)
 
Scratch tangram-
Scratch  tangram-Scratch  tangram-
Scratch tangram-
 
Lenguaje de programación logo
Lenguaje de programación logoLenguaje de programación logo
Lenguaje de programación logo
 
Scratch nivel básico con secuencia didáctica
Scratch nivel básico con secuencia didácticaScratch nivel básico con secuencia didáctica
Scratch nivel básico con secuencia didáctica
 

Destacado

Python (práctica 1)
Python (práctica 1)Python (práctica 1)
Python (práctica 1)
Fernando Salamero
 
Programación de Videojuegos con Python y Pilas (III)
Programación de Videojuegos con Python y Pilas (III)Programación de Videojuegos con Python y Pilas (III)
Programación de Videojuegos con Python y Pilas (III)
Fernando Salamero
 
Programación de Videojuegos con Python y Pilas (I)
Programación de Videojuegos con Python y Pilas (I)Programación de Videojuegos con Python y Pilas (I)
Programación de Videojuegos con Python y Pilas (I)
Fernando Salamero
 
Programación de Videojuegos con Python y Pilas (II)
Programación de Videojuegos con Python y Pilas (II)Programación de Videojuegos con Python y Pilas (II)
Programación de Videojuegos con Python y Pilas (II)
Fernando Salamero
 
Python (práctica 4)
Python (práctica 4)Python (práctica 4)
Python (práctica 4)
Fernando Salamero
 
Programación con Pygame III
Programación con Pygame IIIProgramación con Pygame III
Programación con Pygame III
Fernando Salamero
 
(Sin anotaciones) - En busca de la Física
(Sin anotaciones) - En busca de la Física(Sin anotaciones) - En busca de la Física
(Sin anotaciones) - En busca de la Física
Fernando Salamero
 
Python (práctica 3)
Python (práctica 3)Python (práctica 3)
Python (práctica 3)
Fernando Salamero
 
Python (práctica 2)
Python (práctica 2)Python (práctica 2)
Python (práctica 2)
Fernando Salamero
 
Iniciación a python
Iniciación a pythonIniciación a python
Iniciación a python
Fernando Salamero
 
Python (ejercicios)
Python (ejercicios)Python (ejercicios)
Python (ejercicios)
Fernando Salamero
 
Evidencias de sesión 4 Curso Python
Evidencias de  sesión 4 Curso PythonEvidencias de  sesión 4 Curso Python
Evidencias de sesión 4 Curso Python
maluacsa
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
maluacsa
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Python
maluacsa
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Python
maluacsa
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Python
maluacsa
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
maluacsa
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Python
maluacsa
 
Evidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en PythonEvidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en Python
maluacsa
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
Diego Camilo Peña Ramirez
 

Destacado (20)

Python (práctica 1)
Python (práctica 1)Python (práctica 1)
Python (práctica 1)
 
Programación de Videojuegos con Python y Pilas (III)
Programación de Videojuegos con Python y Pilas (III)Programación de Videojuegos con Python y Pilas (III)
Programación de Videojuegos con Python y Pilas (III)
 
Programación de Videojuegos con Python y Pilas (I)
Programación de Videojuegos con Python y Pilas (I)Programación de Videojuegos con Python y Pilas (I)
Programación de Videojuegos con Python y Pilas (I)
 
Programación de Videojuegos con Python y Pilas (II)
Programación de Videojuegos con Python y Pilas (II)Programación de Videojuegos con Python y Pilas (II)
Programación de Videojuegos con Python y Pilas (II)
 
Python (práctica 4)
Python (práctica 4)Python (práctica 4)
Python (práctica 4)
 
Programación con Pygame III
Programación con Pygame IIIProgramación con Pygame III
Programación con Pygame III
 
(Sin anotaciones) - En busca de la Física
(Sin anotaciones) - En busca de la Física(Sin anotaciones) - En busca de la Física
(Sin anotaciones) - En busca de la Física
 
Python (práctica 3)
Python (práctica 3)Python (práctica 3)
Python (práctica 3)
 
Python (práctica 2)
Python (práctica 2)Python (práctica 2)
Python (práctica 2)
 
Iniciación a python
Iniciación a pythonIniciación a python
Iniciación a python
 
Python (ejercicios)
Python (ejercicios)Python (ejercicios)
Python (ejercicios)
 
Evidencias de sesión 4 Curso Python
Evidencias de  sesión 4 Curso PythonEvidencias de  sesión 4 Curso Python
Evidencias de sesión 4 Curso Python
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Python
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Python
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Python
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Python
 
Evidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en PythonEvidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en Python
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
 

Similar a Programación de Videojuegos con Python y Pilas (V)

Como instalar Python y librerias
Como instalar Python y libreriasComo instalar Python y librerias
Como instalar Python y librerias
Daniel Iba
 
Programación con Pygame IV
Programación con Pygame IVProgramación con Pygame IV
Programación con Pygame IV
Fernando Salamero
 
Thalia castro 1101
Thalia castro 1101Thalia castro 1101
Thalia castro 1101
thalis96
 
Develop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDKDevelop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDK
Alberto Dominguez
 
Intro pygamev2
Intro pygamev2Intro pygamev2
Intro pygamev2
Ricardo Daniel Quiroga
 
Manual de scratch
Manual de scratchManual de scratch
Manual de scratch
Marcelo Landa
 
0a476c4b48d664068c084ccc201d13
0a476c4b48d664068c084ccc201d130a476c4b48d664068c084ccc201d13
0a476c4b48d664068c084ccc201d13
Roberto Montanez
 
Laptop xosecundariascratch
Laptop xosecundariascratchLaptop xosecundariascratch
Laptop xosecundariascratch
Janett Salazar Nina
 
Unidad 4
Unidad 4Unidad 4
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
kmilithho
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
Juan Camilo Balcazar
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
Juan Camilo Balcazar
 
Unidad iii programas de aleatoriedad
Unidad iii programas de aleatoriedadUnidad iii programas de aleatoriedad
Unidad iii programas de aleatoriedad
UGMA
 
Introduccion a awt
Introduccion a awtIntroduccion a awt
Introduccion a awt
Ricardo Garcia
 
Applets.pdf
Applets.pdfApplets.pdf
Applets.pdf
IsaacCastro64
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
PedRo Chavez
 
Programación con Pygame VIII
Programación con Pygame VIIIProgramación con Pygame VIII
Programación con Pygame VIII
Fernando Salamero
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
Plain Concepts
 
Manual scratch
Manual scratchManual scratch
Manual scratch
almajucas
 
Manual scratch
Manual scratchManual scratch
Manual scratch
Milagros Andresina
 

Similar a Programación de Videojuegos con Python y Pilas (V) (20)

Como instalar Python y librerias
Como instalar Python y libreriasComo instalar Python y librerias
Como instalar Python y librerias
 
Programación con Pygame IV
Programación con Pygame IVProgramación con Pygame IV
Programación con Pygame IV
 
Thalia castro 1101
Thalia castro 1101Thalia castro 1101
Thalia castro 1101
 
Develop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDKDevelop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDK
 
Intro pygamev2
Intro pygamev2Intro pygamev2
Intro pygamev2
 
Manual de scratch
Manual de scratchManual de scratch
Manual de scratch
 
0a476c4b48d664068c084ccc201d13
0a476c4b48d664068c084ccc201d130a476c4b48d664068c084ccc201d13
0a476c4b48d664068c084ccc201d13
 
Laptop xosecundariascratch
Laptop xosecundariascratchLaptop xosecundariascratch
Laptop xosecundariascratch
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
 
Unidad iii programas de aleatoriedad
Unidad iii programas de aleatoriedadUnidad iii programas de aleatoriedad
Unidad iii programas de aleatoriedad
 
Introduccion a awt
Introduccion a awtIntroduccion a awt
Introduccion a awt
 
Applets.pdf
Applets.pdfApplets.pdf
Applets.pdf
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Programación con Pygame VIII
Programación con Pygame VIIIProgramación con Pygame VIII
Programación con Pygame VIII
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Manual scratch
Manual scratchManual scratch
Manual scratch
 
Manual scratch
Manual scratchManual scratch
Manual scratch
 

Más de Fernando Salamero

(Anotaciones) Ciencia (Cuestiones) que la tiza no propone
(Anotaciones) Ciencia (Cuestiones) que la tiza no propone(Anotaciones) Ciencia (Cuestiones) que la tiza no propone
(Anotaciones) Ciencia (Cuestiones) que la tiza no propone
Fernando Salamero
 
Ciencia (Cuestiones) que la tiza no propone
Ciencia (Cuestiones) que la tiza no proponeCiencia (Cuestiones) que la tiza no propone
Ciencia (Cuestiones) que la tiza no propone
Fernando Salamero
 
(Con anotaciones) En busca de la Física
(Con anotaciones) En busca de la Física(Con anotaciones) En busca de la Física
(Con anotaciones) En busca de la Física
Fernando Salamero
 
Timeline - En busca de la Física
Timeline - En busca de la FísicaTimeline - En busca de la Física
Timeline - En busca de la Física
Fernando Salamero
 
Jovenes físicos
Jovenes físicosJovenes físicos
Jovenes físicos
Fernando Salamero
 
Python básico II
Python básico IIPython básico II
Python básico II
Fernando Salamero
 
Python básico I
Python básico IPython básico I
Python básico I
Fernando Salamero
 
Programación con Pygame VII
Programación con Pygame VIIProgramación con Pygame VII
Programación con Pygame VII
Fernando Salamero
 
Programación con Pygame IX
Programación con Pygame IXProgramación con Pygame IX
Programación con Pygame IX
Fernando Salamero
 

Más de Fernando Salamero (9)

(Anotaciones) Ciencia (Cuestiones) que la tiza no propone
(Anotaciones) Ciencia (Cuestiones) que la tiza no propone(Anotaciones) Ciencia (Cuestiones) que la tiza no propone
(Anotaciones) Ciencia (Cuestiones) que la tiza no propone
 
Ciencia (Cuestiones) que la tiza no propone
Ciencia (Cuestiones) que la tiza no proponeCiencia (Cuestiones) que la tiza no propone
Ciencia (Cuestiones) que la tiza no propone
 
(Con anotaciones) En busca de la Física
(Con anotaciones) En busca de la Física(Con anotaciones) En busca de la Física
(Con anotaciones) En busca de la Física
 
Timeline - En busca de la Física
Timeline - En busca de la FísicaTimeline - En busca de la Física
Timeline - En busca de la Física
 
Jovenes físicos
Jovenes físicosJovenes físicos
Jovenes físicos
 
Python básico II
Python básico IIPython básico II
Python básico II
 
Python básico I
Python básico IPython básico I
Python básico I
 
Programación con Pygame VII
Programación con Pygame VIIProgramación con Pygame VII
Programación con Pygame VII
 
Programación con Pygame IX
Programación con Pygame IXProgramación con Pygame IX
Programación con Pygame IX
 

Último

Plataformas de vídeo online (2 de julio de 2024)
Plataformas de vídeo online (2 de julio de 2024)Plataformas de vídeo online (2 de julio de 2024)
Plataformas de vídeo online (2 de julio de 2024)
Cátedra Banco Santander
 
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Juan Martín Martín
 
Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.
SergioAlfrediMontoya
 
TOMO I - HISTORIA primer exsamen 2025 de la unsa arequipa
TOMO I - HISTORIA primer exsamen 2025 de la unsa arequipaTOMO I - HISTORIA primer exsamen 2025 de la unsa arequipa
TOMO I - HISTORIA primer exsamen 2025 de la unsa arequipa
alexandrachura18255
 
Sesión Un día en el ministerio de Jesús.pdf
Sesión Un día en el ministerio de Jesús.pdfSesión Un día en el ministerio de Jesús.pdf
Sesión Un día en el ministerio de Jesús.pdf
https://gramadal.wordpress.com/
 
Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
Evaluacion Formativa en el Aula   ECH1  Ccesa007.pdfEvaluacion Formativa en el Aula   ECH1  Ccesa007.pdf
Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
Demetrio Ccesa Rayme
 
El mensaje en la psicopedagogía.........
El mensaje en la psicopedagogía.........El mensaje en la psicopedagogía.........
El mensaje en la psicopedagogía.........
DenisseGonzalez805225
 
DIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLA
DIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLADIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLA
DIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLA
JAVIER SOLIS NOYOLA
 
Los Formularios de Google: creación, gestión y administración de respuestas (...
Los Formularios de Google: creación, gestión y administración de respuestas (...Los Formularios de Google: creación, gestión y administración de respuestas (...
Los Formularios de Google: creación, gestión y administración de respuestas (...
Cátedra Banco Santander
 
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdfCultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
JonathanCovena1
 
Filigramma #17, revista literaria del Círculo de Escritores Sabersinfin
Filigramma #17, revista literaria del Círculo de Escritores SabersinfinFiligramma #17, revista literaria del Círculo de Escritores Sabersinfin
Filigramma #17, revista literaria del Círculo de Escritores Sabersinfin
Sabersinfin Portal
 
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdfSEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
GavieLitiumGarcia
 
Aplicaciones móviles de grabación (2 de julio de 2024)
Aplicaciones móviles de grabación (2 de julio de 2024)Aplicaciones móviles de grabación (2 de julio de 2024)
Aplicaciones móviles de grabación (2 de julio de 2024)
Cátedra Banco Santander
 
fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024
Verito51
 
04. ESTADÍSTICA (comunicación) (J.C) 3.pptx
04. ESTADÍSTICA (comunicación) (J.C) 3.pptx04. ESTADÍSTICA (comunicación) (J.C) 3.pptx
04. ESTADÍSTICA (comunicación) (J.C) 3.pptx
jvcar1815
 
Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024
maria larios
 
PPT: Un día en el ministerio de Jesús.pptx
PPT: Un día en el ministerio de Jesús.pptxPPT: Un día en el ministerio de Jesús.pptx
PPT: Un día en el ministerio de Jesús.pptx
https://gramadal.wordpress.com/
 
Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024
Universidad de Deusto - Deustuko Unibertsitatea - University of Deusto
 
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docxDiscurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Centro de Bachillerato Tecnológico industrial y de servicios No. 209
 
Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)
Cátedra Banco Santander
 

Último (20)

Plataformas de vídeo online (2 de julio de 2024)
Plataformas de vídeo online (2 de julio de 2024)Plataformas de vídeo online (2 de julio de 2024)
Plataformas de vídeo online (2 de julio de 2024)
 
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
Soluciones Examen de Selectividad. Geografía julio 2024 (Convocatoria Extraor...
 
Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.Semana 1 Derecho a interponer recursos y reparación.
Semana 1 Derecho a interponer recursos y reparación.
 
TOMO I - HISTORIA primer exsamen 2025 de la unsa arequipa
TOMO I - HISTORIA primer exsamen 2025 de la unsa arequipaTOMO I - HISTORIA primer exsamen 2025 de la unsa arequipa
TOMO I - HISTORIA primer exsamen 2025 de la unsa arequipa
 
Sesión Un día en el ministerio de Jesús.pdf
Sesión Un día en el ministerio de Jesús.pdfSesión Un día en el ministerio de Jesús.pdf
Sesión Un día en el ministerio de Jesús.pdf
 
Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
Evaluacion Formativa en el Aula   ECH1  Ccesa007.pdfEvaluacion Formativa en el Aula   ECH1  Ccesa007.pdf
Evaluacion Formativa en el Aula ECH1 Ccesa007.pdf
 
El mensaje en la psicopedagogía.........
El mensaje en la psicopedagogía.........El mensaje en la psicopedagogía.........
El mensaje en la psicopedagogía.........
 
DIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLA
DIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLADIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLA
DIBUJANDO CON MATEMÁTICA LA GIMNASIA OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
Los Formularios de Google: creación, gestión y administración de respuestas (...
Los Formularios de Google: creación, gestión y administración de respuestas (...Los Formularios de Google: creación, gestión y administración de respuestas (...
Los Formularios de Google: creación, gestión y administración de respuestas (...
 
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdfCultura Organizacional con Responsabilidad Social Empresarial.pdf
Cultura Organizacional con Responsabilidad Social Empresarial.pdf
 
Filigramma #17, revista literaria del Círculo de Escritores Sabersinfin
Filigramma #17, revista literaria del Círculo de Escritores SabersinfinFiligramma #17, revista literaria del Círculo de Escritores Sabersinfin
Filigramma #17, revista literaria del Círculo de Escritores Sabersinfin
 
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdfSEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
SEP. Presentación. Taller Intensivo FCD. Julio 2024.pdf
 
Aplicaciones móviles de grabación (2 de julio de 2024)
Aplicaciones móviles de grabación (2 de julio de 2024)Aplicaciones móviles de grabación (2 de julio de 2024)
Aplicaciones móviles de grabación (2 de julio de 2024)
 
fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024fichas descriptivas para primaria 2023-2024
fichas descriptivas para primaria 2023-2024
 
04. ESTADÍSTICA (comunicación) (J.C) 3.pptx
04. ESTADÍSTICA (comunicación) (J.C) 3.pptx04. ESTADÍSTICA (comunicación) (J.C) 3.pptx
04. ESTADÍSTICA (comunicación) (J.C) 3.pptx
 
Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024Taller Intensivo de Formación Continua 2024
Taller Intensivo de Formación Continua 2024
 
PPT: Un día en el ministerio de Jesús.pptx
PPT: Un día en el ministerio de Jesús.pptxPPT: Un día en el ministerio de Jesús.pptx
PPT: Un día en el ministerio de Jesús.pptx
 
Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024Revista Universidad de Deusto - Número 155 / Año 2024
Revista Universidad de Deusto - Número 155 / Año 2024
 
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docxDiscurso de Ceremonia de Graduación da la Generación 2021-2024.docx
Discurso de Ceremonia de Graduación da la Generación 2021-2024.docx
 
Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)Introducción a la seguridad básica (3 de julio de 2024)
Introducción a la seguridad básica (3 de julio de 2024)
 

Programación de Videojuegos con Python y Pilas (V)

  • 1. Pilas (Práctica 3) Objetivo Ahora vas a trabajar progresivamente en varios programas hasta conseguir dominar el uso de diferentes elementos, sobre todo, entender cómo se trabaja con clases y con objetos. Para ello vamos a modificar ligeramente el comportamiento de los programas y vamos a dar una explicación más detallada de cada paso. Programa 3: pilas3.py En Pilas, el manejo del bucle de animación es automático y nos tenemos que centrar, en su lugar, en definir el comportamiento de cada elemento. Observa el siguiente código (y lee los comentarios para entender el funcionamiento); cuando se ejecuta el programa, con cada click del ratón se dibuja un cuadrado de un color aleatorio... #! /usr/bin/env python # -*- coding:utf-8 -*- import pilas from random import randint # Vamos a necesitar generar números al azar pilas.iniciar() # Indicamos que el fondo de la ventana será negro pilas.fondos.Color(pilas.colores.negro) # Vamos a crear una clase de objetos que represente a nuestros 'puntos' # Estos objetos deben ser actores y, por tanto, la clase es derivada de ella. class Punto(pilas.actores.Actor): # El método __init__() debe incluir la posición del punto def __init__(self, x=0, y=0): # Siempre hay que llamar al __init__() de la clase 'Padre' para # que la 'hija' herede sus características. # En nuestro caso, como va a ser un actor a partir de una imagen # cuadrada que representa el punto, primero generamos la imagen... imagen = pilas.imagenes.cargar_superficie(4, 4) # ... generamos el color que va a tener el cuadrado al azar... color = pilas.colores.Color(randint(0, 255), randint(0, 255), randint(0, 255)) # ... y pintamos el cuadrado con dicho color imagen.pintar(color) # Ahora sí, llamamos al __init__() del padre con la imagen hecha... pilas.actores.Actor.__init__(self, imagen) # ... ¡y que no se nos olvide! Guardamos la información de la posición # del punto, al crearlo, en los correspondientes atributos. TECNOLOGÍA DE LA INFORMACIÓN CURSO: 1 BACH
  • 2. Programa 4: cuadradosDiagonales.py Bien. Modifiquemos el programa anterior para que, durante la animación, los cuadrados se muevan en diagonal. Las variaciones con respecto al programa anterior van acompañadas con el correspondiente comentario en el código: self.x = x self.y = y # Ahora solo queda definir la función que se encargará de crear el punto en # pantalla cunado hagamos click con el ratón. def crear_punto(evento): # creamos un nuevo punto en la posición en la que se ha producido el evento Punto(evento.x, evento.y) # Concectamos la función con el evento de hacer click con el ratón pilas.eventos.click_de_mouse.conectar(crear_punto) # ¡Ya está todo definido! Podemos lanzar el programa... pilas.ejecutar() TECNOLOGÍA DE LA INFORMACIÓN CURSO: 1 BACH #! /usr/bin/env python # -*- coding:utf-8 -*- import pilas from random import randint pilas.iniciar() pilas.fondos.Color(pilas.colores.negro) class Punto(pilas.actores.Actor): def __init__(self, x=0, y=0): imagen = pilas.imagenes.cargar_superficie(4, 4) color = pilas.colores.Color(randint(0, 255), randint(0, 255), randint(0, 255)) imagen.pintar(color) pilas.actores.Actor.__init__(self, imagen) self.x = x self.y = y
  • 3. Programa 5: cuadradosRebotantes.py Seguimos modificando. Ahora queremos que los cuadrados no se salgan de la ventana y que reboten con los bordes... # El método actualizar() nos permite definir comportamientos de los actores # en cada fotograma de la animación. En este caso, aumentamos las coordena- # das del punto, provocando que se produzca un movimiento en diagonal. def actualizar(self): self.x += 1 self.y += 1 def crear_punto(evento): Punto(evento.x, evento.y) pilas.eventos.click_de_mouse.conectar(crear_punto) pilas.ejecutar() TECNOLOGÍA DE LA INFORMACIÓN CURSO: 1 BACH #! /usr/bin/env python # -*- coding:utf-8 -*- import pilas from random import randint pilas.iniciar() pilas.fondos.Color(pilas.colores.negro) class Punto(pilas.actores.Actor): def __init__(self, x=0, y=0): imagen = pilas.imagenes.cargar_superficie(4, 4) color = pilas.colores.Color(randint(0, 255), randint(0, 255), randint(0, 255)) imagen.pintar(color) pilas.actores.Actor.__init__(self, imagen) self.x = x self.y = y # Para poder hacer el rebote al llegar a los extremos de la ventana, # hemos de poder cambiar la dirección del movimiento. Para ello
  • 4. Programa 6: cuadradosEnGrupo.py Finalmente, vamos a ver cómo podemos actuar con todos los puntos a la vez aprovechando el concepto de Grupos de Pilas... # definimos los atributos dx y dy con el valor inicial de 1. self.dx = 1 self.dy = 1 def actualizar(self): # Ahora, para crear el movimiento, sumamos a la posición la velocidad self.x += self.dx self.y += self.dy # Bien, ahora hay que ver si se llega al borde de la ventana. Hay que # recordar que el centro tiene coordenadas x = 0 e y = 0. Así que # si se pasa del borde derecho de la ventana (x = 320) o del borde # izquierdo (x = -320) hay que cambiar el sentido de movimiento if self.x > 320 or self.x < -320: # Al cambiar el signo de la velocidad, se consigue lo que queremos self.dx = -self.dx # Y hacemos lo propio con los bordes superior e inferior... if self.y > 240 or self.y < -240: self.dy = -self.dy def crear_punto(evento): Punto(evento.x, evento.y) pilas.eventos.click_de_mouse.conectar(crear_punto) pilas.ejecutar() TECNOLOGÍA DE LA INFORMACIÓN CURSO: 1 BACH #! /usr/bin/env python # -*- coding:utf-8 -*- import pilas from random import randint pilas.iniciar() pilas.fondos.Color(pilas.colores.negro) class Punto(pilas.actores.Actor): def __init__(self, x=0, y=0): imagen = pilas.imagenes.cargar_superficie(4, 4)
  • 5. color = pilas.colores.Color(randint(0, 255), randint(0, 255), randint(0, 255)) imagen.pintar(color) pilas.actores.Actor.__init__(self, imagen) self.x = x self.y = y self.dx = 1 self.dy = 1 def actualizar(self): self.x += self.dx if self.x > 320 or self.x < -320: self.dx = -self.dx self.y += self.dy if self.y > 240 or self.y < -240: self.dy = -self.dy # Hasta ahora, hemos creado los puntos sin más. Si luego queremos hacer algo # con ellos, sería más interesante guardar un listado de lo creado. Para ello # es, precisamente, el concepto de Grupo. Vamos a crear, inicialmente, un grupo # vacío que luego contendrá a nuestros puntos. puntos = pilas.grupo.Grupo() def crear_punto(evento): # Ahora. además de crear un punto al hacer click con el ratón como hacíamos # antes, lo añadimos al grupo puntos.append(Punto(evento.x, evento.y)) # Vamos a mostrar una utilidad sencilla de tener la referencia de todos los # puntos creados. Vamos a definir una función que reaccione al pulsar una tecla # con todos los puntos a la vez. def reaccionar_tecla(evento): # Si se ha pulsado la tecla 'x', ponemos la coordenada x de todos los # puntos a cero. Fíjate lo fácil que es hacerlo con la referencia del grupo if evento.codigo == 'x': puntos.x = 0 # Si la tecla es 'y', hacemos lo propio con la coordenada y elif evento.codigo == 'y': puntos.y = 0 pilas.eventos.click_de_mouse.conectar(crear_punto) # Finalmente, falta conectar la nueva función con el evento de pulsar la tecla pilas.eventos.pulsa_tecla.conectar(reaccionar_tecla) pilas.ejecutar() TECNOLOGÍA DE LA INFORMACIÓN CURSO: 1 BACH
  • 6. ¿Qué es lo que tienes que hacer? Escribe cada uno de los programas, comprueba que funcionan y envíalos todos juntos a tu profesor. Para subir nota, como programa en un correo aparte, podrías hacer dos modificaciones más. En primer lugar, ¿sabrías conseguir que los puntos se movieran más deprisa? Hay dos formas, una de ellas muy simple, la otra requiere de algo de investigación. Y en segundo lugar, más complicado, ¿sabrías cambiar el color de cada punto en cada fotograma?... Recapitulación Esta práctica has visto cómo funciona la animación a base de fotogramas, has manejado las posiciones de los protagonistas mediante coordenadas y has trabajado con clases, objetos y grupos. Muchos conceptos, sí. Recuerda que puedes consultar la documentación y la wiki para encontrar más explicaciones. • ¿Controlas los diferentes tipos de eventos que hemos manejado? • ¿Hay visto las dos formas diferentes de emplear import? ¿Cómo afecta a randint()? • ¿Cómo se hace para crear una clase? ¿Y para crear una clase que derive de otra? • ¿Para qué se usa __init__()?¿Hay otros métodos especiales? • ¿Para qué se usa self ? ¿Qué diferencia self.x y x, por ejemplo? • ¿Qué representa el atributo codigo del evento? ¿Qué otros eventos y atributos hay? TECNOLOGÍA DE LA INFORMACIÓN CURSO: 1 BACH