Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ######################################################
- # Universidade de Brasilia #
- # Instituto de Ciencias Exatas #
- # Departamento de Ciencia da Computacao #
- # #
- # Algoritmos e Programacao de Computadores - 2/2018 #
- # #
- # Aluna : Giovana Pinho Garcia #
- # Matricula : 18/0101374 #
- # Turma : A #
- # Versao do Compilador : 6.3.0 #
- # #
- # Descricao : Jogo similar ao tetris com letras #
- ######################################################
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <time.h>
- #include <string.h>
- /*Expressões que mudam a cor dos caracteres no terminal*/
- #define GREEN "\x1b[32m"
- #define YELLOW "\x1b[33m"
- #define BLUE "\x1b[34m"
- #define MAGENTA "\x1b[35m"
- #define CYAN "\x1b[36m"
- #define RESET "\x1b[0m"
- #define RED "\x1b[31m"
- #define BPURPLE "\033[1;35m"
- #define BGREEN "\033[1;32m"
- #define BBLUE "\033[1;34m"
- #define BRED "\033[1;31m"
- #define BYELLOW "\033[1;33m"
- #ifdef _WIN32
- #define CLEAR "cls"
- #else
- #define CLEAR "clear"
- #endif
- int altura, largura, posicao, qtdIguais=0, vL[100], vC[100], pontos=0, pts=0, cont=0, vezes=1, tempoS, tempo;
- char tabuleiro[1000][1000];
- char p1, p2; //char para as pecas 1 e 2
- int x1, l1, x2, l2; //coordenadas de p1 e p2
- int Qtdpecas, QtdConect;
- int ativado=0; //modo rankeado ativado ou nao
- char vazio[] = "\0";
- typedef struct{
- char nick[11];
- int score;
- }Player;
- Player jogador[11];
- /*funcao para implementar getch e kbhit*/
- #ifndef _WIN32
- #include <termios.h>
- int kbhit(){
- struct termios oldt, newt;
- int ch, oldf;
- tcgetattr(STDIN_FILENO,&oldt);
- newt = oldt;
- newt.c_lflag &= ~(ICANON | ECHO);
- tcsetattr(STDIN_FILENO, TCSANOW, &newt);
- oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
- fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
- ch = getchar();
- tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
- fcntl(STDIN_FILENO, F_SETFL, oldf);
- if(ch != EOF){
- ungetc(ch,stdin);
- return 1;
- }
- return 0;
- }
- int getch(void) {
- int ch;
- struct termios oldt;
- struct termios newt;
- tcgetattr(STDIN_FILENO,&oldt);
- newt = oldt;
- newt.c_lflag &= ~(ICANON | ECHO);
- tcsetattr(STDIN_FILENO, TCSANOW, &newt);
- ch = getchar();
- tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
- return ch;
- }
- #else
- #include <conio.h>
- #endif
- /*funcao para printar as intrucoes*/
- void instrucoes(){
- printf("O jogo possui diversos tijolos aleatorios, que cairao de posicoes randomicas a partir do topo do tabuleiro. O jogador tem ");
- printf("como objetivo conseguir o maior numero de pontos antes do fim do jogo.\n\n");
- printf("O jogador controla as pecas que caem. Este pode executar os seguintes comandos:\n");
- printf("1. Movimentar-se horizontalmente, sem ultrapassar os limites do grid. Utilizando as teclas 'a' e 'd'.\n");
- printf("2. Acelerar a descida da peca. O movimento eh irreversivel ate que a peca alcance a superficie inferior do tabuleiro. Utilizando a tecla 's'.\n");
- printf("3. Alterar a ordem dos caracteres de uma peca enquanto cai. Utilizando a tecla 'w'.\n");
- printf("4. Alterar a orientacao da peca entre vertical e horizontal. Utilizando a tecla 'w'.\n\n");
- printf("Quando um conjunto de 4 ou mais caracteres conectados eh encontrado o jogador recebe um ponto para cada caractere ");
- printf("conectado e todos os caracteres desse conjunto sao apagados. Se outro conjunto de 4 ou mais caracteres for formado pelo ");
- printf("desaparecimento das pecas do conjunto anterior o jogador recebera os pontos relativos a esse conjunto, alem de receber um ");
- printf("bonus por ter feito um combo, quanto maior o combo maior deve ser o bonus.\n\n");
- printf("A partida deve ser encerrada caso as pecas alcancem o topo do tabuleiro, e novas pecas nao consigam mais ser inseridas por falta de espaco.\n\n");
- }
- /*funcao para criar caracteres pseudo-aleatorios*/
- void criachar(){
- srand(time(0));
- p1 = 'A' + rand() % Qtdpecas;
- p2 = 'A' + rand() % Qtdpecas;
- }
- /*funcao que define a posicao aleatoria das pecas*/
- void posicaopecas(){
- srand(time(0));
- posicao = (rand() % (largura-3)) + 1;
- }
- /*funcao para printar o tabuleiro na tela*/
- void mostratabuleiro(){
- int i, j;
- system(CLEAR);
- pontos += pts;
- printf("PONTOS : %d\n\n", pontos);
- pts = 0;
- for(i=0; i<altura; i++){
- for(j=0; j<largura; j++){
- if ((tabuleiro[i][j]>= 'A')&&(tabuleiro[i][j]<= 'J')){
- switch(tabuleiro[i][j]){
- case 'A':printf(GREEN"%c"RESET, tabuleiro[i][j]);
- break;
- case 'B':printf(RED"%c"RESET, tabuleiro[i][j]);
- break;
- case 'C':printf(CYAN"%c"RESET, tabuleiro[i][j]);
- break;
- case 'D':printf(MAGENTA"%c"RESET, tabuleiro[i][j]);
- break;
- case 'E':printf(YELLOW"%c"RESET, tabuleiro[i][j]);
- break;
- case 'F':printf(BGREEN"%c"RESET, tabuleiro[i][j]);
- break;
- case 'G':printf(BBLUE"%c"RESET, tabuleiro[i][j]);
- break;
- case 'H':printf(BPURPLE"%c"RESET, tabuleiro[i][j]);
- break;
- case 'I':printf(BRED"%c"RESET, tabuleiro[i][j]);
- break;
- case 'J':printf(BYELLOW"%c"RESET, tabuleiro[i][j]);
- break;
- default:break;
- }
- }
- else{
- printf("%c", tabuleiro[i][j]);
- }
- }
- printf("\n");
- }
- printf("\n");
- }
- /*funcao para mecher as pecas para o lado e mudar de horizontal para vertical*/
- void mecherpeca(){
- int i;
- char move;
- if((((tabuleiro[l1+1][x1] == ' ' || tabuleiro[l1+1][x1] == p2) && (tabuleiro[l2+1][x2] == ' ')) && ((tabuleiro[l2+1][x2] == ' ' || tabuleiro[l2+1][x2] == p1) && tabuleiro[l1+1][x1] == ' '))){
- for(i = 0; i < 40; i++){
- /*ler a acao que o jogador quer executar*/
- if(kbhit()){
- move = getch();
- /*mover a peca para direita*/
- if(move == 'd'){
- if((tabuleiro[l1][x1+1] == ' ') || (tabuleiro[l2][x2+1] == ' ')){
- tabuleiro[l1][x1] = ' ';
- tabuleiro[l2][x2] = ' ';
- x1++;
- x2++;
- tabuleiro[l1][x1] = p1;
- tabuleiro[l2][x2] = p2;
- }
- }
- /*mover a peca para esquerda*/
- if(move == 'a'){
- if((tabuleiro[l1][x1-1] == ' ') || (tabuleiro[l2][x2-1] == ' ')){
- tabuleiro[l1][x1] = ' ';
- tabuleiro[l2][x2] = ' ';
- x1--;
- x2--;
- tabuleiro[l1][x1] = p1;
- tabuleiro[l2][x2] = p2;
- }
- }
- /*mudar a posicao da peca no sentido horario*/
- if(move == 'w'){
- /*horizontal para vertical*/
- if(l1 == l2){
- if(x1<x2){
- tabuleiro[l1][x1] = ' ';
- x1 = x2;
- l1--;
- tabuleiro[l1][x1] = p1;
- }
- else {
- tabuleiro[l2][x2] = ' ';
- x2 = x1;
- l2--;
- tabuleiro[l2][x2] = p2;
- }
- }
- /*vertical para horizontal*/
- else if(x1 == x2){
- if((l1<l2) && (tabuleiro[l2][x2+1] == ' ')){
- tabuleiro[l1][x1] = ' ';
- x1++;
- l1 = l2;
- tabuleiro[l1][x1] = p1;
- }
- else if((l2<l1) && (tabuleiro[l1][x1+1] == ' ')){
- tabuleiro[l2][x2] = ' ';
- x2++;
- l2 = l1;
- tabuleiro[l2][x2] = p2;
- }
- }
- }
- /*aumentar a velocidade*/
- if(move == 's'){
- tempo = tempoS/100000;
- }
- mostratabuleiro();
- }
- usleep(tempo/40);
- }
- }
- }
- /*funcao para checar se essa posicao ja foi contada no contador*/
- int jaexiste(int l, int c){
- int i;
- for(i=0; i<qtdIguais; i++){
- if(vL[i] == l && vC[i] == c){
- return 1;
- }
- }
- return 0;
- }
- /*funcao recursiva para encontrar as letras juntas*/
- void EncIgual(int l, int c, int valor){
- if(qtdIguais == 0){
- vL[0] = l;
- vC[0] = c;
- qtdIguais++;
- }
- if(valor == tabuleiro[l+1][c] && jaexiste(l+1, c) == 0){
- vL[qtdIguais] = l+1;
- vC[qtdIguais] = c;
- qtdIguais++;
- EncIgual(l+1, c, valor);
- }
- if(valor == tabuleiro[l-1][c] && jaexiste(l-1, c) == 0){
- vL[qtdIguais] = l-1;
- vC[qtdIguais] = c;
- qtdIguais++;
- EncIgual(l-1, c, valor);
- }
- if(valor == tabuleiro[l][c+1] && jaexiste(l, c+1) == 0){
- vL[qtdIguais] = l;
- vC[qtdIguais] = c+1;
- qtdIguais++;
- EncIgual(l, c+1, valor);
- }
- if(valor == tabuleiro[l][c-1] && jaexiste(l, c-1) == 0){
- vL[qtdIguais] = l;
- vC[qtdIguais] = c-1;
- qtdIguais++;
- EncIgual(l, c-1, valor);
- }
- return;
- }
- /*funcao para trasformar os * em espacos e descer as pecas*/
- void Descerpecas(){
- int i, j, k, linha;
- for(j=1; j<largura-1; j++){
- for(i=altura-2; i>0; i--){
- if(tabuleiro[i][j] == '*'){ // transforma * em espaco
- tabuleiro[i][j] = ' ';
- k = i;
- cont = 1;
- while((tabuleiro[k-1][j] != ' ') && (k-1 >= 0)){ // transforma * em espaco
- if(tabuleiro[k-1][j] == '*'){
- tabuleiro[k-1][j] = ' ';
- }
- else{
- linha = k-1;
- while(tabuleiro[linha + 1][j] == ' '){ // desce a letra ate embaixo nao ser espaco
- tabuleiro[linha + 1][j] = tabuleiro[linha][j];
- tabuleiro[linha][j] = ' ';
- linha++;
- }
- }
- k--;
- }
- }
- }
- }
- usleep(500000);
- mostratabuleiro();
- }
- /*funcao para descer p1 e p2*/
- void DescerPecasPrincipais(){
- while((tabuleiro[l1+1][x1] == ' ') || (tabuleiro[l2+1][x2] == ' ')){
- mostratabuleiro();
- /*faz as pecas p1 e p2 descerem*/
- if(l1<l2){
- if(tabuleiro[l2+1][x2] == ' '){
- l2++;
- tabuleiro[l2-1][x2] = ' ';
- tabuleiro[l2][x2] = p2;
- }
- if(tabuleiro[l1+1][x1] == ' '){
- l1++;
- tabuleiro[l1-1][x1] = ' ';
- tabuleiro[l1][x1] = p1;
- }
- }
- else if(l2<l1 || l1==l2){
- if(tabuleiro[l1+1][x1] == ' '){
- l1++;
- tabuleiro[l1-1][x1] = ' ';
- tabuleiro[l1][x1] = p1;
- }
- if(tabuleiro[l2+1][x2] == ' '){
- l2++;
- tabuleiro[l2-1][x2] = ' ';
- tabuleiro[l2][x2] = p2;
- }
- }
- mecherpeca();
- }
- }
- /*funcao para sumir com as pecas juntas e pontuar*/
- void SumirPecas(){
- int x, y, i;
- qtdIguais = 0;
- EncIgual(l1, x1, tabuleiro[l1][x1]);
- /*confere se tem 4 ou mais iguais juntas*/
- if(qtdIguais >= QtdConect){
- pts += qtdIguais; //conta os pontos
- for(i=0; i<qtdIguais; i++){
- y = vL[i];
- x = vC[i];
- tabuleiro[y][x] = '*'; //troca por *
- }
- mostratabuleiro();
- Descerpecas();
- }
- if(tabuleiro[l2][x2] != ' '){
- qtdIguais = 0;
- EncIgual(l2, x2, tabuleiro[l2][x2]);
- /*confere se tem 4 ou mais iguais juntas*/
- if(qtdIguais >= QtdConect){
- pts += qtdIguais; //conta os pontos
- for(i=0; i<qtdIguais; i++){
- y = vL[i];
- x = vC[i];
- tabuleiro[y][x] = '*'; //troca por *
- }
- mostratabuleiro();
- Descerpecas(); //transforma * em espaco e desce as pecas
- }
- }
- }
- /*funcao para sumir as pecas que cairam e implementar o bonnus*/
- void SumirPecasBonus(){
- int x, y, i, j, k;
- vezes = 1;
- while(cont != 0){
- cont = 0;
- vezes++; //para implementar o bonus
- for(i=1; i<altura; i++){
- for(j=1; j<largura; j++){
- if((tabuleiro[i][j] != ' ') && (tabuleiro[i][j] != '#')){
- qtdIguais = 0;
- EncIgual(i, j, tabuleiro[i][j]);//checar quantas iguais adjacentes
- if(qtdIguais >= QtdConect){
- pts += (qtdIguais*vezes);
- for(k=0; k<qtdIguais; k++){
- y = vL[k];
- x = vC[k];
- tabuleiro[y][x] = '*';
- }
- mostratabuleiro();
- Descerpecas();
- }
- }
- }
- }
- }
- }
- /*define tamanho da tabuleiro*/
- void DimensoesTabuleiro(){
- int a, l;
- FILE* f;
- printf("Recomendado\nnao colocar matriz menor que 5x5 ou maior que 30x30\n");
- printf("Altura: \n");
- scanf("%d", &a);
- printf("Largura: \n");
- scanf("%d", &l);
- f = fopen("conf.txt", "r+");
- altura = a;
- largura = l;
- fprintf(f, "%d %d ", a, l);
- fclose(f);
- system(CLEAR);
- }
- /*define a qunantidade de pecas, as pecas conectadas e a velocidade das pecas*/
- void QuantidadePecas(){
- int p, c, a1, a2, a3, a4, escolha, s;
- do{
- do{
- printf("1 - Quntidade de pecas\n");
- printf("2 - Quantidade de pecas necessarias para pontuar\n");
- printf("3 - Velocidade das pecas\n");
- printf("4 - Voltar\n");
- scanf("%d", &escolha);
- }while(escolha != 1 && escolha != 2 && escolha != 3 && escolha != 4);
- system(CLEAR);
- if(escolha == 1){
- FILE* f;
- f = fopen("conf.txt", "r+");
- /*quantidade de pecas*/
- printf("ATENCAO : Minimo 2, Maximo 10, Default 5.\n");
- printf("Quantidade de pecas:\n");
- scanf("%d", &p);
- fscanf(f, "%d %d ", &a1, &a2);
- if(p>=2 && p<=10){
- Qtdpecas = p;
- fprintf(f,"%d ", p);
- }
- system(CLEAR);
- }
- else if(escolha == 2){
- FILE* f;
- f = fopen("conf.txt", "r+");
- /*quantidade de pecas conectadas para pontuar*/
- printf("ATENCAO : Minimo 3, Maximo 10, Default 4.\n");
- printf("Quantidade de pecas necessarias para se pontuar:\n");
- scanf("%d", &c);
- fscanf(f, "%d %d %d ", &a1, &a2, &a3);
- if(c>=3 && c<=10){
- QtdConect = c;
- fprintf(f,"%d ", c);
- }
- system(CLEAR);
- }
- else if(escolha == 3){
- FILE* f;
- f = fopen("conf.txt", "r+");
- /*velocidade que as pecas caem*/
- do{
- printf("Velocidade que as pecas caem:\n");
- printf("1 - Rapido\n");
- printf("2 - Medio\n");
- printf("3 - Lento\n");
- scanf("%d", &s);
- }while(s != 1 && s != 2 && s != 3);
- if(s == 1){
- tempoS = 360000;
- }
- else if(s == 2){
- tempoS = 720000;
- }
- else if(s == 3){
- tempoS = 820000;
- }
- fscanf(f, "%d %d %d %d ", &a1, &a2, &a3, &a4);
- fprintf(f,"%d", s);
- fclose(f);
- system(CLEAR);
- }
- }while(escolha != 4);
- }
- /*funcao para arrumar as configuracoes para o modo rankeado*/
- void AtivarRank(){
- ativado++;
- if(ativado%2 != 0){
- FILE* f;
- f = fopen("conf.txt", "w");
- fprintf(f, "%d %d %d %d %d", 15, 9, 7, 5, 720000);
- altura = 15;
- largura = 9;
- Qtdpecas = 7;
- QtdConect = 5;
- tempoS = 720000;
- fclose(f);
- ativado = 1;
- }
- else{
- ativado = 0;
- FILE* f;
- f = fopen("conf.txt", "w");
- fprintf(f, "%d %d %d %d %d", 13, 8, 5, 4, 720000);
- altura = 13;
- largura = 8;
- Qtdpecas = 5;
- QtdConect = 4;
- tempoS = 720000;
- fclose(f);
- }
- }
- /*funcao para mostrar o ranking*/
- void Rank(){
- int i;
- char comecar;
- FILE* fbin;
- fbin = fopen("ranking.bin", "rb");
- if(fbin == NULL){
- printf("Nao ha jogadores rankeados\n");
- }
- else{
- fread(&jogador, sizeof(Player), 1, fbin);
- for(i=0; i<10; i++){
- if(jogador[i].score != 0){
- printf("%s %d\n", jogador[i].nick, jogador[i].score);
- }
- }
- fclose(fbin);
- }
- printf("Aperte enter para voltar ao menu\n");
- /*esperar ate o jogador dar enter*/
- getchar();
- getchar();
- system(CLEAR);
- }
- /*funcao para ordenar vetor*/
- void BubbleSortSruct(){
- int i, j;
- Player aux;
- for(j=0; j<11; j++){
- for(i=0; i<10; i++){
- if(jogador[i].score < jogador[i+1].score){
- aux = jogador[i];
- jogador[i] = jogador[i+1];
- jogador[i+1] = aux;
- }
- }
- }
- }
- /*funcao para criar e atualizar o ranking*/
- void RegisterMatch(){
- int i;
- FILE* fbin;
- fbin = fopen("ranking.bin", "rb");
- /*caso ainda nao existir criar um arquivo binario*/
- if(fbin == NULL){
- strcpy(jogador[0].nick, jogador[10].nick);
- jogador[0].score = pontos;
- for(i=1; i<10; i++){
- strcpy(jogador[i].nick, vazio);
- jogador[i].score = 0;
- }
- fbin = fopen("ranking.bin", "wb");
- fwrite(&jogador, sizeof(Player), 1, fbin);
- fclose(fbin);
- }
- /*atualizar o ranking apos a partida*/
- else{
- fread(&jogador, sizeof(Player), 1, fbin);
- fclose(fbin);
- jogador[10].score = pontos;
- BubbleSortSruct();
- fbin = fopen("ranking.bin", "wb");
- fwrite(&jogador, sizeof(Player), 1, fbin);
- fclose(fbin);
- }
- }
- /*funcao para criar o arquivo de texto das configuracoes*/
- void CriarArquivo(){
- FILE* f;
- f = fopen("conf.txt", "r");
- if(f == NULL){
- f = fopen("conf.txt", "w");
- fprintf(f, "%d %d %d %d %d", 13, 8, 5, 4, 720000);
- altura = 13;
- largura = 8;
- Qtdpecas = 5;
- QtdConect = 4;
- tempoS = 720000;
- }
- else{
- fscanf(f, "%d %d %d %d %d", &altura, &largura, &Qtdpecas, &QtdConect, &tempoS);
- }
- fclose(f);
- }
- /*funcao das configuracoes*/
- void configuracoes(){
- int escolha;
- do{
- /*printa as opcoes de configuracoes*/
- printf("1 - Tabuleiro\n");
- printf("2 - Pecas\n");
- if(ativado == 1){
- printf("3 - Ativar modo Ranqueado : Ativado\n");
- }
- else{
- printf("3 - Ativar modo Ranqueado : Desativado\n");
- }
- printf("4 - Voltar\n");
- scanf("%d", &escolha);
- system(CLEAR);
- /*vai para a funcao que o jogador escolheu*/
- switch(escolha){
- case 1 : DimensoesTabuleiro(); break;
- case 2 : QuantidadePecas(); break;
- case 3 : AtivarRank(); break;
- case 4 : break;
- default :
- getchar();
- getchar();
- break;
- }
- }while(escolha != 4);
- }
- /*funcao para jogar*/
- void jogar(){
- int i=0, j=0, y, x, k, escolha=0, FimdeJogo=0, nulo=0;
- char file[1000], nickname[100] = "aaaaaaaaaaa";
- while(escolha != 1 && escolha != 2 && ativado == 0){
- /*modo replay ou nao*/
- printf("Se quiser jogar um jogo novo digite 1.\n");
- printf("Se quiser jogar modo replay digite 2\n");
- scanf("%d", &escolha);
- }
- /*pegar o nickname da pessoa no modo rankeado*/
- while(ativado == 1 && strlen(nickname) > 10){
- printf("Minimo 1 caractere e Maximo 10 caracteres\n");
- printf("Digite seu nickname:\n");
- scanf("%s", nickname);
- system(CLEAR);
- }
- strcpy(jogador[10].nick, nickname);
- FILE* fd;
- /*jogar um novo jogo*/
- if(escolha == 1){
- printf("Digite o nome do arquivo texto:\n");
- scanf("%s", file);
- /*escrever no arquivo*/
- fd = fopen(file, "w");
- }
- /*jogar modo replay*/
- else if(escolha == 2){
- do{
- printf("Digite o nome do arquivo que voce quer usar como replay:\n");
- scanf("%s", file);
- /*ler do arquivo*/
- fd = fopen(file, "r");
- nulo = 0;
- /*pedir nome do arquivo novamente se ele nao existir*/
- if(fd == NULL){
- printf("Esse arquivo nao existe\n");
- nulo = 1;
- }
- }while(nulo == 1);
- }
- /*define a borda da matriz*/
- for(i=0; i < altura; i++){
- for(j=0; j < largura; j++){
- if((j == 0) || (j == (largura-1)) || (i == (altura-1))){
- tabuleiro[i][j] = '#';
- }
- else{
- tabuleiro[i][j] = ' ';
- }
- }
- }
- /*loop do jogo para continuar ate nao caber mais pecas*/
- pontos = 0;
- while(FimdeJogo == 0){
- /*caso seja modo rankeado*/
- if(escolha == 0){
- criachar();
- }
- /*escrever no arquivo*/
- else if(escolha == 1){
- criachar();
- fprintf(fd, "%c%c", p1, p2);
- }
- /*ler do arquivo*/
- else if(escolha == 2){
- if(!feof(fd)){
- fscanf(fd, "%c%c", &p1, &p2);
- }
- }
- /*checa se chegou no final do arquivo*/
- if(escolha == 2 && feof(fd)){
- break;
- }
- posicaopecas();
- tabuleiro[0][posicao] = p1;
- tabuleiro[0][posicao+1] = p2;
- x1=posicao;
- l1=0;
- x2=posicao+1;
- l2=0;
- tempo = tempoS;
- mostratabuleiro();
- usleep(720);
- /*loop para cairem as pecas*/
- DescerPecasPrincipais();
- /*fazer as pecas que estao juntas virarem asterisco*/
- SumirPecas();
- /*para sumir pecas que cairam e implementar o bonus*/
- SumirPecasBonus();
- /*checa a condicao para o jogo continuar*/
- for(j=1; j<largura-2; j++){
- if(tabuleiro[0][j] != ' '){
- FimdeJogo = 1;
- }
- }
- }
- if(ativado == 0){
- fclose(fd);
- }
- printf("FIM DE JOGO\n");
- printf("SUA PONTUACAO FOI %d\n\n", pontos);
- if(ativado == 1){
- RegisterMatch();
- }
- }
- int main(){
- int escolha, i, j, comecar;
- system(CLEAR);
- printf(" TETRIS \n");
- printf("Tecle enter para continuar\n");
- /*esperar ate o jogador dar enter*/
- getchar();
- getchar();
- system(CLEAR);
- CriarArquivo();
- /*loop para printar menu ate o jogador selecionar sair*/
- do {
- /*prints do menu*/
- printf("1 - Jogar\n");
- printf("2 - Instrucoes\n");
- printf("3 - Configuracoes\n");
- printf("4 - Ranking\n");
- printf("5 - Sair\n");
- printf("Digite o numero correspondente a opcao desejada:\n");
- scanf("%d", &escolha);
- system(CLEAR);
- /*vai para a funcao que o jogador escolheu*/
- switch(escolha){
- case 1: jogar(); break;
- case 2: instrucoes(); break;
- case 3: configuracoes(); break;
- case 4: Rank(); break;
- case 5: break;
- default:
- getchar();
- getchar();
- break;
- }
- }while (escolha != 5);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement