Informática, perguntado por aramizsilva84, 8 meses atrás

Criar um programa em python simulador do jogo Lig-4, usando matrizes e criação de funções.

O jogo tem o princípio semelhante ao jogo da velha. Há um tabuleiro vertical com diversos furos em que as fichas dos jogadores se encaixam. Cada jogador possui fichas de uma determinada cor, por exemplo, amarelas e azuis. A cada jogada, o jogador da vez escolhe a coluna do tabuleiro em que irá lançar sua ficha. A ficha ocupará o primeiro furo desocupado de baixo para cima. O objetivo do jogo é ir colocando as fichas, até que um dos 2 jogadores consiga colocar 4 fichas em linha (podendo ser na horizontal ou na vertical ou na diagonal).

Anexos:

talessilvaamarp9tcph: essa ai é braba
aramizsilva84: Muito
talessilvaamarp9tcph: Uma duvida
talessilvaamarp9tcph: se a coluna tiver cheia
talessilvaamarp9tcph: pode colocar ficha?
talessilvaamarp9tcph: nela
aramizsilva84: Não
talessilvaamarp9tcph: eu fiz aqui mas tem MT gambiarra
talessilvaamarp9tcph: vou tentar dar uma arrumada

Soluções para a tarefa

Respondido por talessilvaamarp9tcph
4

def ini_matriz(tamanho):

   # O unico propósito dessa funcao e iniciar uma matriz

   m = [[0 for g in range (tamanho[1])] for i in range(tamanho[0])]

   return m

def mostra_matriz(matriz):

   # essa funcao serve pra printar a matriz

   for i in matriz:

       print(i)

def jogada(matriz,coluna,token):

   #essa funcao coloca a jogada na matriz

   for i in range(len(matriz)-1,-1,-1):

       token , matriz[i][coluna] = matriz[i][coluna], token

   return matriz

def verificar(jogo):

   # essa funcao verifica se há ganhadores

   for i in range(len(jogo)):

       cont = [0,0] #Matriz para contar quantas pecas tem na horizontal

       for j in range(len(jogo[i])):

           if cont[1] >= 4:

               return cont[0]

           elif jogo[i][j]:

               if cont[0] ==jogo[i][j]:

                   cont[1]+=1

               else:

                   cont[0] = jogo[i][j]

                   cont[1] = 1

           else:

               cont = [0,0]

   for i in range(len(jogo[1])):

       cont = [0,0] #Matriz para contar quantas pecas tem na vertical

       for j in range(len(jogo)):

           if jogo[j][i]:

               if cont[0] ==jogo[j][i]:

                   cont[1]+=1

               else:

                   cont[0] = jogo[j][i]

                   cont[1] = 1

           else:

               cont = [0,0]

           if cont[1] >= 4:

               return cont[0]

         

           

   for i in range(4-1,len(jogo)):

       for g in range(len(jogo[1])-(4-1)):

           cont = [0,0] # matriz para contar quantas pecas tem na diagonal

           for k in range(4):

               if jogo[i-k][g+k]:

                   if cont[0] ==jogo[i-k][g+k]:

                       cont[1]+=1

                   else:

                       cont[0] = jogo[i-k][g+k]

                       cont[1] = 1

               else:

                   break

           if cont[1] >= 4:

               return cont[0]

   for i in range(len(jogo)-(4-1)):

       for g in range(len(jogo[1])-(4-1)):

           cont = [0,0] # matriz para contar quantas pecas tem na diagonal

           for k in range(4):

               if jogo[i+k][g+k]:

                   if cont[0] ==jogo[i+k][g+k]:

                       cont[1]+=1

                   else:

                       cont[0] = jogo[i+k][g+k]

                       cont[1] = 1

               else:

                   break

           if cont[1] >= 4:

               return cont[0]

   return 0

           

def main():

   tamanho = (6,7) #serve pra setar o tamanho do jogo

   jogo = ini_matriz(tamanho)

   ganhou = 0 # serve pra parar o jogo quando alguem ganhar

   jogador = 0 # serve pra saber quem vai jogar

   while not ganhou:

       mostra_matriz(jogo)

       print('Quem vai jogar é o jogador ', jogador%2 +1,'.')

       print('Escolha em qual coluna você quer jogar (escolha de 1 a ',tamanho[1],'): ')

       escolha = int(input())

       while escolha<1 or escolha>tamanho[1]:

               print('Número inválido.')

               print('Escolha em qual coluna você quer jogar (escolha de 1 a ',tamanho[1],'): ')

               escolha = int(input())

       jogo = jogada(jogo,escolha-1, jogador%2 +1)

       ganhou = verificar(jogo)

       jogador +=1

               

   mostra_matriz(jogo)

   print('O jogador', ganhou,' venceu!!')

   return 0

