Caso de desenvolvimento do projeto Python (2) ———— Jogo Gomoku simples (versão de console)

2. Jogo Gomoku Simples (versão do console)

2.1 Análise de demanda

O jogo Gobang desenvolvido nesta seção é uma versão de console, portanto, o jogo deve ter as seguintes funções:

  • O tabuleiro de xadrez pode ser impresso ciclicamente;
  • Você pode jogar sozinho;
  • Quando um dos lados vencer, imprima o tabuleiro da vitória e o vencedor;
  • Determine se a peça de xadrez excede o alcance do tabuleiro;
  • Determine se há uma peça de xadrez na posição de coordenada especificada;
  • A interface é linda e os prompts são óbvios.

2.2 Design do jogo

2.2.1 Estrutura da função do jogo

2.2.2 Processo de negócios do jogo

        O processo de negócios do jogo Gobang simples (versão de console) é mostrado na figura abaixo.

2.3 Fundamentos para desenvolvimento de jogos

2.3.1 Ambiente de desenvolvimento de jogos

O desenvolvimento e o ambiente operacional deste jogo são os seguintes:

  • Sistema operacional: Windows7, Windows10, etc .;
  • Versão Python: Python3.7;
  • Ferramentas de desenvolvimento: Pycharm.

2.3.2 Estrutura de organização de pastas

        O jogo gobang simples (versão do console) possui apenas um arquivo gobang.py, que representa o arquivo de código do software, e todos os códigos que implementam a lógica gobang estão neste arquivo.

2.4 Configurações do tabuleiro de damas

2.4.1 Processo de implementação da configuração do conselho

        O processo de implementação da configuração do quadro e as principais tecnologias utilizadas são mostrados na figura.

2.4.2 Inicializar o tabuleiro de xadrez

        Ao desenvolver um jogo gomoku, você primeiro precisa inicializar o tabuleiro. O tabuleiro do gomoku é semelhante a uma lista bidimensional. Portanto, neste programa, uma lista bidimensional chamada checkboard é usada para armazenar o tabuleiro gomoku. O código é o seguinte:

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 tabuleiro de xadrez

        Para jogar xadrez no jogo Gobang, o usuário primeiro precisa exibir o tabuleiro Gobang. Como este programa é um programa de console, selecione diretamente o arquivo gobang, py em Pycharn e clique no \ tiny \ trianglerightbotão no canto superior direito da interface de Pycharn para controlá-lo em Pycharn Taichung mostra um tabuleiro de xadrez.

        A seção 2.4.2 inicializou o tabuleiro Gomoku e o próximo trabalho só precisa imprimi-lo. Aqui, um loop for aninhado é usado para percorrer a lista bidimensional que armazena o tabuleiro Gomoku e, em seguida, percorrerá os elementos uma vez. Apenas saída. código mostrado abaixo:

#打印棋盘
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 Imprimir o tabuleiro da vitória e o vencedor

        Ao jogar o jogo Gobang, se uma das partes vencer, o tabuleiro final é impresso e o vencedor é impresso.

        Defina uma função msg () para gerar o tabuleiro da vitória final e o vencedor. Nessa função, o loop for aninhado é usado principalmente para gerar o tabuleiro de gamão da vitória final, e a saída do vencedor é obtida avaliando o valor da variável flagNum. O código de implementação da função msg () é o seguinte:

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 Definir diferentes fontes e cores de fundo para o console

Algoritmo 2,5 Gobang

2.5.1 Análise do algoritmo Gobang

        A regra do jogo de Gobang é procurar peças do mesmo tipo em oito direções com o ponto de entrada como o centro. Se o número das mesmas peças for maior ou igual a 5, significa que o jogador desse tipo de peça é o vencedor. A direção de busca das peças de gobang é mostrada na figura.

                                                                  Figura 1 Determine a forma de uma peça de xadrez colocada em oito direções

2.5.2 Determine a direção para cima, para baixo, para a esquerda e para a direita de uma peça de xadrez

        Julgando as direções para cima, para baixo, para a esquerda e para a direita da peça de xadrez, principalmente para julgar se as quatro peças adjacentes à coordenada X ou Y da peça de xadrez são as peças de xadrez da mesma cor, em caso afirmativo, defina a bandeira de chegada como Verdadeiro, o que significa o fim Jogue xadrez em um loop e, em seguida, chame a função msg () para imprimir o tabuleiro e o vencedor. código mostrado abaixo:

