Ir para conteúdo
Fórum Script Brasil
  • 0

Compila mas não executa


Heitor Colangelo

Pergunta

Ae pessoal, tudo bem?!?

Estou com um problema muito estranho no meu programa, vou tentar ser o mais claro possivel

Estou fazendo um jogo de paciencia em alegro, então para cada pilha do jogo eu declaro uma pilha diferente(p1,p2,p3...,p7), quando eu uso as funcoes de distribuir cartas somente com a p1 funciona certinho, mas quando declaro a p2, o programa compila certinho, mas não executa, não da erro nenhum, ele simplesmente não executa...

o tipo de p1,p2,p3...,p7 é um ponteiro que aponta para a estrutura No

quando eu declaro

p1->base=NULL;

p1->topo=NULL;

da tudo certo, mas a partir do momento q eu declaro

p1->base=NULL;

p1->topo=NULL;

p2->base=NULL;

p2->topo=NULL;

o programa já não executa....

alguém faz ideia do que possa ser?!? estou usando o Dev.

segue o codigo

********** paciencia.h ***********

#include <allegro.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iostream>


typedef struct no No;
struct no{
   BITMAP *carta;
   int x,y;
   char info[4];
   bool estado;
   struct no *prox;
};

typedef struct pilha Pilha;
struct pilha{
       No *topo;
       No *base;
};

typedef struct baralho Vet;
struct baralho{
       char info[4];
};


void iniciaBaralho(Vet *vet1);
void embaralha(Vet *vet2, Vet *vet1);
void init();
void deinit();
void insereNo(Pilha *pil, int x, int y, char info[], bool estado);
void desenhaPilha(Pilha *pil);
void darCartas(Pilha *pil1, Pilha *pil2, Pilha *pil3, Pilha *pil4, Pilha *pil5, Pilha *pil6, Pilha *pil7, Pilha *monte1, Pilha *monte2
,Vet vet2[]);
************ paciencia.cpp *********
#include "paciencia.h"

void iniciaBaralho(Vet *vet1){
    strcpy(vet1[0].info,"Ac");
    strcpy(vet1[1].info,"2c");
    strcpy(vet1[2].info,"3c");
    strcpy(vet1[3].info,"4c");
    strcpy(vet1[4].info,"5c");
    strcpy(vet1[5].info,"6c");
    strcpy(vet1[6].info,"7c");
    strcpy(vet1[7].info,"8c");
    strcpy(vet1[8].info,"9c");
    strcpy(vet1[9].info,"10c");
    strcpy(vet1[10].info,"Qc");
    strcpy(vet1[11].info,"Jc");
    strcpy(vet1[12].info,"Kc");
    strcpy(vet1[13].info,"Ae");
    strcpy(vet1[14].info,"2e");
    strcpy(vet1[15].info,"3e");
    strcpy(vet1[16].info,"4e");
    strcpy(vet1[17].info,"5e");
    strcpy(vet1[18].info,"6e");
    strcpy(vet1[19].info,"7e");
    strcpy(vet1[20].info,"8e");
    strcpy(vet1[21].info,"9e");
    strcpy(vet1[22].info,"10e");
    strcpy(vet1[23].info,"Qe");
    strcpy(vet1[24].info,"Je");
    strcpy(vet1[25].info,"Ke");
    strcpy(vet1[26].info,"Ap");
    strcpy(vet1[27].info,"2p");
    strcpy(vet1[28].info,"3p");
    strcpy(vet1[29].info,"4p");
    strcpy(vet1[30].info,"5p");
    strcpy(vet1[31].info,"6p");
    strcpy(vet1[32].info,"7p");
    strcpy(vet1[33].info,"8p");
    strcpy(vet1[34].info,"9p");
    strcpy(vet1[35].info,"10p");
    strcpy(vet1[36].info,"Qp");
    strcpy(vet1[37].info,"Jp");
    strcpy(vet1[38].info,"Kp");
    strcpy(vet1[39].info,"Ao");
    strcpy(vet1[40].info,"2o");
    strcpy(vet1[41].info,"3o");
    strcpy(vet1[42].info,"4o");
    strcpy(vet1[43].info,"5o");
    strcpy(vet1[44].info,"6o");
    strcpy(vet1[45].info,"7o");
    strcpy(vet1[46].info,"8o");
    strcpy(vet1[47].info,"9o");
    strcpy(vet1[48].info,"10o");
    strcpy(vet1[49].info,"Qo");
    strcpy(vet1[50].info,"Jo");
    strcpy(vet1[51].info,"Ko");
}

void desenhaPilha(Pilha *pil)
{
     No *aux;

     aux = pil->base;
     while(aux->prox!=NULL)
     {
        if(aux->estado == true){
           draw_sprite(screen,aux->carta,aux->x,aux->y);
           aux = aux->prox;
           _sleep(50);
           }else{
                 draw_sprite(screen,load_bitmap("C:\\Users\\user\\Desktop\\ED\\Allegro\\cartas\\deck.bmp",NULL),aux->x,aux->y);
                 aux = aux->prox;
                 _sleep(50);
                 }
     }
     draw_sprite(screen,aux->carta,aux->x,aux->y);
}

void insereNo(Pilha *pil, int x, int y, char info[4], bool estado)
{
     No *novo=(No*)malloc(sizeof(No));

     char caminho[54];

     strncpy(novo->info,info,4);
     novo->x = x;
     novo->y = y;
     novo->estado = estado;

     strncpy(caminho,"C:\\Users\\user\\Desktop\\ED\\Allegro\\cartas\\",47);
     strncat(caminho,novo->info,strlen(novo->info) );
     strncat(caminho,".bmp",4);
     novo->carta = load_bitmap(caminho,NULL);

     if(pil->base == NULL)
     {
        pil->base = novo;
        pil->topo = novo;
        novo->prox = NULL;
     }else{
           pil->topo->prox = novo;
           pil->topo = novo;
           novo->prox = NULL;
           }
}

