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).
Soluções para a tarefa
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()
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