Recordando juegos de la infancia, uso perfecto de Python para hacer guerras de aviones (Ye Qinghui~)

Nombre: El pequeño Dongdong de Ah Yue

Aprendizaje: Python, C/C++

Enlace del blog: blog de Xiaodongdong de Yue_CSDN blog-python&&c++ conocimiento avanzado, esencial para el Año Nuevo chino, blogger en el campo de la explicación del conocimiento de C/C++

Tabla de contenido

Instalación del paquete pygame

Agregar variable de entorno de python

Crear la ventana Airplane Wars

foto de avion

Extraer variables y funciones

Añade varios aviones enemigos

Libros recomendados en este número

resumen


Haz un juego hoy que todos deben haber jugado: Airplane Wars

Jugabilidad: El jugador controla un avión, que se encuentra en la parte media e inferior de la ventana al principio.
La posición del avión del jugador se moverá con la posición del mouse.
Al hacer clic con el mouse, el avión del jugador dispara balas.
Los aviones enemigos aparecen constantemente sobre la pantalla y se mueven hacia abajo.
Si la bala del jugador golpea un avión enemigo, el avión enemigo se despeja

Instalación del paquete pygame

  • La primera forma: Archivo —> Configuración—> Proyecto: Nombre del proyecto—>Python interpret–> Vaya a + haga clic debajo de la lista de módulos del intérprete—>Consulte el módulo que se instalará—>Haga clic en Instalar paquete a continuación
  • La segunda forma: haga clic en el terminal debajo de pycharm para abrir el terminal, use la lista pip para ver la lista de módulos del intérprete, si hay pygame, prueba que la instalación fue exitosa, si no, ingrese pip install pygame para instalar
  • Nota: si el pip de advertencia no es la última versión, ignóralo

Agregar variable de entorno de python

(​不是内部或外部命令,也不是可运行的程序 或批处理文件。​ No marqué agregar a la ruta al instalar el intérprete)

  • Agregue manualmente el proceso de variable de entorno:
  • Haga clic derecho en esta computadora, propiedades
  • En propiedades seleccione configuración avanzada del sistema
  • Haga clic en el botón Variables de entorno
  • Haga doble clic en Ruta en la variable de entorno del sistema.
  • Busque la carpeta donde se encuentra su intérprete: (puede usar la búsqueda global para encontrar el archivo python.exe)
  • Haga clic en Nuevo para agregar la ruta a la variable de entorno.
  • Luego busque el directorio Script en la ruta donde se encuentra python.exe y continúe agregando la ruta a la variable de entorno
  • Pruebe si python y pip se pueden usar normalmente (si se ejecuta en la terminal, la variable de entorno no tendrá efecto hasta que se reinicie la terminal)

Crear la ventana Airplane Wars

Al refrescar la ventana, también debemos obtener continuamente información de la operación del usuario. Si queremos obtener
    todos los eventos de la ventana (los eventos son operaciones realizadas por el usuario) podemos usar evnet
    . El valor de retorno del método actual es una lista, que obtiene internamente todos los eventos de la ventana (clic del usuario, movimiento del mouse, clic del botón de cierre, etc.)
    podemos hacer diferentes comentarios de acuerdo con diferentes eventos, como SALIR para salir del programa

# 创建窗口
window = pygame.display.set_mode((512, 768))

# 为了让窗口不会立即关闭,而是等待我们的操作,需要循环刷新窗口
while True:
    # 刷新窗口内容的命令
    pygame.display.update()
 
    # print(pygame.event.get())
    for event in pygame.event.get():
        if event.type == pygame.locals.QUIT:
            exit('退出游戏')

foto de avion

¡Ve a buscarlo tú mismo! !

Extraer variables y funciones

# TODO: Extraer constantes y variables
# Reflexión: ¿Es más conveniente que las variables se manejen de manera uniforme o descentralizada?Gestión unificada
# ¿Existe una unidad para los números que aparecen en el código, como manzanas = 5 En este momento, existe ¿peso o número? ?? No está claro
# Para aumentar la legibilidad del código y minimizar los números mágicos que aparecen en el programa, los números mágicos se pueden extraer y aparecer como constantes. #
En programación, las variables que no se pueden modificar generalmente son llamadas constantes, y Python en sí mismo. No hay una constante, por lo que usamos las mayúsculas del identificador para anotar la constante
#. Pero esta constante se puede modificar, solo para recordarle al coordinador o a la persona que llama al módulo que se trata de una constante.

