/* Main ***********************************************************************/ int main(int argc, char** argv) { inicializaMapa(); //TODO: Excluir esta função e fazer a geração procedural dos mapas do jogo while(true){ renderizaMapa(); imprimeTela(); esperaTecla(); } return (EXIT_SUCCESS); }
int jogando(){ Node *temp=mesa; int auxI, auxII,primeiroNumero=temp->numberLeft, ultimoNumero,jogada, i;//joga = 1, pesca = 0; //Salva os dois números das extremidades da lista de dominós na mesa. while (temp!=NULL){ ultimoNumero=temp->numberRight; temp=temp->right; } imprimeTela(); //esse loop verifica se existe uma peça compativel para a jogada, caso não, pesca e repete a verificação do { for(temp=playerHand; temp!=NULL; temp=temp->right) { if(temp->numberLeft == primeiroNumero || temp->numberRight == primeiroNumero || temp->numberLeft == ultimoNumero || temp->numberRight == ultimoNumero) break; } if(temp == NULL){ playerHand=pescaDoMonte(playerHand); imprimeTela(); printf("peça pescada por falta de jogadas possíveis!\n"); return 1; } break; }while (1); //esse loop pega a peça selecionada do{ scanf("%d", &jogada); if(jogada > 0 && jogada <= contaLista(playerHand)){ i=1; for (temp = playerHand; i<jogada; temp=temp->right) i++; if (temp->numberLeft == primeiroNumero || temp->numberRight == primeiroNumero || temp->numberLeft == ultimoNumero || temp->numberRight == ultimoNumero) break; else { imprimeTela(); printf("Jogada inválida! Escolha outra peça: \n"); continue; } } else continue; break; } while (1); //essa parte faz os reaponteiramentos para dar um "pull" de uma lista pra outra. if (temp->left == NULL && temp->right == NULL){ playerHand=NULL; temp->left=NULL; temp->right=NULL; } else if (temp->left == NULL ){ playerHand=playerHand->right; playerHand->left = NULL; temp->right=NULL; } else if (temp->right==NULL) { temp->left->right=NULL; temp->left=NULL; } else { temp->left->right= temp->right; temp->right->left= temp->left; temp->left=NULL; temp->right=NULL; } //falta excluir o nó da lista da mão do { printf("onde jogar?(1 - esquerda (%d); 2 - direita (%d)\n", primeiroNumero, ultimoNumero); scanf("%d", &jogada); if (jogada == 1) { if(temp->numberRight==primeiroNumero) { temp->right=mesa; mesa=temp; break; } else if (temp->numberLeft==primeiroNumero) { auxI=temp->numberLeft; auxII=temp->numberRight; temp->numberLeft=auxII; temp->numberRight=auxI; temp->right=mesa; mesa=temp; break; } else { printf("jogada invalida!\n"); continue; } } else { Node *ultimo; for (ultimo=mesa; ultimo->right!=NULL; ultimo=ultimo->right); if (temp->numberLeft==ultimoNumero){ ultimo->right=temp; temp->left=ultimo; break; } if (temp->numberRight==ultimoNumero) { auxI=temp->numberLeft; auxII=temp->numberRight; temp->numberLeft=auxII; temp->numberRight=auxI; ultimo->right=temp; temp->left=ultimo; break; } else { printf("jogada inválida!\n"); continue; } } } while (1); return 1; }