Pessoal, to tentando fazer um joguinho simples em c, pra ser executado na linha de comando usando matriz ,o jogo é o jogo do 15
tem que ordenar as casas de 1 a 15 , usando comandos como 3 d (numero 3, direita); estou tendo um erro ao chamar uma função dentro de outra. se alguém puder dar uma olhadinha no código e me dar alguma dica eu agradeço!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include<stdbool.h>
#define MAX 20
#define CASAS 15
bool jogo();
void realizarJogada(int, char [*]);
int encontrarPosicao(size_t, size_t, int[*][*], int);
void mostrarTabuleiro(size_t, size_t, int[*][*]);
void mostrarCasa(int);
void montarTabuleiro(size_t, size_t, int[*][*]);
int main(){
srand((unsigned) time(0));
char CMD_SAIR[] = "sair";
char CMD_CIMA[] = "c";
char CMD_BAIXO[] = "b";
char CMD_DIREITA[] = "d";
char CMD_ESQUERDA[] = "e";
int M = 4;
int N = 4;
int tabuleiro[M][N];
montarTabuleiro(M, N, tabuleiro);
mostrarTabuleiro(M, N, tabuleiro);
jogo();
bool jogo(){
while(true){
char jogada[MAX];
printf("digite a jogada: ");
gets(jogada);
if(CMD_SAIR == jogada){
break;
}
char *token = NULL;
token = strtok(jogada, " ");
int casa = 0;
char direcao[] = "";
casa = atoi(token);
printf("digite um comando! ex: '3 d' ou 'sair'");
realizarJogada(casa, direcao);
mostrarTabuleiro(M, N, tabuleiro);
}
}
void realizarJogada(int casa, char direcao[], int encontrarPosicao){
int posicao[MAX] = encontrarPosicao(casa); //***** erro aqui*******
int linha = posicao[0];
int coluna = posicao[1];
int linhaAntes = linha;
int colunaAntes = coluna;
if(CMD_DIREITA == direcao){
coluna++;
}
if(CMD_ESQUERDA == direcao){
coluna--;
}
if(CMD_CIMA == direcao){
linha--;
}
if(CMD_BAIXO == direcao){
linha++;
}
int aux = tabuleiro[linha][coluna];
if(aux == 0){
tabuleiro[linha][coluna] = casa;
tabuleiro[linhaAntes][colunaAntes] = 0;
}
}
int encontrarPosicao(size_t linha, size_t coluna, int tabuleiro[linha][coluna], int casa){
int i, j;
for(i = 0; i< linha; i++){
for(j = 0; j < coluna; j++){
if(casa == tabuleiro[j]){
int retorno [MAX] = {i, j};
return retorno[MAX];
}
else{
printf("casa não encontrada");
}
}
}
}
void mostrarTabuleiro(size_t linha, size_t coluna, int tab[linha][coluna]){
int i, j;
for(i = 0; i < linha; i++){
for(j = 0;j < coluna; j++){
int casa = tab[j];
mostrarCasa(casa);
}
printf("\n\r");
}
}
void mostrarCasa(int casa){
if(0 == casa){
printf(" ");
}
else{
printf("%d ", casa);
}
printf("\t");
}
void montarTabuleiro(size_t linha, size_t coluna, int tab[linha][coluna]){
int i, j;
for(i = 0;i < linha; i++){
for(j = 0;j < coluna; j++){
tabuleiro[j] = rand() % (CASAS + 1);
printf("%d\n", tab[j]);
}
}
}
return EXIT_SUCCESS;
}