Consejos útiles

Inicio WEB

Pin
Send
Share
Send
Send


Esta es la primera parte de la serie de tutoriales Pygame Game Development. Está destinado a programadores principiantes e intermedios que estén interesados ​​en crear juegos y mejorar sus propias habilidades de codificación en Python.

El código en las lecciones fue escrito en Python 3.7 y Pygame 1.9.6

Ciclo de juego

En el corazón de cada juego se encuentra un ciclo, que comúnmente se llama un "ciclo de juego". Comienza una y otra vez, haciendo todo lo posible para que el juego funcione. Cada ciclo en el juego se llama overs.

Suceden muchas cosas en cada cuadro, pero se pueden dividir en tres categorías:

  1. Procesamiento de entrada (eventos)

Se trata de todo lo que sucede fuera del juego, esos eventos a los que debe responder. Pueden ser pulsaciones de teclas en el teclado, clics del mouse, etc.

  1. Actualización del juego

Cambiando todo lo que necesita cambiar en un cuadro. Si el personaje está en el aire, la gravedad debería derribarlo. Si dos objetos se encuentran a gran velocidad, deben explotar.

  1. Renderizado (renderizado)

En este paso, todo se muestra en la pantalla: fondos, personajes, menús. Todo lo que el jugador debería ver aparece en la pantalla en el lugar correcto.

Tiempo

Otro aspecto importante del ciclo del juego es su velocidad. Muchos probablemente estén familiarizados con el término FPS, que significa cuadros por segundo (o cuadros por segundo). Indica cuántas veces se debe repetir el ciclo en un segundo. Es importante que el juego no sea demasiado lento o rápido. También es importante que el juego no funcione a diferentes velocidades en diferentes PC. Si un personaje necesita 10 segundos para cruzar la pantalla, estos 10 segundos deberían ser los mismos para todas las computadoras.

Crear una plantilla de Pygame

Ahora, sabiendo en qué elementos consiste el juego, puedes continuar con el proceso de escribir código. Debes comenzar creando el programa de pygame más simple, que solo abre una ventana y comienza el ciclo del juego. Este es el punto de partida para cualquier proyecto de pygame.

Al comienzo del programa, debe importar las bibliotecas necesarias y establecer las variables básicas de la configuración del juego:

A continuación, debes abrir la ventana del juego:

pygame.init () es un comando que ejecuta pygame. pantalla: una ventana de programa que se crea cuando establecemos su tamaño en la configuración. A continuación, debe crear un reloj para asegurarse de que el juego funciona con una velocidad de fotogramas determinada.

Ahora necesitas crear un bucle de juego:

Un bucle de juego es un bucle while controlado por la variable en ejecución. Si necesita completar el juego, solo necesita cambiar el valor de ejecución a Falso. Como resultado, el ciclo termina. Ahora puede llenar cada sección con código básico.

Sección de Renderizado (Renderizado)

Comencemos con la sección de dibujo. Todavía no hay caracteres, por lo que la pantalla puede llenarse de color sólido. Para hacer esto, debe comprender cómo la computadora procesa los colores.

Las pantallas de las computadoras están hechas de píxeles, cada uno de los cuales contiene 3 elementos: rojo, verde y azul. El color de un píxel está determinado por cómo se quema cada uno de los elementos:

Cada uno de los tres colores primarios puede tener un valor de 0 (apagado) a 255 (100% encendido), por lo que hay 256 opciones para cada elemento.

Puede averiguar el número total de colores que muestra una computadora multiplicando:

Ahora, sabiendo cómo funcionan los colores, puede configurarlos al comienzo de los programas:

Y después de eso, llena toda la pantalla.

Pero esto no es suficiente. La pantalla de la computadora no funciona así. Cambiar un píxel significa transmitir un comando a la tarjeta de video para que envíe el comando apropiado a la pantalla. Según los estándares de la computadora, este es un proceso muy lento. Si necesita dibujar muchas cosas en la pantalla, tomará mucho tiempo. Esto se puede solucionar de la manera original, que se llama doble búfer. Suena inusual, pero esto es lo que es.

