¿Cómo imprimir una posición Go colorida usando la función de impresión estándar de Python?

Aunque la función de impresión es la primera función estándar de Python que encuentran los principiantes, muchas personas realmente no la entienden. Una vez demostré algunas habilidades prácticas de la función de impresión en el artículo "Tres efectos especiales realizados por la función de impresión ()" , que fue elogiado con entusiasmo por los lectores. Hoy, les presentaré otra técnica de la función de impresión: imprimir texto y patrones en color, y al final definir una función para imprimir la posición Ir, puede imprimir el efecto como la imagen de abajo.

Inserte la descripción de la imagen aquí

Después de todo, en el modo de texto, la función de impresión admite menos colores, solo 8 colores, como se muestra en la siguiente tabla.

Código de primer plano Código de fondo color
30 40 negro
31 41 rojo
32 42 verde
33 43 amarillo
34 44 azul
35 45 púrpura
36 46 verde
37 47 Blanco

imprimir admite los siguientes modos de visualización:

  • 0-predeterminado
  • 1-destacado
  • 4 subrayado
  • 5 destellos
  • 7-blanco inverso
  • 8-piel
  • 22-Ir a destacar
  • 24-Go subrayado
  • 25-Deblink
  • 27-Ir a destacar
  • 28-ve a esconderte

Cuando se utiliza la función de impresión para imprimir texto o patrones en color, cada línea comienza con el prefijo "\ 033 [", seguido del modo de visualización, el color de primer plano y el color de fondo, separados por un punto y coma, seguido de una letra minúscula "m". Después de mostrar el contenido, generalmente termina con el sufijo "\ 033 [0m".

print("\033[0;31;47m" + "默认模式,白底红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")

El efecto de visualización del código anterior se muestra en la siguiente figura.
Inserte la descripción de la imagen aquí

Sin embargo, si está ejecutando en un entorno Windows, se estima que este resultado esperado no aparecerá. Supongo que este debería ser un error muy extraño y difícil de resolver en Python, que ha sido el caso desde la era Py2. La solución también es muy extraña, usar la función del sistema del módulo del sistema operativo para ejecutar un comando vacío una vez está bien. el código se muestra a continuación:

import os
os.system('')

print("\033[0;31;47m" + "默认模式,白底红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")

Bien, después de completar los conocimientos previos, es hora de imprimir una posición Go colorida. Estamos de acuerdo en que la posición Go está representada por una matriz NumPy bidimensional. Usamos 0x25cf, 0x25cb y 0x253c en el juego de caracteres Unicode para representar negro, blanco y vacío Las esquinas también usan sus símbolos correspondientes. Este símbolo se puede mostrar de forma intuitiva en IDLE.

>>> chr(0x25cf)
'●'
>>> chr(0x25cb)
'○'
>>> chr(0x253c)
'┼'
>>> chr(0x250c)
'┌'
>>> chr(0x2510)
'┐'

A continuación, utilizando los puntos de conocimiento anteriores, puede escribir una función para imprimir la posición Ir.

import numpy as np
import os
os.system('')

def show_phase(phase):
    """显示局面"""
    
    for i in range(19):
        for j in range(19):
            if phase[i,j] == 1: 
                chessman = chr(0x25cf)
            elif phase[i,j] == 2:
                chessman = chr(0x25cb)
            elif phase[i,j] == 9:
                chessman = chr(0x2606)
            else:
                if i == 0:
                    if j == 0:
                        chessman = '%s '%chr(0x250c)
                    elif j == 18:
                        chessman = '%s '%chr(0x2510)
                    else:
                        chessman = '%s '%chr(0x252c)
                elif i == 18:
                    if j == 0:
                        chessman = '%s '%chr(0x2514)
                    elif j == 18:
                        chessman = '%s '%chr(0x2518)
                    else:
                        chessman = '%s '%chr(0x2534)
                elif j == 0:
                    chessman = '%s '%chr(0x251c)
                elif j == 18:
                    chessman = '%s '%chr(0x2524)
                else:
                    chessman = '%s '%chr(0x253c)
            print('\033[0;30;43m' + chessman + '\033[0m', end='')
        print()

if __name__ == '__main__':
    phase = np.array([
        [0,0,2,1,1,0,1,1,1,2,0,2,0,2,1,0,1,0,0],
        [0,0,2,1,0,1,1,1,2,0,2,0,2,2,1,1,1,0,0],
        [0,0,2,1,1,0,0,1,2,2,0,2,0,2,1,0,1,0,0],
        [0,2,1,0,1,1,0,1,2,0,2,2,2,0,2,1,0,1,0],
        [0,2,1,1,0,1,1,2,2,2,2,0,0,2,2,1,0,1,0],
        [0,0,2,1,1,1,1,2,0,2,0,2,0,0,2,1,0,0,0],
        [0,0,2,2,2,2,1,2,2,0,0,0,0,0,2,1,0,0,0],
        [2,2,2,0,0,0,2,1,1,2,0,2,0,0,2,1,0,0,0],
        [1,1,2,0,0,0,2,2,1,2,0,0,0,0,2,1,0,0,0],
        [1,0,1,2,0,2,1,1,1,1,2,2,2,0,2,1,1,1,1],
        [0,1,1,2,0,2,1,0,0,0,1,2,0,2,2,1,0,0,1],
        [1,1,2,2,2,2,2,1,0,0,1,2,2,0,2,1,0,0,0],
        [2,2,0,2,2,0,2,1,0,0,1,2,0,2,2,2,1,0,0],
        [0,2,0,0,0,0,2,1,0,1,1,2,2,0,2,1,0,0,0],
        [0,2,0,0,0,2,1,0,0,1,0,1,1,2,2,1,0,0,0],
        [0,0,2,0,2,2,1,1,1,1,0,1,0,1,1,0,0,0,0],
        [0,2,2,0,2,1,0,0,0,0,1,0,0,0,0,1,1,0,0],
        [0,0,2,0,2,1,0,1,1,0,0,1,0,1,0,1,0,0,0],
        [0,0,0,2,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0]
    ], dtype=np.ubyte)
    
    show_phase(phase)

Supongo que te gusta

Origin blog.csdn.net/xufive/article/details/112363412
Recomendado
Clasificación