Guest User

Untitled

a guest
Apr 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.60 KB | None | 0 0
  1. // tg1.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <cstdlib>
  6. #include <cstdio>
  7. #include <locale.h>
  8. #include <string.h>
  9. #include <time.h>
  10.  
  11. #define MAX_NOME 100
  12. #define MAX_ENERGIA 50
  13. #define CELULA_INICIAL 0
  14. #define TESOURO_INICIAL 0
  15. #define CELULA_INICIAL_MONSTRO 0
  16. #define MAX_ENERGIA_MONSTRO 50
  17. #define MAX_CELULA 21
  18. #define MAX_CMD 10
  19. #define MAX_LINHA 500
  20.  
  21. // ta a trocar oeste com este e qnd o valor de norte da sala é 1 em vez de -1
  22.  
  23. struct Jogador
  24. {
  25. char nome[MAX_NOME];
  26. int energia, celula, tesouro;
  27. };
  28.  
  29. struct Monstro
  30. {
  31. int celula, energiaMonstro;
  32. };
  33.  
  34. struct Celula
  35. {
  36. int norte;
  37. int sul;
  38. int oeste;
  39. int este;
  40. int tesouro;
  41. char descricao[ MAX_NOME ];
  42. };
  43.  
  44. void inicializarJogador(struct Jogador *pJogador);
  45. void inicializarCelula(struct Celula *pCelula);
  46. void inicializarMonstro(struct Monstro *pMonstro);
  47. void verificarModoSU(int argc, char* argv[], int superUser, struct Jogador jogador);
  48. void sUser(int superUser, struct Monstro pMonstro);
  49. void celulaJogadorMonstro(struct Jogador *jogador, struct Monstro *monstro);
  50. void celulaJogadorTesouro(struct Jogador *jogador, struct Celula *celula);
  51. void guardarJogo(struct Jogador *jogador, struct Monstro *monstro);
  52. void carregarJogo(struct Jogador *jogador, struct Monstro *monstro);
  53. void menuAjuda();
  54. void testarJogador(struct Jogador jogador);
  55. void testarMonstro(struct Monstro monstro);
  56. void testarCelulas(struct Celula *pCelula);
  57. void testarSU(int superUser);
  58. void testarJogadorMonstro(struct Jogador jogador, struct Monstro monstro);
  59. void testarJogadorTesouro(struct Jogador jogador, struct Celula celula);
  60.  
  61. int main(int argc, char* argv[])
  62. {
  63. int superUser = 0;
  64. char cmd[MAX_CMD];
  65. setlocale(LC_ALL, "Portuguese");
  66.  
  67. struct Jogador jogador;
  68. inicializarJogador(&jogador);
  69.  
  70. struct Celula celula[MAX_CELULA];
  71. inicializarCelula(celula);
  72. //printf("verifica jogador.celula dps de inicia.celula: %d\n", jogador.celula);
  73. //printf("verifica o valor sala 0 do norte: %d\n", celula[jogador.celula].norte);
  74. struct Monstro monstro;
  75. inicializarMonstro(&monstro);
  76.  
  77. //testarJogador(jogador);
  78. //testarCelulas(celula);
  79. //testarMonstro(monstro);
  80. //testarSU(superUser);
  81.  
  82. verificarModoSU(argc, argv, superUser, jogador);
  83.  
  84. printf("%s\n", celula[jogador.celula].descricao);
  85.  
  86. srand ( time(NULL) );
  87. monstro.celula = 5/*rand() % 22*/;
  88. celula[10].tesouro = 1;
  89. //printf("sala 1 tesouro: %d\n", celula[1].tesouro);
  90. //printf("sala 10 com tesouro: %d\n", celula[10].tesouro);
  91. //printf("S MONSTRO RAND: %d\n", monstro.celula);
  92.  
  93. do
  94. {
  95. printf("Para onde se quer movimentar?\n");
  96. scanf("%s", cmd);
  97.  
  98. if(strcmp(cmd, "norte") == 0)
  99. {
  100. if(celula[jogador.celula].norte == -1)
  101. {
  102. printf("Esta celula não tem saida para norte!\n");
  103. }
  104. else
  105. {
  106. //printf("sala %d jogador.celula: %d\n", celula[jogador.celula], jogador.celula);
  107. jogador.celula = celula[jogador.celula].norte;
  108. //printf("NOVA CELULA JOGADOR:::::::: %d\n", jogador.celula);
  109. printf("%s\n", celula[jogador.celula].descricao);
  110.  
  111. sUser(superUser, monstro); //se super user mostrar sala do monstro
  112. celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
  113. celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
  114.  
  115. //testarJogadorMonstro(jogador, monstro);
  116. //testarJogadorTesouro(jogador,celula);
  117. }
  118. }
  119. else if(strcmp(cmd, "sul") == 0)
  120. {
  121. if(celula[jogador.celula].sul == -1)
  122. {
  123. printf("Esta celula não tem saida para sul!\n");
  124. }
  125. else
  126. {
  127. jogador.celula = celula[jogador.celula].sul;
  128. printf("%s\n", celula[jogador.celula].descricao);
  129.  
  130. sUser(superUser, monstro); //se super user mostrar sala do monstro
  131. celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
  132. celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
  133.  
  134. //testarJogadorMonstro(jogador, monstro);
  135. //testarJogadorTesouro(jogador,celula);
  136. }
  137. }
  138. else if(strcmp(cmd, "oeste") == 0)
  139. {
  140. if(celula[jogador.celula].oeste == -1)
  141. {
  142. printf("Esta celula não tem saida para oeste!\n");
  143. }
  144. else
  145. {
  146. jogador.celula = celula[jogador.celula].oeste;
  147. printf("%s\n", celula[jogador.celula].descricao);
  148.  
  149. sUser(superUser, monstro); //se super user mostrar sala do monstro
  150. celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
  151. celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
  152.  
  153. //testarJogadorMonstro(jogador, monstro);
  154. //testarJogadorTesouro(jogador,celula);
  155. }
  156. }
  157. else if(strcmp(cmd, "este") == 0)
  158. {
  159. if(celula[jogador.celula].este == -1)
  160. {
  161. printf("Esta celula não tem saida para este!\n");
  162. }
  163. else
  164. {
  165. jogador.celula = celula[jogador.celula].este;
  166. printf("%s\n", celula[jogador.celula].descricao);
  167.  
  168. sUser(superUser, monstro); //se super user mostrar sala do monstro
  169. celulaJogadorMonstro(&jogador, &monstro); //verficar se sala jogador = sala monstro
  170. celulaJogadorTesouro(&jogador, celula); //verficar se existe tesouro na sala
  171.  
  172. //testarJogadorMonstro(jogador, monstro);
  173. //testarJogadorTesouro(jogador,celula);
  174. }
  175. }
  176. else if(strcmp(cmd, "guardar") == 0)
  177. {
  178. guardarJogo(&jogador, &monstro);
  179. }
  180. else if(strcmp(cmd, "carregar") == 0)
  181. {
  182. carregarJogo(&jogador, &monstro);
  183. }
  184. else if(strcmp(cmd, "ajuda") == 0)
  185. {
  186. menuAjuda();
  187. }
  188. else
  189. {
  190. printf("Comando inválido!\n");
  191. }
  192.  
  193. }while((jogador.energia > 0) && (jogador.tesouro == 0));
  194.  
  195. system("pause");
  196.  
  197. return 0;
  198. }
  199.  
  200. void inicializarJogador(struct Jogador *pJogador)
  201. {
  202. printf("Qual o nome do jogador:");
  203. scanf("%s", &pJogador->nome);
  204. pJogador->energia = MAX_ENERGIA;
  205. pJogador->celula = CELULA_INICIAL;
  206. printf("celula de inicializarJogador %d\n", pJogador->celula);
  207. pJogador->tesouro = TESOURO_INICIAL;
  208. };
  209.  
  210. void inicializarCelula(struct Celula *pCelula)
  211. {/*C:\\ESTIG\\11-12\\SO\\TG1\\6311_Miguel_Silva_TG1\\tg1\\Debug\\*/
  212. //FILE *fich;
  213. //fich = fopen("JABoard.txt", "r");
  214. FILE *fich2;
  215. fich2 = fopen("JA.bin", "rb");
  216. // FILE *fich3;
  217. //fich3 = fopen("JA.bin","rb");
  218.  
  219. char linha[ MAX_LINHA ];
  220. int sala = 0;
  221.  
  222. if(fich2 != NULL /*fich2 != NULL*/)
  223. {
  224.  
  225. /* while a funcionar fgetc::::: com espaço no inicio do txt snao aparece 1 em vez de -1*/
  226. //while(fgetc(fich) != EOF/*!feof(fich)*/)
  227. //{
  228. // if( fgets(linha, MAX_LINHA, fich) != NULL)
  229. // {
  230. // sscanf(linha, "%d\n", &pCelula[sala].norte);
  231. // }
  232. // if( fgets(linha, MAX_LINHA, fich) != NULL )
  233. // {
  234. // sscanf(linha, "%d\n", &pCelula[sala].sul);
  235. // }
  236. // if( fgets(linha, MAX_LINHA, fich) != NULL)
  237. // {
  238. // sscanf(linha, "%d\n", &pCelula[sala].oeste);
  239. // }
  240. // if( fgets(linha, MAX_LINHA, fich) != NULL)
  241. // {
  242. // sscanf(linha, "%d\n", &pCelula[sala].este);
  243. // }
  244. // if( fgets(linha, MAX_LINHA, fich) != NULL)
  245. // {
  246. // //sscanf(linha, "%s\n", &pCelula[sala].descricao);
  247. // strcpy(pCelula[sala].descricao, linha);
  248. // }
  249. // if( fgets(linha, MAX_LINHA, fich) != NULL)
  250. // {
  251. // sscanf(linha, "%d\n", &pCelula[sala].tesouro);
  252. // }
  253. // sala++;
  254. // }
  255. //fwrite(pCelula, sizeof(struct Celula), MAX_CELULA, fich2);
  256. fread(pCelula, sizeof(struct Celula), MAX_CELULA, fich2);
  257.  
  258. }
  259. else
  260. {
  261. printf("Ficheiro erro!\n");
  262. }
  263. //fclose(fich);
  264. fclose(fich2);
  265. };
  266.  
  267. void inicializarMonstro(struct Monstro *pMonstro)
  268. {
  269. pMonstro->energiaMonstro = MAX_ENERGIA_MONSTRO;
  270. pMonstro->celula = CELULA_INICIAL_MONSTRO;
  271. };
  272.  
  273. void verificarModoSU(int argc, char* argv[], int superUser, struct Jogador jogador)
  274. {
  275. if (argc == 2 && (strcmp(argv[1], "su")) == 0)
  276. {
  277. superUser = 1;
  278. jogador.energia = 100;
  279. printf("Modo Super User!\n");
  280. printf("A energia do jogador é: %d\n", jogador.energia);
  281. }
  282. };
  283.  
  284. void sUser(int superUser, struct Monstro pMonstro)
  285. {
  286. if(superUser == 1)
  287. {
  288. printf("Monstro na celula: %d", pMonstro.celula);
  289. }
  290. };
  291.  
  292. void celulaJogadorMonstro(struct Jogador *jogador, struct Monstro *monstro)
  293. {
  294. if(jogador->celula == monstro->celula)
  295. {
  296. int escolha = rand() % 2;
  297. printf("Encontrou o monstro. Lutar!!\n");
  298. if(escolha == 0)
  299. {
  300. int descontoJ = rand() % 20 + 10;
  301. jogador->energia = jogador->energia - descontoJ;
  302. if(jogador->energia > 0)
  303. {
  304. printf("O monstro descontou-lhe %d. Tem %d de energia!\n", descontoJ, jogador->energia);
  305. }
  306. else
  307. {
  308. printf("Foi derrotado pelo monstro!");
  309. }
  310. }
  311. else
  312. {
  313. int descontoM = rand() % 20 + 10;
  314. monstro->energiaMonstro = monstro->energiaMonstro - descontoM;
  315. if(monstro->energiaMonstro > 0)
  316. {
  317. printf("Conseguiu atingir o monstro descontando %d. A energia do monstro é %d!\n", descontoM, monstro->energiaMonstro);
  318. monstro->celula = 5/*rand() % 22*/;
  319. }
  320. else
  321. {
  322. printf("Conseguiu matar o monstro!\n");
  323. }
  324. }
  325. }
  326. else
  327. {
  328. //printf("SALAs DIFERENTEs!!\n");
  329. }
  330. };
  331.  
  332. void celulaJogadorTesouro(struct Jogador *jogador, struct Celula *celula)
  333. {
  334. if(celula[jogador->celula].tesouro == 1)
  335. {
  336. jogador->tesouro = 1;
  337. printf("Encontrou o tesouro!! jogador tesouro: %d\n", jogador->tesouro);
  338. }
  339. };
  340.  
  341. void guardarJogo(struct Jogador *jogador, struct Monstro *monstro)
  342. {
  343. FILE *fichG;
  344. fichG = fopen("GuardarJogo.bin", "wb");
  345. fwrite(jogador, sizeof(struct Jogador), 1, fichG);
  346. fwrite(monstro, sizeof(struct Monstro), 1, fichG);
  347. fclose(fichG);
  348. printf("Jogo guardado!\n");
  349. };
  350.  
  351. void carregarJogo(struct Jogador *jogador, struct Monstro *monstro)
  352. {
  353. FILE *fichC;
  354. fichC = fopen("GuardarJogo.bin", "rb");
  355. if(fichC != NULL)
  356. {
  357. fread(jogador, sizeof(struct Jogador), 1, fichC);
  358. fread(monstro, sizeof(struct Monstro), 1, fichC);
  359. fclose(fichC);
  360. printf("Jogador %s na celula: %d, com %d de energia.\n", jogador->nome, jogador->celula, jogador->energia);
  361. }
  362. else
  363. {
  364. printf("Ficheiro com jogo gravado não existente!\n");
  365. }
  366. };
  367.  
  368. void menuAjuda()
  369. {
  370. printf("Movimentar jogador:\n-Mover para norte: norte\n-Mover para sul: sul\n-Mover para oeste: oeste\n-Mover para este: este\n");
  371. printf("\nGuardar jogo: guardar\n");
  372. printf("Carregar jogo: carregar\n");
  373. };
  374.  
  375. void testarJogador(struct Jogador jogador) //como nao se vai alterar dados nao é necessario ponteiro *pJogador
  376. {
  377. printf("O nome do jogador é: %s\n", jogador.nome);
  378. printf("A energia do jogador é: %d\n", jogador.energia);
  379. printf("A celula incial é: %d\n", jogador.celula);
  380. };
  381.  
  382. void testarMonstro(struct Monstro monstro)
  383. {
  384. printf("O monstro está na sala: %d\n", monstro.celula);
  385. printf("A energia do monstro é: %d\n", monstro.energiaMonstro);
  386. }
  387.  
  388. void testarCelulas(struct Celula *pCelula)
  389. {
  390. for(int i = 0; i < MAX_CELULA; i++)
  391. {
  392. printf("%d\n", pCelula[i].norte);
  393. printf("%d\n", pCelula[i].sul);
  394. printf("%d\n", pCelula[i].oeste);
  395. printf("%d\n", pCelula[i].este);
  396. printf("%s", pCelula[i].descricao);
  397. printf("%d\n", pCelula[i].tesouro);
  398. }
  399. }
  400.  
  401. void testarSU(int su)
  402. {
  403. if(su == 0)
  404. printf("Modo superuser on!\n");
  405. else
  406. printf("Modo superuser off!\n");
  407. }
  408.  
  409. void testarJogadorMonstro(struct Jogador jogador, struct Monstro monstro)
  410. {
  411. if(jogador.celula == monstro.celula)
  412. {
  413. printf("O jogador %s encontra-se na mesma sala que o monstro!\n", jogador.nome);
  414. }
  415. else
  416. {
  417. printf("A sala do jogador é diferente da sala do monstro!\n");
  418. }
  419. }; //fazer
  420.  
  421. void testarJogadorTesouro(struct Jogador jogador, struct Celula celula)
  422. {
  423. if(jogador.tesouro == celula.tesouro)
  424. {
  425. printf("O jogador encontra-se na sala onde está o tesouro!\n");
  426. }
  427. else
  428. {
  429. printf("O jogador não tem o tesouro.\n");
  430. }
  431. }; //fazer
Add Comment
Please, Sign In to add comment