Imagine que tiene un tablero de doble cara que puede rotar, mostrando uno u otro lado. Uno será una pantalla (lo que ve el jugador), y el segundo permanecerá oculto, solo una computadora puede "verlo". Con cada cuadro, el renderizado ocurrirá en la parte posterior del tablero. Cuando se completa el dibujo, el tablero gira y su contenido se muestra al jugador.

Esto significa que el proceso de renderizado ocurre una vez por cuadro, y no cuando se agrega cada elemento.

En pygame, esto sucede automáticamente cuando se completa el dibujo. Este comando se llama flip ():

Lo principal es hacer que la función flip () finalice. Si intenta dibujar algo después de la rotación, este contenido no aparecerá en la pantalla.

Sección de entrada (eventos)

Todavía no hay un juego, por lo que es difícil decir qué botones u otros controles serán necesarios. Pero debe configurar un evento importante. Si intenta ejecutar el programa ahora, quedará claro que no hay forma de cerrar la ventana. Hacer clic en la cruz en la esquina superior no es suficiente. Este también es un evento, y es necesario informar al programa para que lo lea y, en consecuencia, cierre el juego.

Los eventos ocurren todo el tiempo. ¿Qué pasa si el jugador presiona el botón de salto durante el renderizado? Esto no se puede ignorar, de lo contrario el jugador se sentirá decepcionado. Para esto, pygame guarda todos los eventos que ocurrieron desde el último fotograma. Incluso si el jugador presiona los botones, no se perderá ninguno de ellos. Se crea una lista y, con la ayuda del bucle for, puede recorrerlos todos.

Pygame tiene muchos eventos a los que puede responder. pygame.QUIT: un evento que comienza después de hacer clic en la cruz y pasa el valor False a la variable en ejecución, como resultado de lo cual finaliza el ciclo del juego.

Control de FPS

Hasta ahora, no hay nada que poner en la sección Actualización, pero debes asegurarte de que la configuración de FPS controle la velocidad del juego. Esto se puede hacer de la siguiente manera:

El comando tick () le pide a pygame que determine cuánto tiempo dura el ciclo y luego hace una pausa para que el ciclo (todo el marco) tome tiempo. Si establece el valor en FPS 30, esto significa que la longitud de un cuadro es 1/30, es decir, 0.03 segundos. Si el bucle de código (actualización, renderizado, etc.) toma 0.01 segundos, entonces pygame hará una pausa de 0.02 segundos.

Finalmente, debes asegurarte de que cuando finalice el ciclo del juego, se cierre la ventana del juego. Para hacer esto, coloque la función pygame.quit () al final del año. La plantilla final de pygame se verá así:

¡Hurra! Tienes una plantilla de pygame que funciona. Guárdelo en un archivo con un nombre descriptivo, por ejemplo, pygame_template.py, para que pueda usarlo cada vez que cree un nuevo proyecto de pygame.

En el siguiente manual, esta plantilla se utilizará como punto de partida para estudiar el proceso de dibujar objetos en la pantalla y su movimiento.

Una amplia gama de programas y diversas formas de capacitación.

La posibilidad de aprendizaje a distancia, aprendizaje a distancia 055-966-10-17

  • Programacion Lenguajes y tecnologías modernas.
  • Servicio de computadora personal.
  • Redes de computadoras. Protección de la información.
  • El internet. Planificación, creación de sitios web. Diseño, programación. CEO, promoción de sitios web en Internet.
  • Fundamentos de las tecnologías modernas de TI.

