Fiz um programa que move números em uma matriz - um trabalho em que devo refazer o jogo 2048 em C. Eu digito a direção então ele move, porém, quando eu digito as direções para cima ou para baixo ele dá o erro "Falha de segmentação (imagem do núcleo gravada)" e finaliza o programa. Não achei o erro da função, se puder me ajudar.
A função que move os numeros para cima:
#include<stdio.h>
//MATRIZ[4][4];
void dirCima(char dir,int *pMatriz[][4])
{ //46 quer dizer que o bloco está vazio{
int i,j,cont;
do{
for(j=0;j<=3;j++)
{
for(i=0,cont=1;i<4;i++)//este cont será usado para executar N vezes o próximo 'for'.
{
if(*pMatriz[i][j]!=46)
cont++;
}
do{
for(i=0;i<4;i++)
{
if(*pMatriz[i][j]!=46)
{
if(*pMatriz[i+1][j]==*pMatriz[i][j])
{
*pMatriz[i+1][j]+=*pMatriz[i][j];//se o número for igual ao que está indo para sua direção eles se somam.
*pMatriz[i][j]=46;
imprimeMatriz(pMatriz);
}
if(*pMatriz[i-1][j]==46&&i-1>=0)
{//se o bloco estiver vazio ele receberá o número que vai na sua direção
*pMatriz[i-1][j]=*pMatriz[i][j];
*pMatriz[i][j]=46;
imprimeMatriz(pMatriz);
}
}
}
cont--;
}while(cont>=0);
}
}while(i<=3&&i>=0);
}
A que move para baixo:
#include<stdio.h>
//MATRIZ[4][4];
void dirBaixo(char dir,int *pMatriz[][4])
{ //46 quer dizer que o bloco está vazio
int i,j,cont;
do{
for(j=0;j<=3;j++)
{
for(i=3,cont=1;i>=0;i--)//este cont será usado para executar N vezes o próximo 'for'.
{
if(*pMatriz[i][j]!=46)
cont++;
}
do{
for(i=3;i>=0;i--)
{
if(*pMatriz[i][j]!=46)
{
if(*pMatriz[i-1][j]==*pMatriz[i][j])
{
*pMatriz[i-1][j]+=*pMatriz[i][j];//se o número for igual ao que está indo para sua direção eles se somam.
*pMatriz[i][j]=46;
imprimeMatriz(pMatriz);
}
if(*pMatriz[i+1][j]==46&&j+1<=3)
{//se o bloco estiver vazio ele receberá o número que vai na sua direção
*pMatriz[i+1][j]=*pMatriz[i][j];
*pMatriz[i][j]=46;
imprimeMatriz(pMatriz);
}
}
}
cont--;
}while(cont>=0);
}
}while(i<=3&&i>=0);
}
Pergunta
WayGlass
Olá,
Fiz um programa que move números em uma matriz - um trabalho em que devo refazer o jogo 2048 em C. Eu digito a direção então ele move, porém, quando eu digito as direções para cima ou para baixo ele dá o erro "Falha de segmentação (imagem do núcleo gravada)" e finaliza o programa. Não achei o erro da função, se puder me ajudar.
A função que move os numeros para cima:
A que move para baixo:
Editado por WayGlassLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.