#判断棋子左侧
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 Determine a direção diagonal de uma peça de xadrez

        Para determinar a direção diagonal de uma peça de xadrez, é principalmente para determinar se as 4 peças de xadrez adjacentes às coordenadas da peça de xadrez na diagonal são peças da mesma cor. Em caso afirmativo, defina a bandeira de chegada como Verdadeiro, ou seja, termine o ciclo de xadrez e, em seguida, chame A função msg () imprime o tabuleiro da vitória e o vencedor. código mostrado abaixo:

#判断棋子右上方向
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 Configurações de xadrez

2.6.1 Processo de implementação de configuração de xadrez

        O processo de implementação da configuração do xadrez e as principais tecnologias utilizadas são mostrados na figura.

2.6.2 Julgando o jogador atual

        Ao jogar xadrez no jogo Gobang, há dois oponentes, que são mostrados em diferentes cores de fundo e cores de fonte no console.

        Este programa usa principalmente uma variável flagNum para determinar as identidades dos oponentes. Se a variável for 1, o jogador é "*", caso contrário, o jogador é "o". O código de implementação é o seguinte:

#判断当前下棋者
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='')  # 黑字绿底

        Além disso, depois que uma das partes termina de jogar xadrez, o valor da variável flagNum precisa ser alterado para mudar o jogador. O código é o seguinte: 

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

2.6.3 Registrar as coordenadas das peças de xadrez

        Quando a função de xadrez é implementada no jogo de gamão, é principalmente registrando as coordenadas das peças de xadrez para determinar qual posição colocar. Aqui, primeiro use a função input () para registrar as coordenadas das peças de xadrez inseridas. A forma de coordenada é "letras maiúsculas + 1 a 10 números" (Por exemplo, A1, A é a abscissa e 1 é a ordenada), então você precisa converter as coordenadas em valores X e Y e converter a primeira letra na coordenada X. Você precisa usar a função ord () para obter o valor do código ASCII correspondente à letra e, em seguida, subtrair O valor do código ASCII da letra A; e para converter o segundo número na coordenada Y, você só precisa subtrair 1 porque o índice começa em 0. O código para registrar as coordenadas de uma peça de xadrez é o seguinte:

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

2.6.4 Julgando as coordenadas das peças de xadrez

        Ao implementar o jogo Gobang (versão para console), o tabuleiro definido é 10 \Pouco tempo10, então as coordenadas de entrada devem estar dentro do intervalo do tabuleiro. Se exceder o intervalo, as informações de prompt correspondentes serão impressas.

        Uma vez que o tabuleiro de Gobang é 10 \Pouco tempo10 e o índice de coordenadas do tabuleiro começa em 0, contanto que a coordenada X ou Y não esteja no intervalo de 0-9, isso significa que a coordenada da peça de xadrez excede o intervalo do tabuleiro. O código de implementação é o seguinte:

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

2.6.5 Determine se há uma peça de xadrez na posição coordenada especificada

         No jogo de Gobang (versão para console), se uma das partes já colocou uma peça em uma posição coordenada, a outra parte não pode tocar a peça naquela posição. Se isso acontecer, uma mensagem de prompt correspondente deve aparecer.

        O valor padrão de cada posição coordenada do tabuleiro Gobang é "-" e, após jogar xadrez, o valor se tornará "*" ou "o". Portanto, para determinar se há uma peça de xadrez na posição coordenada especificada, você só precisa determinar se seu valor é " - ", se for" - ", você pode jogar xadrez, caso contrário, imprima as informações de prompt correspondentes, o código é o seguinte:

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

2.7 Resumo

        Este capítulo usa principalmente a linguagem Python para desenvolver um projeto simples de jogo Gomoku (versão do console). O núcleo do projeto é o algoritmo de implementação do Gomoku. Além disso, o jogo Gomoku interage com os usuários no console. Como todos sabem, o console é geralmente Os dados de exibição de fundo preto e fonte branca. Como ter uma boa experiência do usuário no console é um ponto difícil neste projeto. Este projeto resolve esta dificuldade definindo a cor de fundo e cor da fonte na função de impressão print (). Por meio do estudo deste capítulo, os leitores devem ser proficientes no algoritmo de realização do jogo Gobang e familiarizados com a forma de alterar a cor de fundo e a cor da fonte do console PyCharn.

Acho que você gosta

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