Nuestras ventajas

  • Nuestros programas de capacitación están dirigidos a un estudiante en particular. Puede estudiar de acuerdo con uno de los programas que se le ofrecen, o puede componer, ajustar y ajustar independientemente su programa de entrenamiento personal. El maestro y el consultor lo ayudan a navegar el material del curso al elegir un programa de capacitación.
  • Entrenamiento individual. El maestro lleva a cabo una lección solo para usted, enfocándose en sus capacidades, conocimiento y experiencia previos, velocidad de percepción de material nuevo.
  • Usted estudia en un momento conveniente para usted, en una forma conveniente para usted, se puede seleccionar un horario flexible de clases, de acuerdo con sus capacidades y deseos.
  • La formación se lleva a cabo de forma remota. Puedes estudiar sentado en tu computadora en casa o en el trabajo, sin perder el tiempo viajando a tu lugar de estudio.

Desarrollando juegos en Python 3 con PyGame / # 1 - Comenzando

Enlaces utiles:

Antes de explorar la biblioteca Pygame Vale la pena familiarizarse con el lenguaje de programación Python. Después de completar el curso básico, le será mucho más fácil comprender la sintaxis del idioma y no tendrá preguntas adicionales durante este curso.

Idioma Pitón Tiene muchas bibliotecas diferentes que lo hacen mucho más grande y lo complementan con todo tipo de funcionalidades. La mayoría de las acciones aburridas y repetitivas que realiza en el código podrían realizarse mucho más fácilmente si conociera esta o aquella biblioteca, ¡de las cuales realmente hay muchísimas!

La biblioteca Pygame Esta es una biblioteca especialmente diseñada para crear juegos con una interfaz en el idioma. Pitón. Durante este curso, aprenderemos cómo crear juegos 2D simples en el lenguaje Python (3 versiones). Crearemos un juego con animación, sprites (imágenes), funcionalidad y una interfaz gráfica.

La biblioteca en sí se lanzó hace mucho tiempo, aproximadamente 2000 años. Aplicaciones escritas en Pygame puede funcionar de manera segura en Android, así como en computadoras. Por lo tanto, puede crear juegos que funcionen en múltiples dispositivos, pero al mismo tiempo tengan el mismo código.

Basado en esta biblioteca, muchos juegos y aplicaciones ya se han construido. Puedes ver una gran lista de juegos populares en su sitio web oficial.

Módulos centrales de Pygame

ModuloCita
pygame.cdromAcceso y gestión de unidades de CD.
pygame.cursorsCarga imágenes del cursor
pygame.displayAcceso a la pantalla
pygame.drawDibuja formas, líneas y puntos.
pygame.eventGestión de eventos externos.
pygame.fontUtiliza fuentes del sistema
pygame.imageCarga y guarda una imagen
pygame.joystickUtiliza joysticks y dispositivos similares.
pygame.keyLee las pulsaciones del teclado
pygame.mixerDescarga y reproduce canciones
pygame.mouseControles del mouse
pygame.movieReproducción de archivos de video
pygame.musicFunciona con música y transmisión de audio.
pygame.overlayAcceda a video avanzado
pygameContiene funciones de alto nivel de Pygame
pygame.rectAdministra áreas rectangulares
pygame.sndarrayManipula datos de sonido
pygame.spriteGestión de películas
pygame.surfaceAdministra imágenes y pantalla
pygame.surfarrayManipula datos de píxeles de imagen
pygame.timemódulo de pygame para gestionar el tiempo y la velocidad de fotogramas
pygame.transformRedimensionar y mover imágenes

Ventana PyGame

Connect PyGame library

Ventana de juego: tamaño, posición

gameScreen = pygame.display.set_mode ((400, 300))

módulo os - posición de la ventana

Game loop, sal del juego

runGame = True # flag sale del ciclo del juego

Seguimiento de eventos: cerrar ventana

para evento en pygame.event.get ():

if event.type == pygame.QUIT: runGame = False

Sal del juego: pygame.quit ()

Carga de imagen

El módulo pygame.image le permite cargar una imagen desde un archivo y devuelve un objeto de tipo Surface.

pygame.image.load ("ruta del archivo")

cargar nueva imagen del archivo

Descargar imagen (ruta de archivo para Windows)

determinar ubicación

cargar un objeto Surface que contenga la imagen (myImage) cargada desde el archivo a la ubicación descrita en la pantalla (myRect)