if __name__ == "__main__":

   main()


aramizsilva84: Oloko, o cara fez mesmo, acabou que eu nem ia precisar mais, mas mesmo assim valeu ain, posso usar ainda
aramizsilva84: Olha meu perfil
aramizsilva84: Na ultima pergunta
aramizsilva84: E tenta responder também, se possivel
aramizsilva84: Vai ajudar muito
Respondido por nicolefc22
0

A linguagem utilizada abaixo será em python, de forma que sera usado as funções for in, else, if, entre outras.

Programação

Phyton é uma linguagem de programação muito utilizada entre os desenvolvedores, bastante usual na análise de dados. Considerada uma das linguagens mais simples de aprender por sua forma de ser escrita, por isso ela vem ganhando muito espaço no meio.

Temos a formação do seguinte código:

def ini_matriz(tamanho):

  # Para iniciar a matriz:

  m = [[0 for g in range (tamanho[1])] for i in range(tamanho[0])]

  return m

def mostra_matriz(matriz):

  # Para printar a matriz:

  for i in matriz:

      print(i)

def jogada(matriz,coluna,token):

  # Colocar o jogo matriz

  for i in range(len(matriz)-1,-1,-1):

     token , matriz[i][coluna] = matriz[i][coluna], token

  return matriz

def verificar(jogo):

  # Verificação de jogadores

  for i in range(len(jogo)):

     cont = [0,0] #Matriz para contar quantas pecas tem na horizontal

     for j in range(len(jogo[i])):

          if cont[1] >= 4:

              return cont[0]

         elif jogo[i][j]:

              if cont[0] ==jogo[i][j]:

                  cont[1]+=1

              else:

                  cont[0] = jogo[i][j]

                  cont[1] = 1

         else:

              cont = [0,0]

 for i in range(len(jogo[1])):

      cont = [0,0]

#Matriz contador de pencas verticais

      for j in range(len(jogo)):

         if jogo[j][i]:

              if cont[0] ==jogo[j][i]:

                  cont[1]+=1

              else:

                  cont[0] = jogo[j][i]

                  cont[1] = 1

          else:

              cont = [0,0]

          if cont[1] >= 4:

              return cont[0]

               

  for i in range(4-1,len(jogo)):

      for g in range(len(jogo[1])-(4-1)):

          cont = [0,0]

# matriz para contar quantas pecas tem na diagonal

          for k in range(4):

              if jogo[i-k][g+k]:

                  if cont[0] ==jogo[i-k][g+k]:

                      cont[1]+=1

                  else:

                      cont[0] = jogo[i-k][g+k]

                      cont[1] = 1

              else:

                  break

          if cont[1] >= 4:

              return cont[0]

  for i in range(len(jogo)-(4-1)):

      for g in range(len(jogo[1])-(4-1)):

          cont = [0,0]

# Matriz contagem de diagonal

          for k in range(4):

              if jogo[i+k][g+k]:

                  if cont[0] ==jogo[i+k][g+k]:

                     cont[1]+=1

                  else:

                      cont[0] = jogo[i+k][g+k]

                     cont[1] = 1

              else:

                  break

          if cont[1] >= 4:

              return cont[0]

  return 0

         

def main():

  tamanho = (6,7) #serve pra setar o tamanho do jogo

  jogo = ini_matriz(tamanho)

  ganhou = 0

# parar o jogo

  jogador = 0

# quem vai jogar

  while not ganhou:

      mostra_matriz(jogo)

      print('Quem vai jogar é o jogador ', jogador%2 +1,'.')

      print('Escolha em qual coluna você quer jogar (escolha de 1 a ',tamanho[1],'): ')

      escolha = int(input())

      while escolha<1 or escolha>tamanho[1]:

              print('Número inválido.')

              print('Escolha em qual coluna você quer jogar (escolha de 1 a ',tamanho[1],'): ')

              escolha = int(input())

      jogo = jogada(jogo,escolha-1, jogador%2 +1)

      ganhou = verificar(jogo)

      jogador +=1

             

  mostra_matriz(jogo)

  print('O jogador', ganhou,' venceu!!')

  return 0

if __name__ == "__main__":

  main()

Aprenda mais sobre programação em:brainly.com.br/tarefa/29253823

Anexos:
Perguntas interessantes