Ir ao conteúdo
  • Cadastre-se

Candy Crush em C


gaiato

Posts recomendados

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <dos.h>
#include <time.h>
#define LINHA 10
#define COLUNA 8

void matriz(int i,int j,char *tabuleiro[10][8])
{
    for (i=0; i<=9; i++)
    {
        for (j=0; j<=7; j++)
        {
            int NumAlea;
            NumAlea = (rand()%9)+1;

            if((tabuleiro[i][j-1]==NumAlea&&tabuleiro[i][j-2]==NumAlea)||(tabuleiro[i-1][j]==NumAlea&&tabuleiro[i-2][j]==NumAlea))
                j--;

            else
                tabuleiro[i][j] = NumAlea;
        }
    }
}

void main()
{
    char tabuleiro[LINHA][COLUNA];
    char movers;
    int i=0, j,mi=4, mj=4;
    int x;
    srand((unsigned)time(NULL));
    matriz(i,j,tabuleiro);

    do
    {
        selecionar(tabuleiro,i,j,&mi,&mj);

        movers = toupper(getch());
        if ((movers == 'w' || movers == 'W')&&mi!=0)
        {
            mi--;
        }

        else if ((movers == 'a' || movers == 'A')&&mj!=0)
        {
            mj--;
        }

        else if ((movers == 'd' || movers == 'D')&&mj!=7)
        {
            mj++;
        }

        else if ((movers == 's' || movers == 'S')&&mi!=9)
        {
            mi++;
        }
        else if(movers == ' ')
        {

            printf("\n\nSelecione o proximo numero.");
          //funçao proximo numero...

        }
    }while ((movers!='Q' || movers!='q'));
    return 0;
}





//--------------------------------------



void selecionar(int tabuleiro[10][8],int i, int j,int *mi,int *mj)
{
    system("clear||cls");
    for (i=0; i<=9; i++)
    {
        printf("\n\n");
        for (j=0; j<=7; j++)
        {
            if (i==(*mi) && j==(*mj))
                printf("| %d |\t",tabuleiro[i][j]);
            else printf("%d\t",tabuleiro[i][j]);
        }
    }
}

Galera to tendo problemas com essa parte do codigo, principalmente com a parte de ponteiros. O problema e que o tabuleiro[5][3] fica mudando o valor de acordo com a tecla q pressiono, alem de q algumas funçoes do do-while n estão funcionando. Quem puder ajudar o mais rápido possivel, agradeço mt!

Link para o comentário
Compartilhar em outros sites

-Muda todos os tabuleiros para char ou int, você tá usando char em um lugar e int em outro.

-O if(movers == ' ') está funcionando, mas ele rapidamente está limpando a tela.

-O if(movers == 'q') não funciona porque está faltando um default no do while, é sói colocar

Citação

else;

em baixo de todos os if's

-Tira o *

Citação

void matriz(int i,int j,char tabuleiro[10][8])

-Aqui deixa assim

Citação

while (movers!='Q' && movers!='q');

-Não tenho certeza se muda em algo, mas acho bom deixar o prototipo da função la em cima no inicio, isso se você codificar a função em baixo da main, como é o caso da selecionar.

adicionado 2 minutos depois
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <dos.h>
#include <time.h>
#define LINHA 10
#define COLUNA 8

void selecionar(char tabuleiro[10][8],int i, int j,int *mi,int *mj);

void matriz(int i,int j,char tabuleiro[10][8])
{
    for (i=0; i<=9; i++)
    {
        for (j=0; j<=7; j++)
        {
            int NumAlea;
            NumAlea = (rand()%9)+1;

            if((tabuleiro[i][j-1]==NumAlea&&tabuleiro[i][j-2]==NumAlea)||(tabuleiro[i-1][j]==NumAlea&&tabuleiro[i-2][j]==NumAlea))
                j--;

            else
                tabuleiro[i][j] = NumAlea;
        }
    }
}

void main()
{
    char tabuleiro[LINHA][COLUNA];
    char movers;
    int i=0, j,mi=4, mj=4;
    int x;
    srand((unsigned)time(NULL));
    matriz(i,j,tabuleiro);

    do
    {
        selecionar(tabuleiro,i,j,&mi,&mj);

        movers = toupper(getch());
        if ((movers == 'w' || movers == 'W')&&mi!=0)
        {
            mi--;
        }

        else if ((movers == 'a' || movers == 'A')&&mj!=0)
        {
            mj--;
        }

        else if ((movers == 'd' || movers == 'D')&&mj!=7)
        {
            mj++;
        }

        else if ((movers == 's' || movers == 'S')&&mi!=9)
        {
            mi++;
        }
        else if(movers == ' ')
        {

            printf("\n\nSelecione o proximo numero.");
            Sleep(1000);
          //funçao proximo numero...

        }
        else;
    }while (movers!='Q' && movers!='q');
}





//--------------------------------------



void selecionar(char tabuleiro[10][8],int i, int j,int *mi,int *mj)
{
    system("clear||cls");
    for (i=0; i<=9; i++)
    {
        printf("\n\n");
        for (j=0; j<=7; j++)
        {
            if (i==(*mi) && j==(*mj))
                printf("| %d |\t",tabuleiro[i][j]);
            else printf("%d\t",tabuleiro[i][j]);
        }
    }
    printf("\n\n%c -- %d\n", tabuleiro[2][4], tabuleiro[2][4]);
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!