void embaralha(Vet *vet2, Vet *vet1)
{
    int k = 52;
    int random;
    int j = 0;

    srand(time(NULL));

    while(k>0)
    {
       random = rand()%52;
       if( strcmp(vet1[random].info,"") != 0 )
       {
          strcpy(vet2[j].info,vet1[random].info);
          strcpy(vet1[random].info,"");
          k--;
          j++;
       }
    }
}

void darCartas(Pilha *pil1, Pilha *pil2, Pilha *pil3, Pilha *pil4, Pilha *pil5, Pilha *pil6, Pilha *pil7, Pilha *monte1, Pilha *monte2,
Vet vet2[])
{
     int i=0;
     char info[4];
   /*
     //Monte 1
     while(i<23)
     {
         insereNo(monte1,36+(2*i),33+(2*i),vet2[i].info,false);
         i++;
     }
     */
     //Pilha 1
     insereNo(pil1,50,200,vet2[i].info,true);
     i++;

     //Pilha 2
     insereNo(pil2,150,200,vet2[i].info,false);
     i++;
     insereNo(pil2,150,203,vet2[i].info,true);
     i++;
     /*
     //Pilha 3
     insereNo(pil3,250,200,vet2[i].info,false);
     i++;
     insereNo(pil3,250,203,vet2[i].info,false);
     i++;
     insereNo(pil3,250,206,vet2[i].info,true);
     i++;
     /*
     //Pilha 4
     insereNo(pil4,350,200,vet2[i].info,false);
     i++;
     insereNo(pil4,350,203,vet2[i].info,false);
     i++;
     insereNo(pil4,350,206,vet2[i].info,false);
     i++;
     insereNo(pil4,350,209,vet2[i].info,true);
     i++;

     //Pilha 5
     insereNo(pil5,450,200,vet2[i].info,false);
     i++;
     insereNo(pil5,450,203,vet2[i].info,false);
     i++;
     insereNo(pil5,450,206,vet2[i].info,false);
     i++;
     insereNo(pil5,450,209,vet2[i].info,false);
     i++;
     insereNo(pil5,450,212,vet2[i].info,true);
     i++;

     //Pilha 6
     insereNo(pil6,550,200,vet2[i].info,false);
     i++;
     insereNo(pil6,550,203,vet2[i].info,false);
     i++;
     insereNo(pil6,550,206,vet2[i].info,false);
     i++;
     insereNo(pil6,550,209,vet2[i].info,false);
     i++;
     insereNo(pil6,550,212,vet2[i].info,false);
     i++;
     insereNo(pil6,550,215,vet2[i].info,true);
     i++;

     //Pilha 7
     insereNo(pil7,650,200,vet2[i].info,false);
     i++;
     insereNo(pil7,650,203,vet2[i].info,false);
     i++;
     insereNo(pil7,650,206,vet2[i].info,false);
     i++;
     insereNo(pil7,650,209,vet2[i].info,false);
     i++;
     insereNo(pil7,650,212,vet2[i].info,false);
     i++;
     insereNo(pil7,650,215,vet2[i].info,false);
     i++;
     insereNo(pil7,650,218,vet2[i].info,true);
     i++;

     */
}



void init() {
    int depth, res;
    allegro_init();

    depth = desktop_color_depth();
    if (depth == 0) depth = 32;
    set_color_depth(depth);

    res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
    if (res != 0) {
        allegro_message(allegro_error);
        exit(-1);
    }

    if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) < 0)
    {
      allegro_message(allegro_error);
      exit(-1);
    }

    install_timer();
    install_keyboard();
    install_mouse();
    /* add other initializations here */
}

void deinit() {
    clear_keybuf();
    /* add other deinitializations here */
}
************** main.cpp ************
#include "paciencia.h"


int main(void) {

       Vet vet1[52],vet2[52];
       Pilha *p1,*p2,*p3,*p4,*p5,*p6,*p7;
       Pilha *monte1, *monte2;//,*s1,*s2,*s3,*s4;

       p1->topo=NULL;
       p1->base=NULL;

       p2->topo=NULL;
       p2->base=NULL;
       
       


/*
       monte1->topo=NULL;
       monte1->base=NULL;

       p3->topo=NULL;
       p3->base=NULL;

       p4->topo=NULL;
       p4->base=NULL;

       p5->topo=NULL;
       p5->base=NULL;

       p6->topo=NULL;
       p6->base=NULL;

       p7->topo=NULL;
       p7->base=NULL;

       monte2->topo=NULL;
       monte2->base=NULL;

       */
       init();
       char caminho[54];

        BITMAP *mesa = load_bitmap("C:\\Users\\user\\Desktop\\ED\\Allegro\\cartas\\mesa.bmp",NULL);
        draw_sprite(screen, mesa, 0, 0);


        iniciaBaralho(vet1);
        embaralha(vet2,vet1);

        darCartas(p1,p2,p3,p4,p5,p6,p7,monte1,monte2,vet2);

      //desenhaPilha(monte1);
        desenhaPilha(p1);
        desenhaPilha(p2);
      //desenhaPilha(p3);
      //desenhaPilha(p4);
      //desenhaPilha(p5);
      //desenhaPilha(p6);
      //desenhaPilha(p7);
        readkey();

    deinit();
    return 0;
}
END_OF_MAIN()

Link para o comentário
Compartilhar em outros sites

2 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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...