Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // tg1.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <cstdlib>
- #include <cstdio>
- #include <locale.h>
- #include <string.h>
- #include <time.h>
- #define MAX_NOME 100
- #define MAX_ENERGIA 50
- #define CELULA_INICIAL 0
- #define TESOURO_INICIAL 0
- #define CELULA_INICIAL_MONSTRO 0
- #define MAX_ENERGIA_MONSTRO 50
- #define MAX_CELULA 21
- #define MAX_CMD 10
- #define MAX_LINHA 500
- // ta a trocar oeste com este e qnd o valor de norte da sala é 1 em vez de -1
- struct Jogador
- {
- char nome[MAX_NOME];
- int energia, celula, tesouro;
- };
- struct Monstro
- {
- int celula, energiaMonstro;
- };
- struct Celula
- {
- int norte;
- int sul;
- int oeste;
- int este;
- int tesouro;
- char descricao[ MAX_NOME ];
- };
- void inicializarJogador(struct Jogador *pJogador);
- void inicializarCelula(struct Celula *pCelula);
- void inicializarMonstro(struct Monstro *pMonstro);
- void verificarModoSU(int argc, char* argv[], int superUser, struct Jogador jogador);
- void sUser(int superUser, struct Monstro pMonstro);
- void celulaJogadorMonstro(struct Jogador *jogador, struct Monstro *monstro);
- void celulaJogadorTesouro(struct Jogador *jogador, struct Celula *celula);
- void guardarJogo(struct Jogador *jogador, struct Monstro *monstro);
- void carregarJogo(struct Jogador *jogador, struct Monstro *monstro);
- void menuAjuda();
- void testarJogador(struct Jogador jogador);
- void testarMonstro(struct Monstro monstro);
- void testarCelulas(struct Celula *pCelula);
- void testarSU(int superUser);
- void testarJogadorMonstro(struct Jogador jogador, struct Monstro monstro);
- void testarJogadorTesouro(struct Jogador jogador, struct Celula celula);
- int main(int argc, char* argv[])
- {
- int superUser = 0;
- char cmd[MAX_CMD];
- setlocale(LC_ALL, "Portuguese");
- struct Jogador jogador;
- inicializarJogador(&jogador);
- struct Celula celula[MAX_CELULA];
- inicializarCelula(celula);
- //printf("verifica jogador.celula dps de inicia.celula: %d\n", jogador.celula);
- //printf("verifica o valor sala 0 do norte: %d\n", celula[jogador.celula].norte);
- struct Monstro monstro;
- inicializarMonstro(&monstro);
- //testarJogador(jogador);
- //testarCelulas(celula);
- //testarMonstro(monstro);
- //testarSU(superUser);
- verificarModoSU(argc, argv, superUser, jogador);
- printf("%s\n", celula[jogador.celula].descricao);
- srand ( time(NULL) );
- monstro.celula = 5/*rand() % 22*/;
- celula[10].tesouro = 1;
- //printf("sala 1 tesouro: %d\n", celula[1].tesouro);
- //printf("sala 10 com tesouro: %d\n", celula[10].tesouro);
- //printf("S MONSTRO RAND: %d\n", monstro.celula);
- do
- {
- printf("Para onde se quer movimentar?\n");
- scanf("%s", cmd);
- if(strcmp(cmd, "norte") == 0)
- {
- if(celula[jogador.celula].norte == -1)
- {
- printf("Esta celula não tem saida para norte!\n");
- }
- else
- {
- //printf("sala %d jogador.celula: %d\n", celula[jogador.celula], jogador.celula);
- jogador.celula = celula[jogador.celula].norte;
- //printf("NOVA CELULA JOGADOR:::::::: %d\n", jogador.celula);
- printf("%s\n", celula[jogador.celula].descricao);
- sUser(superUser, monstro); //se super user mostrar sala do monstro
- celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
- celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
- //testarJogadorMonstro(jogador, monstro);
- //testarJogadorTesouro(jogador,celula);
- }
- }
- else if(strcmp(cmd, "sul") == 0)
- {
- if(celula[jogador.celula].sul == -1)
- {
- printf("Esta celula não tem saida para sul!\n");
- }
- else
- {
- jogador.celula = celula[jogador.celula].sul;
- printf("%s\n", celula[jogador.celula].descricao);
- sUser(superUser, monstro); //se super user mostrar sala do monstro
- celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
- celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
- //testarJogadorMonstro(jogador, monstro);
- //testarJogadorTesouro(jogador,celula);
- }
- }
- else if(strcmp(cmd, "oeste") == 0)
- {
- if(celula[jogador.celula].oeste == -1)
- {
- printf("Esta celula não tem saida para oeste!\n");
- }
- else
- {
- jogador.celula = celula[jogador.celula].oeste;
- printf("%s\n", celula[jogador.celula].descricao);
- sUser(superUser, monstro); //se super user mostrar sala do monstro
- celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
- celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
- //testarJogadorMonstro(jogador, monstro);
- //testarJogadorTesouro(jogador,celula);
- }
- }
- else if(strcmp(cmd, "este") == 0)
- {
- if(celula[jogador.celula].este == -1)
- {
- printf("Esta celula não tem saida para este!\n");
- }
- else
- {
- jogador.celula = celula[jogador.celula].este;
- printf("%s\n", celula[jogador.celula].descricao);
- sUser(superUser, monstro); //se super user mostrar sala do monstro
- celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
- celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
- //testarJogadorMonstro(jogador, monstro);
- //testarJogadorTesouro(jogador,celula);
- }
- }
- else if(strcmp(cmd, "guardar") == 0)
- {
- guardarJogo(&jogador, &monstro);
- }
- else if(strcmp(cmd, "carregar") == 0)
- {
- carregarJogo(&jogador, &monstro);
- }
- else if(strcmp(cmd, "ajuda") == 0)
- {
- menuAjuda();
- }
- else
- {
- printf("Comando inválido!\n");
- }
- }while((jogador.energia > 0) && (jogador.tesouro == 0));
- system("pause");
- return 0;
- }
- void inicializarJogador(struct Jogador *pJogador)
- {
- printf("Qual o nome do jogador:");
- scanf("%s", &pJogador->nome);
- pJogador->energia = MAX_ENERGIA;
- pJogador->celula = CELULA_INICIAL;
- printf("celula de inicializarJogador %d\n", pJogador->celula);
- pJogador->tesouro = TESOURO_INICIAL;
- };
- void inicializarCelula(struct Celula *pCelula)
- {/*C:\\ESTIG\\11-12\\SO\\TG1\\6311_Miguel_Silva_TG1\\tg1\\Debug\\*/
- //FILE *fich;
- //fich = fopen("JABoard.txt", "r");
- FILE *fich2;
- fich2 = fopen("JA.bin", "rb");
- // FILE *fich3;
- //fich3 = fopen("JA.bin","rb");
- char linha[ MAX_LINHA ];
- int sala = 0;
- if(fich2 != NULL /*fich2 != NULL*/)
- {
- /* while a funcionar fgetc::::: com espaço no inicio do txt snao aparece 1 em vez de -1*/
- //while(fgetc(fich) != EOF/*!feof(fich)*/)
- //{
- // if( fgets(linha, MAX_LINHA, fich) != NULL)
- // {
- // sscanf(linha, "%d\n", &pCelula[sala].norte);
- // }
- // if( fgets(linha, MAX_LINHA, fich) != NULL )
- // {
- // sscanf(linha, "%d\n", &pCelula[sala].sul);
- // }
- // if( fgets(linha, MAX_LINHA, fich) != NULL)
- // {
- // sscanf(linha, "%d\n", &pCelula[sala].oeste);
- // }
- // if( fgets(linha, MAX_LINHA, fich) != NULL)
- // {
- // sscanf(linha, "%d\n", &pCelula[sala].este);
- // }
- // if( fgets(linha, MAX_LINHA, fich) != NULL)
- // {
- // //sscanf(linha, "%s\n", &pCelula[sala].descricao);
- // strcpy(pCelula[sala].descricao, linha);
- // }
- // if( fgets(linha, MAX_LINHA, fich) != NULL)
- // {
- // sscanf(linha, "%d\n", &pCelula[sala].tesouro);
- // }
- // sala++;
- // }
- //fwrite(pCelula, sizeof(struct Celula), MAX_CELULA, fich2);
- fread(pCelula, sizeof(struct Celula), MAX_CELULA, fich2);
- }
- else
- {
- printf("Ficheiro erro!\n");
- }
- //fclose(fich);
- fclose(fich2);
- };
- void inicializarMonstro(struct Monstro *pMonstro)
- {
- pMonstro->energiaMonstro = MAX_ENERGIA_MONSTRO;
- pMonstro->celula = CELULA_INICIAL_MONSTRO;
- };
- void verificarModoSU(int argc, char* argv[], int superUser, struct Jogador jogador)
- {
- if (argc == 2 && (strcmp(argv[1], "su")) == 0)
- {
- superUser = 1;
- jogador.energia = 100;
- printf("Modo Super User!\n");
- printf("A energia do jogador é: %d\n", jogador.energia);
- }
- };
- void sUser(int superUser, struct Monstro pMonstro)
- {
- if(superUser == 1)
- {
- printf("Monstro na celula: %d", pMonstro.celula);
- }
- };
- void celulaJogadorMonstro(struct Jogador *jogador, struct Monstro *monstro)
- {
- if(jogador->celula == monstro->celula)
- {
- int escolha = rand() % 2;
- printf("Encontrou o monstro. Lutar!!\n");
- if(escolha == 0)
- {
- int descontoJ = rand() % 20 + 10;
- jogador->energia = jogador->energia - descontoJ;
- if(jogador->energia > 0)
- {
- printf("O monstro descontou-lhe %d. Tem %d de energia!\n", descontoJ, jogador->energia);
- }
- else
- {
- printf("Foi derrotado pelo monstro!");
- }
- }
- else
- {
- int descontoM = rand() % 20 + 10;
- monstro->energiaMonstro = monstro->energiaMonstro - descontoM;
- if(monstro->energiaMonstro > 0)
- {
- printf("Conseguiu atingir o monstro descontando %d. A energia do monstro é %d!\n", descontoM, monstro->energiaMonstro);
- monstro->celula = 5/*rand() % 22*/;
- }
- else
- {
- printf("Conseguiu matar o monstro!\n");
- }
- }
- }
- else
- {
- //printf("SALAs DIFERENTEs!!\n");
- }
- };
- void celulaJogadorTesouro(struct Jogador *jogador, struct Celula *celula)
- {
- if(celula[jogador->celula].tesouro == 1)
- {
- jogador->tesouro = 1;
- printf("Encontrou o tesouro!! jogador tesouro: %d\n", jogador->tesouro);
- }
- };
- void guardarJogo(struct Jogador *jogador, struct Monstro *monstro)
- {
- FILE *fichG;
- fichG = fopen("GuardarJogo.bin", "wb");
- fwrite(jogador, sizeof(struct Jogador), 1, fichG);
- fwrite(monstro, sizeof(struct Monstro), 1, fichG);
- fclose(fichG);
- printf("Jogo guardado!\n");
- };
- void carregarJogo(struct Jogador *jogador, struct Monstro *monstro)
- {
- FILE *fichC;
- fichC = fopen("GuardarJogo.bin", "rb");
- if(fichC != NULL)
- {
- fread(jogador, sizeof(struct Jogador), 1, fichC);
- fread(monstro, sizeof(struct Monstro), 1, fichC);
- fclose(fichC);
- printf("Jogador %s na celula: %d, com %d de energia.\n", jogador->nome, jogador->celula, jogador->energia);
- }
- else
- {
- printf("Ficheiro com jogo gravado não existente!\n");
- }
- };
- void menuAjuda()
- {
- printf("Movimentar jogador:\n-Mover para norte: norte\n-Mover para sul: sul\n-Mover para oeste: oeste\n-Mover para este: este\n");
- printf("\nGuardar jogo: guardar\n");
- printf("Carregar jogo: carregar\n");
- };
- void testarJogador(struct Jogador jogador) //como nao se vai alterar dados nao é necessario ponteiro *pJogador
- {
- printf("O nome do jogador é: %s\n", jogador.nome);
- printf("A energia do jogador é: %d\n", jogador.energia);
- printf("A celula incial é: %d\n", jogador.celula);
- };
- void testarMonstro(struct Monstro monstro)
- {
- printf("O monstro está na sala: %d\n", monstro.celula);
- printf("A energia do monstro é: %d\n", monstro.energiaMonstro);
- }
- void testarCelulas(struct Celula *pCelula)
- {
- for(int i = 0; i < MAX_CELULA; i++)
- {
- printf("%d\n", pCelula[i].norte);
- printf("%d\n", pCelula[i].sul);
- printf("%d\n", pCelula[i].oeste);
- printf("%d\n", pCelula[i].este);
- printf("%s", pCelula[i].descricao);
- printf("%d\n", pCelula[i].tesouro);
- }
- }
- void testarSU(int su)
- {
- if(su == 0)
- printf("Modo superuser on!\n");
- else
- printf("Modo superuser off!\n");
- }
- void testarJogadorMonstro(struct Jogador jogador, struct Monstro monstro)
- {
- if(jogador.celula == monstro.celula)
- {
- printf("O jogador %s encontra-se na mesma sala que o monstro!\n", jogador.nome);
- }
- else
- {
- printf("A sala do jogador é diferente da sala do monstro!\n");
- }
- }; //fazer
- void testarJogadorTesouro(struct Jogador jogador, struct Celula celula)
- {
- if(jogador.tesouro == celula.tesouro)
- {
- printf("O jogador encontra-se na sala onde está o tesouro!\n");
- }
- else
- {
- printf("O jogador não tem o tesouro.\n");
- }
- }; //fazer
Add Comment
Please, Sign In to add comment