# 导入pygame模块
import pygame
import pygame.locals


# 抽取常量
WINDOW_WIDTH = 512  # 窗口宽度
WINDOW_HEIGHT = 768  # 窗口高度

# 创建全局变量
background_x = 0
background_y = 0

# 创建窗口
# window = pygame.display.set_mode((512, 768))
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

# # 加载背景图片
# background_img = pygame.image.load('res/img_bg_level_2.jpg')
# # 将图片添加到窗口中
# window.blit(background_img, (0, 0))

# TODO: 抽取函数
# 函数一般就是一个特定的功能,完整的功能保存到函数中进行调用即可

# 移动背景图片
def move_background():
 
    global background_y
    global background_x

    # 加载背景图片(自己照照片)
    background_img = pygame.image.load('res/img_bg_level_2.jpg')

    # 让背景图片进行移动
    window.blit(background_img, (background_x, background_y))
    # 添加辅助背景
    window.blit(background_img, (background_x, background_y - WINDOW_HEIGHT))
    # 循环移动
    if background_y >= WINDOW_HEIGHT:
        background_y = 0
    else:
        background_y += 1

# 获取窗口事件
def get_window_event():
    """获取所有的窗口事件,并且进行处理"""
    # 获取关闭窗口事件
    for event in pygame.event.get():
        if event.type == pygame.locals.QUIT:
            exit('退出游戏')


while True:
    # # 让背景图片进行移动
    # window.blit(background_img, (background_x, background_y))
    # # 添加辅助背景
    # window.blit(background_img, (background_x, background_y - WINDOW_HEIGHT))
    # # 循环移动
    # if background_y >= WINDOW_HEIGHT:
    #     background_y = 0
    # else:
    #     background_y += 1
    # TODO: 调用移动背景的方法
    move_background()

    # 刷新窗口内容的命令
    pygame.display.update()
    # 获取关闭窗口事件
    # for event in pygame.event.get():
    #     if event.type == pygame.locals.QUIT:
    #         exit('退出游戏')
    # TODO: 调用获取事件的方法
    get_window_event()

Añade varios aviones enemigos

    #Mover el avión enemigo
    # Para hacer que el avión enemigo tenga un efecto de picado, deje que el avión enemigo se mueva más rápido que la velocidad de movimiento de la imagen de fondo
    #enemigo_y += 2
    # Cuando el avión enemigo sale de la pantalla, no lo hacemos necesitamos mostrarlo más, para reutilizar la variable de aeronave enemiga
    # Cuando la aeronave enemiga excede el rango de la pantalla, restaurar la aeronave enemiga a su posición original (si queremos que la aeronave enemiga tenga el efecto de ingresar a la pantalla,
    # necesita establecer la posición inicial del avión enemigo en la pantalla Exterior, en este momento la altura del avión enemigo cuyo valor y debe ser negativo en el lado izquierdo de la posición inicial)

# 导入pygame模块
import random

import pygame
import pygame.locals

# 抽取常量
WINDOW_WIDTH = 512  # 窗口宽度
WINDOW_HEIGHT = 768  # 窗口高度

ENEMY_WIDTH = 100  # 敌机宽度
ENEMY_HEIGHT = 68  # 敌机高度

# 创建全局变量
background_x = 0
background_y = 0



# 创建窗口
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))


# TODO: 初始化敌机的函数
def init_enemy_list():
    global enemy_list
    # 循环多少次就有多少架敌机
    for i in range(5):
        enemy_list.append(
            {'x': random.randint(0, WINDOW_WIDTH - ENEMY_WIDTH),
             'y': -ENEMY_HEIGHT,
             'speed': random.randint(2, 4)
             }
        )


# 移动背景图片
def move_background():
    """可以滚动显示背景图片"""
    # 如果想要在函数体内部修改全局变量的值,需要声明全局变量才可以
    global background_y
    global background_x

    # 加载背景图片
    background_img = pygame.image.load('res/img_bg_level_2.jpg')
    # 让背景图片进行移动
    window.blit(background_img, (background_x, background_y))
    # 添加辅助背景
    window.blit(background_img, (background_x, background_y - WINDOW_HEIGHT))
    # 循环移动
    if background_y >= WINDOW_HEIGHT:
        background_y = 0
    else:
        background_y += 1


