-1
I’ve already checked some codes here on the site, but I’m not getting it. I am creating a program that receives a word hunt and shows in the terminal where the previously declared words are. However, I’m having trouble checking diagonally now. I have already tried to turn each diagonal line into a horizontal line, and so check if any word is present there.
I’m starting now in programming, I imagine my code is full of "errors", but I hope to improve. Thanks in advance.
I’ll post the entire code here:
##### CAÇA PALAVRAS #####
print("Caça Palavras")
# Funções:
def definirCaçaPalavra():
indexLinhas = int(input("Quantas linhas serão necessárias? "))
for i in range(0, indexLinhas):
linha = input("Digite a {}ª linha: ".format(i+1))
linhaLista = list(linha)
caçaPalavras.append(linhaLista)
def definirPalavras():
indexPalavras = int(input("Quantas palavras serão procuradas? "))
for i in range(0, indexPalavras):
palavra = input("Digite a {}ª palavra: ".format(i+1))
palavraLista = list(palavra)
palavras.append(palavraLista)
def verificarHorizontal():
for palavra in palavras:
numeroLinha = 1
for linha in caçaPalavras:
linhaString = ''.join(linha)
palavraString = ''.join(palavra)
if palavraString in linhaString:
print("Palavra {} encontrada na horizontal na {}ª linha".format(palavraString, numeroLinha))
else:
numeroLinha += 1
def verificarHorizontalInversa():
for palavra in palavras:
numeroLinha = 1
for linha in caçaPalavras:
linhaString = ''.join(linha)
palavraString = ''.join(palavra)
palavraInversaString = ''.join(reversed(palavra))
if palavraInversaString in linhaString:
print("Palavra {} ({}) encontrada na horizontal inversa na {}ª linha".format(palavraInversaString, palavraString, numeroLinha))
else:
numeroLinha += 1
def verificarVertical():
tamanhoLinha = len(caçaPalavras[0])
for i in range(0, tamanhoLinha):
linhaHorizontalVertical = []
for linha in caçaPalavras:
linhaHorizontalVertical.append(linha[i])
linhaHorizontalVerticalString = ''.join(linhaHorizontalVertical)
for palavra in palavras:
palavraString = ''.join(palavra)
if palavraString in linhaHorizontalVerticalString:
print("Palavra {} encontrada na {}ª vertical".format(palavraString, i+1))
def verificarVerticalInversa():
tamanhoLinha = len(caçaPalavras[0])
for i in range(0, tamanhoLinha):
linhaHorizontalVertical = []
for linha in caçaPalavras:
linhaHorizontalVertical.append(linha[i])
linhaHorizontalVerticalString = ''.join(linhaHorizontalVertical)
for palavra in palavras:
palavraInversaString = ''.join(reversed(palavra))
palavraString = ''.join(palavra)
if palavraInversaString in linhaHorizontalVerticalString:
print("Palavra {} ({}) encontrada na {}ª vertical inversa".format(palavraInversaString, palavraString, i+1))
# Transformar linha diagonal em uma horizontal
For each letter, pick from the low line size +1.
def verificarDiagonalBaixo():
# Variáveis:
caçaPalavras = []
palavras = []
# Principal
definirCaçaPalavra()
definirPalavras()
print("********************")
verificarHorizontal()
print("********************")
verificarHorizontalInversa()
print("********************")
verificarVertical()
print("********************")
verificarVerticalInversa()
print("********************")
verificarDiagonalBaixo()
One of the things I tried but didn’t work was:
def verificarDiagonalBaixo():
for linha in caçaPalavras:
for letra in linha:
contador = 1
linhaHorizontalDiagonal = []
linhaHorizontalDiagonal.append(letra)
for linha in caçaPalavras:
if contador < len(linha):
linhaHorizontalDiagonal.append(linha[contador])
contador += 1
print(linhaHorizontalDiagonal)
I think maybe it’s an idea of what I’m trying to do.
This here I tried too, and he took the first diagonal. Maybe I’m on the right track:
def verificarDiagonalBaixo():
for linha in caçaPalavras:
contador = 0
linhaHorizontalDiagonal = []
for linha in caçaPalavras:
if contador < len(linha):
linhaHorizontalDiagonal.append(linha[contador])
contador += 1
print(linhaHorizontalDiagonal)