Juega con serpientes Iniciación a PyGame Miguel de Dios Brecha digital (Vallekas)
Índice Videojuegos como herramienta social. 2011 - 2017 Python (Introducción) ¿Cómo se escribe en Python? Variables Bucles Funciones Pygame ¿Porqué Pygame? Imágenes (Sprites) Sonido Joystick/Teclado y ratón Fuentes de texto Conceptos básicos y generales en videojuegos A programar
Videojuegos como herramienta social. ¿??¿¿?¿???
Videojuegos como herramienta social.
Videojuegos como herramienta social. Matanza cofrade En 2002, el autor fue acusado formalmente por la hermandad del Cristo del Gran Poder tras conocer la intención del grupo "Narco" de distribuir el videojuego.
Videojuegos como herramienta social.
Videojuegos como herramienta social.
Videojuegos como herramienta social.
Videojuegos como herramienta social.
Videojuegos como herramienta social.
2011 - 2017
2011 - 2017
Lenguaje de programación Lenguaje libre de programación Lenguaje interpretado Nació en 1991 Versión actual 2.7, versión en desarrollo 3.0 “Forma rara de escribir”
C Python #include <stdio.h> void hola(void); int main(int argc, char *argv[]) { hola(); return 0; } void hola(void) printf ("Hola mundo\n"); Python #!/usr/bin/python def hola(): print("Hola Mundo") hola()
Como se escribe en Python Los “bloques de código” se tabulan (con espacios o tabuladores) (pero con razón) Instrucción pass es tu amiga. Las lineas no terminan con ; ...bueno se pueden usar para poner lineas en una linea.... Para cortar una linea larga se usa \ Todos los loops, funciones, métodos, clases y sentencias condicionales terminan en : Los comentarios de una linea comienzan con # y los múltilinea se meten entre """ """ ... def factorial(n): if n == 1: return 1 else: m = n * factorial(n – 1) return m factorial(100) ... factura = panes * 1.00 + \ Patatas * 3.50 + lechugas * 5
Variables Las variables se definen de forma dinámica. Tipo Notas Ejemplo Cadena Mutable 'Cadena' u'Cadena' “Cadena” “””Una cadena Larga y Fea””” Número entero 42 456966786151987643L Booleano True o False Lista (array clásico) [4.0, 'Cadena', True] Tupla (array clásico) Inmutable (4.0, 'Cadena', True) Diccionario (array asociativo) {'key1': 1.0, 'key2': False} Operadores todos excepto ++ y -- (se puede sustituir por a += 1), el “mod” es // y el exponente es ** . Operadores lógicos en humano (“and”, “or”, “not”) Operador lógico especial “is” que vale para testear si algo es “None” o el mismo objeto. Operador lógico especial “in” para testear si un valor esta dentro de un array. Convertir con: int(), str() o float() No hay punteros pero para objetos se puede usar el “None” que es como un “Null”
Bucles Bucle for (foreach) Bucle for Bucle while Sentencia condicional ... lista = ["a", "b", "c"] for i in lista: print(i) ... b = 10 for i in range(0, b): print(i) Bucle while ... numero = 0 while numero < 10: numero += 1 print(numero) Sentencia condicional ... donde_estoy = "Madrid" if donde_estoy == "Madrid": print("Buenos días") elif donde_estoy == "Barcelona": print("Bons dies") elif donde_estoy == "Bilbo": print("Egun on") else: print("Good Morning") No hay sentencia condicional switch.
Funciones Acepta numero variable de argumentos. ... def suma(a = 1, b = 2, c = 3) return a + b + c a = 10 b = 20 c = 30 print(suma(a, b, c)) print(suma(1, a)) print(suma(c = 10, a = a)) print(suma()) Acepta numero variable de argumentos. Los argumentos se pasan por valor (excepto los mutables arrays). Se puede cambiar el orden de los argumentos. Se puede dejar abierto el numero de argumentos. ... def funcion_varargs1(*array) : print "Array \t" + str(array) for var in array: print(var) def function_varargs2(**array_asociativo): print "Array asociativo \t" + str(array_asociativo) for indice, valor in array_asociativo.items(): print(str(indice) + " " + str(valor)) funcion_varargs1(1,2,3) funcion_varargs2(a = 2, b = 2, c = 2)
Conjunto de módulos (librerías) para Python Basado en LibSDL. Múltiplataforma (donde funcione Python y LibSDL funciona) Ofrece fácil acceso a: 2D Sprites/Colisiones CDRom/Sonido/Música/Midi Teclado/Ratón/Joystick Fuentes Webcam (experimental) Efectos gráficos (básico) Formas geométricas (básico) Vídeo (básico) (Python 3 NO) NO ofrece: Red 3D (aunque si a través de OpenGL) Físicas
¿Porqué Pygame? Comparación muy “superficial” con otros “engines”. Porque es Libre. Unity es mas potente pero es Privativo. 2017 TENEMOS GODOT Porque se programa en Python. LöVE es mas completo pero es en el LUA. Fenix / Bennu se programa en....Div2. Porque es un proyecto maduro. Cocos2 es un proyecto muy nuevo. Screenshots de los juegos/proyectos listados en PyGame.org desde el año 2001 al año 2009. Un total de 1100.
Imágenes (Sprites) Trae un sistema básico (Surfaces) y la forma mas de alto nivel (Sprites). Surfaces: Cargar Copiar Pegar Modificar Ficheros soportados: JPG PNG GIF (non animated) BMP PCX TGA (uncompressed) TIF LBM (and PBM) PBM (and PGM, PPM) XPM Sprites: Cargar Copiar Pegar Modificar Colisiones Posición
Sonido Esta dividido en varios subobjectos: pygame.mixer.music - música de fondo pygame.midi pygame.mixer - “sonidos pequeños” pygame.cdrom Soporta mp3, wav, ogg y midi.
Joystick/Teclado y ratón El acceso a estos es a traves de los eventos pygame.event.Event. KEYDOWN unicode, key, mod KEYUP key, mod MOUSEMOTION pos, rel, buttons MOUSEBUTTONUP pos, button MOUSEBUTTONDOWN pos, button JOYAXISMOTION joy, axis, value JOYBALLMOTION joy, ball, rel JOYHATMOTION joy, hat, value JOYBUTTONUP joy, button JOYBUTTONDOWN joy, button O se puede consultar el estado de ellos. pygame.mouse.get_pos(): return (x, y)
Fuentes de texto Soporta: Fuentes TTF Unicode (si la fuente TTF tiene los caracteres) No soporta: Texto enriquecido (en medio texto una negrita) Texto html Uso: Carga una fuente (del sistema) o fichero. Usa el objeto fuente para renderizar texto como sufarce (imagenes)
Conceptos básicos y generales en videojuegos Colisión de sprites: Areas Cuadradas (Rápido) Subareas cuadradas (Rápido) Circunferencias (Rápido) Pixel perfect (Lento) Físicas
Conceptos básicos y generales en videojuegos Tiles, los mosaicos.
Conceptos básicos y generales en videojuegos Sprites Animar paso a paso.
A programar Ejemplos Remake simple...simple del Snake. Ejemplo muy muy simple de Tiles y colisiones
Miguel de Dios TRES.14159@GMAIL.COM Links de interes. http://www.pixfans.com/videojuegos-e-ideologia-el-caso-de-molleindustria/ http://pygame.org https://godotengine.org/ http://www.pyweek.org/ Miguel de Dios TRES.14159@GMAIL.COM http://tomatesasesinos.com