# 添加并移动敌机
# TODO: 将每一架敌机数据组成的字典传递进来
# TODO: 将所有的敌机的x,y,speed 用字典中的数据进行替换
def move_enemy(enemy_dict):
    """添加敌机并且移动敌机的函数"""
    # 声明全局变量
    # global enemy_x
    # global enemy_y
    # global enemy_speed
    # 加载敌机图片
    # TODO: 随机加载飞机图片
    # 如果想要随机加载敌机图片,就对敌机的路径进行随机从plane1- plane7
    # 课下感兴趣的同学自己完成
    enemy_img = pygame.image.load('res/img-plane_1.png')
    # 在窗口上显示敌机
    window.blit(enemy_img, (enemy_dict['x'], enemy_dict['y']))

    if enemy_dict['y'] >= WINDOW_HEIGHT:
        enemy_dict['y'] = -ENEMY_HEIGHT
        # 每次进入屏幕时都会重置x的值
        enemy_dict['x'] = random.randint(0, WINDOW_WIDTH - ENEMY_WIDTH)
        # 每次重新进入屏幕时,重置速度值
        enemy_dict['speed'] = random.randint(2, 4)
    else:
        enemy_dict['y'] += enemy_dict['speed']
    # 思考如果每次敌机都从一个位置出现未免太过死板游戏过于简单,所以要将敌机出现的位置x坐标设置为随机值


# 获取窗口事件
def get_window_event():
    """获取所有的窗口事件,并且进行处理"""
    for event in pygame.event.get():
        # 获取关闭窗口事件
        if event.type == pygame.locals.QUIT:
            exit('退出游戏')


if __name__ == '__main__':
    # TODO: 调用函数初始化敌机数据
    init_enemy_list()
    while True:
        # 调用移动背景的方法
        move_background()
        # TODO: 如果想要添加多架敌机,要么在函数中进行循环,要么执行多次添加一架敌机的方法,我们选择后者
        for enemy in enemy_list:
            move_enemy(enemy)
        # 刷新窗口内容的命令
        pygame.display.update()
        # 调用获取事件的方法
        get_window_event()


Libros recomendados en este número

Python desde la entrada hasta la competencia

Método de participación: me gusta + seguir + comentar: la vida es demasiado corta, ¡uso Python! (de lo contrario no es válido)

Fecha límite: 20:00 el 16 de junio

"Python from Beginner to Master (Micro Lesson Compiled Edition)" utiliza un lenguaje fácil de entender y casos enriquecidos, y presenta el conocimiento de programación y las habilidades de aplicación del lenguaje Python en detalle. El libro tiene 24 capítulos, que incluyen el entorno de desarrollo de Python, variables y tipos de datos, expresiones, estructuras de programas, secuencias, diccionarios y conjuntos, cadenas, expresiones regulares, funciones, clases, módulos, manejo de excepciones y depuración de programas, procesos y subprocesos, operación de archivos , operación de base de datos, programación de interfaz gráfica, programación de red, programación web, rastreador web, procesamiento de datos, etc., y también presenta una serie de proyectos prácticos integrales en detalle. Entre ellos, el Capítulo 24 es el desarrollo en línea del proyecto extendido, que es un capítulo de contenido en línea puro. La estructura del libro es completa, los puntos de conocimiento se combinan con ejemplos y está equipado con casos prácticos, que es altamente operable. La mayoría de los códigos fuente de los ejemplos tienen anotaciones detalladas, los lectores pueden aprender fácilmente y comenzar rápidamente. . Este libro adopta el modo de enseñanza O2O, colaboración en línea y fuera de línea, basado en contenido en papel y, al mismo tiempo, amplía contenido en línea más valioso. Los lectores pueden leer rápidamente, ampliar conocimientos y ampliar sus horizontes al escanear WeChat con sus teléfonos móviles. Obtener experiencia de combate adicional. 

resumen

En este capítulo, aprendimos el módulo pygame utilizado para desarrollar juegos en Python, entendimos la lógica del código común de los juegos 2D y demostramos cómo desarrollar un juego de "guerra de aviones". En este juego, hemos utilizado el conocimiento que hemos aprendido antes, como juicio condicional, bucle, lista, función, módulo, orientado a objetos, etc., y también aprendimos el bucle principal y la respuesta a eventos del desarrollo de pygame. dijo que es una comprensión básica de Python, una aplicación integral del conocimiento.
 

Supongo que te gusta

Origin blog.csdn.net/m0_64122244/article/details/131196612
Recomendado
Clasificación