Rect objeto

Pygame usa objetos Rect para almacenar y manipular áreas rectangulares. Rect se puede crear a partir de una combinación de valores izquierdo, superior, ancho y alto. Rect también se puede crear a partir de objetos de Python que ya son Rect o tienen un atributo llamado "rect".

Rect (izquierda, superior, wiph, altura) -> Rect

Rect ((izquierda, arriba), (wiph, altura)) -> Rect

Métodos de rectificación

pygame.Rect.copyDevuelve un nuevo rectángulo que tiene la misma posición y tamaño que el original.
pygame.Rect.moveDevuelve el nuevo rectángulo movido por este desplazamiento. Los argumentos x e y pueden ser cualquier valor entero, positivo o negativo.
pygame.Rect.move_ipIgual que el método Rect.move (), pero funciona en su lugar.
pygame.Rect.inflateaumentar o disminuir el tamaño del rectángulo en su lugar
pygame.Rect.inflate_ipaumentar o disminuir el tamaño del rectángulo en su lugar
pygame.Rect.clampmueve un rectángulo dentro de otro
pygame.Rect.clamp_ipmueve un rectángulo dentro de otro, en su lugar
pygame.Rect.cliprecortar un rectángulo dentro de otro
pygame.Rect.unionconecta dos rectángulos en uno
pygame.Rect.union_ipconecta dos rectángulos en uno, en su lugar
pygame.Rect.unionallunión de muchos rectángulos
pygame.Rect.unionall_ipla unión de muchos rectángulos en su lugar
pygame.Rect.fitcambiar el tamaño y mover el rectángulo teniendo en cuenta la relación de aspecto
pygame.Rect.normalizeajustar tamaños negativos
pygame.Rect.containscomprobar si un rectángulo está dentro de otro
pygame.Rect.collidepointcomprobar si el punto está dentro del rectángulo
pygame.Rect.colliderectprueba si dos rectángulos se cruzan
pygame.Rect.collidelistcomprobar si al menos un rectángulo en la lista se cruza
pygame.Rect.collidelistall¿todos los rectángulos en la lista se cruzan
pygame.Rect.collidedictverificar si un rectángulo en el diccionario se cruza
pygame.Rect.collidedictall¿todos los rectángulos en el diccionario se cruzan

Manejo de eventos

Un evento es cómo Pygame informa que algo sucedió fuera del código del programa. Los eventos se crean, por ejemplo, presionando el teclado, el mouse y se colocan en una cola, esperando el procesamiento.

La función get en el módulo pygame.event devuelve el último evento en espera en la cola y lo elimina de la cola.

Objeto de evento

módulo para procesar la cola de eventos

pygame.event.pumpSi no está utilizando otras funciones de evento en su juego, debe llamar a pygame.event.pump () para permitir que pygame maneje acciones internas
pygame.event.getrecibe eventos de la cola
pygame.event.pollobtener un evento de la cola
pygame.event.waitesperando un solo evento de la cola
pygame.event.peekverificar si las colas están esperando eventos de cierto tipo
pygame.event.cleareliminar todos los eventos de la cola
pygame.event.event_namedevuelve el nombre para el tipo de evento. La cadena está en estilo WordCap.
pygame.event.set_blockedcomprueba qué eventos no están permitidos en la cola
pygame.event.set_allowedcomprueba qué eventos están permitidos en la cola
pygame.event.get_blockedcomprobar si el tipo de evento está bloqueado de la cola
pygame.event.set_grabcomprueba el uso compartido del dispositivo de entrada con otras aplicaciones
pygame.event.get_grabverificar si el programa funciona en dispositivos de entrada de datos
pygame.event.postponer en cola un nuevo evento
pygame.event.Eventcrear un nuevo objeto de evento
pygame.event.EventTypeObjeto Python que representa un evento SDL. Las instancias de eventos personalizados se crean llamando a la función Evento. El tipo EventType no se puede llamar directamente. Las instancias EventType admiten la asignación y eliminación de atributos.

