Advertisement
Drowze

Projeto: roguelike v0.1

Jun 7th, 2014
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.61 KB | None | 0 0
  1. /*
  2. Roguelike v0.1
  3. Autor: Rafael Gibim
  4. Limitações: 1º semestre de APC; não há uso de funções.
  5.  
  6. Changelog:
  7. 0.1: Personagem se move sem "entrar" nas paredes
  8.  
  9. Definições:
  10. @ : personagem
  11. . : Espaço vazio
  12. # : parede
  13. */
  14.  
  15. #include <stdio.h>
  16. #include <stdlib.h>
  17. #include <time.h> //necessária para melhorar a aleatoriedade
  18. #include <conio.h> //necessária para a função getch
  19.  
  20. /* Quantidade de fileiras e colunas */
  21. #define FILE 10
  22. #define COLU 20
  23.  
  24. /* Valores ASCII das setas e da tecla ESC */
  25. #define SETA_CIMA 72
  26. #define SETA_BAIXO 80
  27. #define SETA_ESQUERDA 75
  28. #define SETA_DIREITA 77
  29. #define ESC 27
  30.  
  31. void main(){
  32.     int aux = 0; //Variável puramente auxiliar
  33.     int i, j; //meros contadores
  34.     int i_atual, j_atual; //guarda a posição do jogador
  35.     char ch=0; //variável para reconhecer as setas
  36.     char tabuleiro[FILE][COLU];
  37.     srand(time(NULL));
  38.  
  39.     /* Preenchendo o tabuleiro */
  40.     for(i=0;i<FILE;i++){
  41.         for(j=0;j<COLU;j++){
  42.             tabuleiro[i][j] = '.';
  43.             if(i==0 || j == 0 || i==FILE-1 || j==COLU-1) tabuleiro[i][j] = '#';
  44.         }
  45.     }
  46.  
  47.  
  48.     /* Definindo posição do jogador de forma aleatória,
  49.     com cuidado para não cair nas paredes */
  50.     i_atual = rand()%(FILE-2) + 1;
  51.     j_atual = rand()%(COLU-2) + 1;
  52.     tabuleiro[i_atual][j_atual] = '@';
  53.  
  54.     do{
  55.         system("cls");
  56.  
  57.         /* Imprimindo o tabuleiro. */
  58.         for(i=0;i<FILE;i++){
  59.             for(j=0;j<COLU;j++) printf("%c", tabuleiro[i][j]);
  60.             printf("\n");
  61.         }
  62.         printf("\n\nUtilize as setas para movimentar seu personagem\n");
  63.         printf("Aperte ESC para sair\n");
  64.        
  65.  
  66.         /* Reconhecimento de tecla. */
  67.         ch = getch();
  68.  
  69.  
  70.         switch(ch){
  71.         case SETA_CIMA:
  72.             if(tabuleiro[i_atual-1][j_atual] != '#'){
  73.                 aux = tabuleiro[i_atual][j_atual];
  74.                 tabuleiro[i_atual][j_atual] = tabuleiro[i_atual-1][j_atual];
  75.                 tabuleiro[i_atual-1][j_atual] = aux;
  76.                 i_atual--;
  77.             }
  78.             break;
  79.         case SETA_BAIXO:
  80.             if(tabuleiro[i_atual+1][j_atual] != '#'){
  81.                 aux = tabuleiro[i_atual][j_atual];
  82.                 tabuleiro[i_atual][j_atual] = tabuleiro[i_atual+1][j_atual];
  83.                 tabuleiro[i_atual+1][j_atual] = aux;
  84.                 i_atual++;
  85.             }
  86.             break;
  87.         case SETA_DIREITA:
  88.             if(tabuleiro[i_atual][j_atual+1] != '#'){
  89.                 aux = tabuleiro[i_atual][j_atual];
  90.                 tabuleiro[i_atual][j_atual] = tabuleiro[i_atual][j_atual+1];
  91.                 tabuleiro[i_atual][j_atual+1] = aux;
  92.                 j_atual++;
  93.             }
  94.             break;
  95.         case SETA_ESQUERDA:
  96.             if(tabuleiro[i_atual][j_atual-1] != '#'){
  97.                 aux = tabuleiro[i_atual][j_atual];
  98.                 tabuleiro[i_atual][j_atual] = tabuleiro[i_atual][j_atual-1];
  99.                 tabuleiro[i_atual][j_atual-1] = aux;
  100.                 j_atual--;
  101.             }
  102.             break;
  103.         }
  104.  
  105.     }while(ch!= ESC);
  106.  
  107.     system("pause");
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement