Caso de desarrollo del proyecto Python (2) ———— Juego simple de Gomoku (versión de consola)

2. Juego simple de Gomoku (versión de consola)

2.1 Análisis de demanda

El juego Gobang desarrollado en esta sección es una versión de consola, por lo que el juego debe tener las siguientes funciones:

  • El tablero de ajedrez se puede imprimir cíclicamente;
  • Puedes jugar de forma independiente;
  • Cuando uno de los dos lados gane, imprima el tablero de la victoria y el ganador;
  • Determine si la pieza de ajedrez excede el rango del tablero de ajedrez;
  • Determine si hay una pieza de ajedrez en la posición de coordenadas especificada;
  • La interfaz es hermosa y las indicaciones son obvias.

2.2 Diseño de juegos

2.2.1 Estructura de la función del juego

2.2.2 Proceso empresarial del juego

        El proceso comercial del juego Gobang simple (versión de consola) se muestra en la siguiente figura.

2.3 Fundamentos para el desarrollo de juegos

2.3.1 Entorno de desarrollo de juegos

El desarrollo y el entorno operativo de este juego son los siguientes:

  • Sistema operativo: Windows7, Windows10, etc.;
  • Versión de Python: Python3.7;
  • Herramientas de desarrollo: Pycharm.

2.3.2 Estructura de organización de carpetas

        El juego simple de gobang (versión de consola) tiene solo un archivo gobang.py, que representa el archivo de código del software, y todos los códigos que implementan la lógica de gobang están en este archivo.

2.4 Configuración del tablero de ajedrez

2.4.1 Proceso de implementación de la configuración de la junta

        El proceso de implementación de la configuración de la placa y las tecnologías clave utilizadas se muestran en la figura.

2.4.2 Inicializar el tablero de ajedrez

        Al desarrollar un juego de gomoku, primero debes inicializar el tablero. El tablero de gomoku es similar a una lista bidimensional. Por lo tanto, en este programa, se usa una lista bidimensional llamada tablero para almacenar el tablero gomoku. El código es el siguiente:

finish = False  #游戏是否结束
flagNum = 1     #当前下棋者标记
flagch = 'a'    #当前下棋者棋子
x = 0           #当前棋子的横坐标
y = 0           #当前棋子的纵坐标
print('\033[1;37;41m------------简易五子棋游戏(控制台版)---------\033[0m')
#棋盘初始化
checkerboard=[]
for i in range(10):
    checkerboard.append([])
    for j in range(10):
        checkerboard[i].append('-')

2.4.3 Imprimir tablero de ajedrez

        Para jugar al ajedrez en el juego Gobang, el usuario primero debe mostrar el tablero de Gobang. Dado que este programa es un programa de consola, seleccione directamente el archivo gobang, py en Pycharn y haga clic en el \ tiny \ trianglerightbotón en la esquina superior derecha de la interfaz de Pycharn para controlarlo en Pycharn Taichung muestra un tablero de ajedrez.

        La sección 2.4.2 ha inicializado el tablero Gomoku, y el siguiente trabajo solo necesita imprimirlo. Aquí, un bucle for anidado se usa para atravesar la lista bidimensional que almacena el tablero Gomoku, y luego atravesará los elementos una vez. Solo salida. el código se muestra a continuación:

#打印棋盘
print("\033[1;30;46m-----------------------")
print("  1 2 3 4 5 6 7 8 9 10")                #输出行标号
for i in range(len(checkerboard)):
    print(chr(i+ord('A'))+"",end='');          #输出列标号
    for j in range(len(checkerboard[i])):
        print(checkerboard[i][j]+"",end='')
    print()                                    #换行
print("--------------------------------\033[0m")

2.4.4 Imprime el tablero de la victoria y el ganador

        Al jugar el juego de Gobang, si una de las partes gana, se imprime el tablero final y sale el ganador.

        Defina una función msg () para generar el tablero de victoria final y el ganador. En esta función, el bucle for anidado se usa principalmente para generar el tablero de backgammon de victoria final, y el resultado del ganador se logra juzgando el valor de la variable flagNum. El código de implementación de la función msg () es el siguiente:

def mag():
    #输出最后胜利的棋盘
    print("\033[1;37;41m--------------------------")
    print(" 1 2 3 4 5 6 7 8 9 10")
    for i in range(len(checkerboard)):
        print(chr(i+ord('A'))+"",end='')
        for j in range(len(checkerboard[i])):
            print(checkerboard[i][j]+"",end='')
        print()
    print("--------------------------\033[0m")
    #输出赢家
    if(flagNum == 1):
       print('\033[32m*棋胜利!***\033[0m')
    else:
       print('\033[32mo棋胜利!***\033[0m')

2.4.5 Establecer diferentes fuentes y colores de fondo para la consola

2.5 algoritmo de Gobang

2.5.1 Análisis del algoritmo de Gobang

        La regla de juego de Gobang es encontrar el mismo tipo de piezas en ocho direcciones con el punto de entrada como centro. Si el número de las mismas piezas es mayor o igual a 5, significa que el jugador de este tipo de pieza es el ganador. La dirección de búsqueda de las piezas de gobang se muestra en la figura.

                                                                  Figura 1 Determine la forma de una pieza de ajedrez colocada en ocho direcciones

2.5.2 Determinar la dirección hacia arriba, abajo, izquierda y derecha de una pieza de ajedrez

        Juzgar la dirección arriba, abajo, izquierda y derecha de la pieza de ajedrez, principalmente para juzgar si las cuatro piezas adyacentes a la coordenada X o la coordenada Y de la pieza de ajedrez son piezas de ajedrez del mismo color, si es así, establezca la bandera de finalización en Verdadero, lo que significa el final Juegue al ajedrez en un bucle y luego llame a la función msg () para imprimir el tablero ganador y el ganador. el código se muestra a continuación:

#判断棋子左侧
if(y - 4 >= 0):
   if(checkerboard[x][y-1] == flagch
           and checkerboard[x][y-2] == flagch
           and checkerboard[x][y-3] == flagch
           and checkerboard[x][y-4] == flagch):
      finish = True
      msg()


#判断棋子右侧
if(y + 4 <= 9):
   if(checkerboard[x][y+1] == flagch
          and checkerboard[x][y+2] == flagch
          and checkerboard[x][y+3] == flagch
          and checkerboard[x][y+4] == flagch):
      finish = True
      msg()

#判断棋子上方
if(x - 4 >= 0):
   if(checkerboard[x-1][y] == flagch
          and checkerboard[x-2][y] == flagch
          and checkerboard[x-3][y] == flagch
          and checkerboard[x-4][y] == flagch):
      finish = True
      msg()

#判断棋子下方
if(x + 4 <= 9):
   if(checkerboard[x+1][y] == flagch
          and checkerboard[x+2][y] == flagch
          and checkerboard[x+3][y] == flagch
          and checkerboard[x+4][y] == flagch):
      finish = True
      msg()

2.5.3 Determinar la dirección diagonal de una pieza de ajedrez

        Para determinar la dirección diagonal de una pieza de ajedrez, es principalmente para determinar si las 4 piezas de ajedrez adyacentes a las coordenadas de la pieza de ajedrez en la diagonal son piezas del mismo color. Si es así, establezca la bandera de llegada en Verdadero, es decir, finalice el ciclo de ajedrez y luego llame La función msg () imprime el tablero de la victoria y el ganador. el código se muestra a continuación:

#判断棋子右上方向
if(x - 4 >= 0 and y-4 >=0):
   if(checkerboard[x-1][y-1] == flagch
          and checkerboard[x-2][y-2] == flagch
          and checkerboard[x-3][y-3] == flagch
          and checkerboard[x-4][y-4] == flagch):
      finish = True
      msg()

#判断棋子右下方向
if(x + 4 <= 9 and y-4 >=0):
   if(checkerboard[x+1][y-1] == flagch
          and checkerboard[x+2][y-2] == flagch
          and checkerboard[x+3][y-3] == flagch
          and checkerboard[x+4][y-4] == flagch):
      finish = True
      msg()

#判断棋子左上方向
if(x - 4 >= 0 and y + 4 <= 9):
   if(checkerboard[x-1][y+1] == flagch
          and checkerboard[x-2][y+2] == flagch
          and checkerboard[x-3][y+3] == flagch
          and checkerboard[x-4][y+4] == flagch):
      finish = True
      msg()

#判断棋子左上方向
if(x + 4 <= 9 and y + 4 <= 9):
   if(checkerboard[x+1][y+1] == flagch
          and checkerboard[x+2][y+2] == flagch
          and checkerboard[x+3][y+3] == flagch
          and checkerboard[x+4][y+4] == flagch):
      finish = True
      msg()

2.6 Configuración de ajedrez

2.6.1 Proceso de implementación de la configuración de ajedrez

        El proceso de implementación de la configuración de ajedrez y las tecnologías clave utilizadas se muestran en la figura.

2.6.2 Juzgar al jugador actual

        Al jugar al ajedrez en el juego Gobang, hay dos oponentes, que se muestran en diferentes colores de fondo y colores de fuente en la consola.

        Este programa utiliza principalmente una variable flagNum para determinar las identidades de los oponentes. Si la variable es 1, el jugador es "*", de lo contrario, el jugador es "o". El código de implementación es el siguiente:

#判断当前下棋者
if flagNum == 1:
   flagch = '*'
   print('\033[1;37;45m请*输入棋子坐标(例如A1):\033[0m',end='')  # 粉字黑底
else:
   flagch = '*'
   print('\033[1;37;42m请o输入棋子坐标(例如J5):\033[0m',end='')  # 黑字绿底

        Además, después de que una de las partes haya terminado de jugar al ajedrez, el valor de la variable flagNum debe cambiarse para cambiar el jugador. El código es el siguiente: 

flagNum *= -1; #更换下棋者标记

2.6.3 Registrar coordenadas de piezas de ajedrez

        Cuando la función de ajedrez se implementa en el juego de backgammon, es principalmente registrando las coordenadas de las piezas de ajedrez para determinar qué posición colocar. Aquí, primero use la función input () para registrar las coordenadas de las piezas de ajedrez ingresadas. La forma de coordenadas es "letras mayúsculas + 1 a 10 números" (Por ejemplo, A1, A es la abscisa, 1 es la ordenada), luego debe convertir las coordenadas a valores X e Y, y convertir la primera letra a la coordenada X. Debe usar la función ord () para obtener el valor del código ASCII correspondiente a la letra, y luego restar El valor del código ASCII de la letra A; y para convertir el segundo número a la coordenada Y, simplemente reste 1 porque el índice comienza desde 0. El código para registrar las coordenadas de una pieza de ajedrez es el siguiente:

#输入棋子坐标
str = input()
ch = str[0] #获取第一个字符的大写形式
x = ord(ch) - 65
y = int(str[1]) - 1

2.6.4 Juzgar las coordenadas de piezas de ajedrez

        Al implementar el juego Gobang (versión de consola), el tablero establecido es 10 \pequeños momentos10, por lo que las coordenadas de entrada deben estar dentro del rango del tablero, si excede el rango, se imprimirá la información correspondiente.

        Dado que el tablero de Gobang es 10 \pequeños momentos10, y el índice de coordenadas del tablero comienza desde 0, siempre que la coordenada X o la coordenada Y no esté en el rango de 0-9, significa que la coordenada de la pieza de ajedrez excede el rango del tablero. El código de implementación es el siguiente:

#判断坐标是否在棋盘之内
if(x < 0 or x > 9 or y < 0 or y > 9 ):
   print('\033[31m***您输入的坐标有误请重新输入!***\033[0m')
   continue

2.6.5 Determinar si hay una pieza de ajedrez en la posición de coordenadas especificada

         En el juego de Gobang (versión de consola), si una de las partes ya ha colocado una pieza en una posición coordinada, la otra parte no puede jugar la pieza en esa posición. Si lo hace, debería aparecer el mensaje correspondiente.

        El valor predeterminado de cada posición de coordenadas del tablero de Gobang es "-", y después de jugar al ajedrez, el valor será "*" u "o". Por lo tanto, para determinar si hay una pieza de ajedrez en la posición de coordenadas especificada, solo necesita determinar si su valor es " - ", si es" - ", puede jugar al ajedrez, de lo contrario, imprima la información correspondiente, el código es el siguiente:

#判断坐标上是否有棋子
if(checkerboard[x][y] == '-')
   if(flagNum == 1):
      checkerboard[x][y] == '*'
   else:
      checkerboard[x][y] == 'o'
else:
   print('\033[31m******您输入位置已经有其他棋子,请重新输入!\033[0m')
   continue

2.7 Resumen

        Este capítulo utiliza principalmente el lenguaje Python para desarrollar un proyecto simple de juego de Gomoku (versión de consola). El núcleo del proyecto es el algoritmo de implementación de Gomoku. Además, el juego de Gomoku interactúa con los usuarios en la consola. Como todos saben, la consola suele ser El fondo negro y la fuente blanca muestran los datos. Cómo tener una buena experiencia de usuario en la consola es un punto difícil en este proyecto. Este proyecto resuelve esta dificultad estableciendo el color de fondo y el color de la fuente en la función de impresión print (). A través del estudio de este capítulo, los lectores deben dominar el algoritmo de realización del juego Gobang y estar familiarizados con cómo cambiar el color de fondo y el color de fuente de la consola PyCharn.

Supongo que te gusta

Origin blog.csdn.net/weixin_38452841/article/details/108613734
Recomendado
Clasificación