Pygame rastrea todos los mensajes de eventos a través de la cola de eventos. Los procedimientos en este módulo ayudan a administrar esta cola de eventos. La cola de entrada depende en gran medida del módulo de visualización de pygame. Si la pantalla no se ha inicializado y el modo de video no está configurado, la cola de eventos no funcionará.

Hay muchas formas de acceder a la cola de eventos. Simplemente verifique la existencia de eventos, agárrelos directamente de la pila.

pygame.mouse.get_pressedobtener el estado de los botones del mouse
pygame.mouse.get_posobtener la posición del cursor del mouse
pygame.mouse.get_relobtener el número de movimientos del mouse
pygame.mouse.set_posestablecer la posición del cursor del mouse
pygame.mouse.set_visibleocultar o mostrar el cursor del mouse
pygame.mouse.get_focusedcomprueba si la pantalla acepta la entrada del mouse
pygame.mouse.set_cursorestablecer imagen para el cursor del mouse
pygame.mouse.get_cursorobtener imagen para el cursor del mouse

Las funciones del mouse se pueden usar para obtener el estado actual del dispositivo del mouse. Estas funciones también pueden cambiar el cursor del mouse.

Cuando se configura el modo de visualización, la cola de eventos comenzará a recibir eventos del mouse. Los botones del mouse generan los eventos pygame.MOUSEBUTTONDOWN y pygame.MOUSEBUTTONUP cuando se presionan y se sueltan. Estos eventos contienen un atributo de botón que indica qué botón se presionó. La rueda del mouse generará eventos pygame.MOUSEBUTTONDOWN y pygame.MOUSEBUTTONUP al desplazarse.

Cuando se gira la rueda hacia arriba, el botón se establecerá en 4, abajo -5. Cada vez que se mueve el mouse, se dispara el evento pygame.MOUSEMOTION. El movimiento del mouse se divide en eventos de movimiento pequeños y precisos. A medida que mueva el mouse, se pondrán en cola muchos eventos de movimiento. Los eventos de movimiento del mouse que se borran incorrectamente de la cola de eventos son la razón principal por la que la cola de eventos está llena.

Un ejemplo Dibuje el cursor debajo de la posición actual del mouse.

Puede determinar en qué botón se hizo clic con el mouse utilizando el valor de event.button:

Un ejemplo Mueva la imagen con el cursor del mouse.

Teclado

Este módulo contiene funciones para trabajar con el teclado. La cola de eventos recibe los eventos pygame.KEYDOWN y pygame.KEYUP cuando presiona y suelta las teclas del teclado.

Ambos eventos tienen un atributo clave, que es un identificador entero que representa cada tecla en el teclado. El evento pygame.KEYDOWN tiene atributos adicionales: unicode y scancode. Unicode es una cadena de caracteres única que coincide con el carácter introducido. Scancode es un código específico de la plataforma.

Obtener código clave:

pressed_keys = pygame.key.get_pressed ()
si presionado_keys [K_SPACE]:
# La tecla de espacio ha sido presionada
fuego ()

Hay muchas constantes de teclado, se usan para representar las teclas del teclado. La siguiente es una lista de todas las constantes del teclado:

