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.
Pergunta
Heitor Colangelo
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.