KeyasciiAsciiNombre común
K_BACKSPACE bretroceso
K_TAB tpestaña
K_CLEARclaro
K_RETURN rvolver
K_PAUSEpausa
K_ESCAPE^[escapar
K_SPACEespacio
K_EXCLAIM!exclamar
K_QUOTEDBL"citado
K_HASH#hash
K_DOLLAR$dolar
K_AMPERSAND&ampersand
K_QUOTEcita
K_LEFTPAREN(paréntesis izquierda
K_RIGHTPAREN)paréntesis derecha
K_ASTERISK*asterisco
K_PLUS+signo más
K_COMMA,coma
K_MINUS-minussign
K_PERIOD.periodo
K_SLASH/barra delantera
K_000
K_111
K_222
K_333
K_444
K_555
K_666
K_777
K_888
K_999
K_COLON:colon
K_SEMICOLON,punto y coma
K_ MENOSmenos de ese signo
K_EQUALS=signo igual
K_GREATER>mayor-señal
K_ PREGUNTA?signo de interrogación
K_AT@en
K_LEFTBRACKET[soporte izquierdo
K_BACKSLASHbarra invertida
K_RIGHTBRACKET]soporte derecho
K_CARET^caret
K_UNDERSCORE_subrayar
K_BACKQUOTE`tumba
K_aunun
K_bbb
K_ccc
K_ddd
K_eee
K_fff
K_ggg
K_hhh
K_iyoyo
K_jjj
K_kkk
K_lll
K_mmm
K_nnn
K_ooo
K_ppp
K_qqq
K_rrr
K_sss
K_ttt
K_ututu
K_vvv
K_www
K_xxx
K_yyy
K_zzz
K_DELETEeliminar
K_KP0teclado 0
K_KP1teclado1
K_KP2teclado2
K_KP3teclado3
K_KP4teclado4
K_KP5teclado5
K_KP6teclado6
K_KP7teclado7
K_KP8teclado8
K_KP9teclado9
K_KP_PERIOD.teclado numérico
K_KP_DIVIDE/teclado numérico
K_KP_MULTIPLY*teclado múltiple
K_KP_MINUS-teclado numérico
K_KP_PLUS+keypadplus
K_KP_ENTER rkeypadenter
K_KP_EQUALS=keypadequals
K_UPuparrow
K_DOWNdownarrow
K_RIGHTflecha derecha
K_LEFTleftarrow
K_INSERTinsertar
K_HOMEcasa
K_ENDend
K_PAGEUPpageup
K_PAGEDOWNpagedown
K_F1F1
K_F2F2
K_F3F3
K_F4F4
K_F5F5
K_F6F6
K_F7F7
K_F8F8
K_F9F9
K_F10F10
K_F11F11
K_F12F12
K_F13F13
K_F14F14
K_F15F15
K_NUMLOCKnumlock
K_CAPSLOCKcapslock
K_SCROLLOCKscrollock
K_RSHIFTrightshift
K_LSHIFTleftshift
K_RCTRLrightcontrol
K_LCTRLleftcontrol
K_RALTrightalt
K_LALTleftalt
K_RMETArightmeta
K_LMETAleftmeta
K_LSUPERleftWindowskey
K_RSUPERrightWindowskey
K_MODEmodeshift
K_HELPhelp
K_PRINTprintscreen
K_SYSREQsysrq
K_BREAKbreak
K_MENUmenu
K_POWERpower
K_EUROEuro

Направленное движение с помощью клавиш

Можно перемещать изображение на экране с клавиатуры, назначая клавиши для перемещений:

вверх, вниз, влево, вправо.

Создать картинку, например:

Проверить очередь событий:

Проверить, является ли полученное событие нажатием на клавиши со стрелками:

Если - да, то получмить код нажатой клавиши и сформировать новые координаты для картинки:

И нарисовать картинку в новом месте:

Управление временем

Когда создан объект clock, можно вызвать его функцию tick один раз за кадр,
которая возвращает время, прошедшее со времени предыдущего вызова в миллисекундах:

Функция tick может использовать необязательный параметр для установления максимальной частоты кадров. Этот параметр нужен, если игра запущена на рабочем компьютере и необходимо контролировать, чтобы она не использовала всю его вычислительная мощность на 100%:

# Игра будет работать со скоростью не более 30 кадров в секунду

time_passed = clock.tick (30)

Para controlar el módulo de sonido se utiliza pygame.mixer. Es responsable de cualquier acción con sonidos.

Descargue el archivo de sonido en formato * .wav

sonido = pygame.mixer.Sound ("sound.wav")
(cargar antes del ciclo del juego, porque es una operación muy larga)

Mira el video: Cómo crear una página web de inicio efectiva para tu negocio Homepage Diseño y Texto Persuasivo (Abril 2020).

Pin
Send
Share
Send
Send