Hakunin

RT2815.v1.02 - PROJEKAT

Dec 26th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.50 KB | None | 0 0
  1. //Marko Jovanović RT-28/15
  2.  
  3. #include <fstream>
  4. #include <iostream>
  5. #include <string>
  6. #include <stdlib.h>
  7. #include <conio.h>
  8.  
  9.  
  10. //svi ovi karakteri predstavljaju različite zidove
  11. #define top_left_corner_wall 201 // karakter ╔
  12. #define top_right_corner_wall 187 // karakter ╗
  13. #define bottom_left_corner_wall 200 // karakter ╚
  14. #define bottom_right_corner_wall 188 // karakter ╝
  15. #define vertical_wall 186 // karakter ║
  16. #define horizontal_wall 205 // karakter ═
  17. #define top_junction_wall 202 // karakter ╩
  18. #define bottom_junction_wall 203 // karakter ╦
  19. #define left_junction_wall 186 // karakter ╣
  20. #define right_junction_wall 204 // karakter ╠
  21. #define junction_wall 206 // karakter ╬
  22.  
  23. //ovi karakteri predstavljaju teren po kome igrač može da se kreće
  24. #define terrain_safe 46 // karakter .
  25. #define terrain_trap 42 // karakter *
  26. #define terrain_exit 44 // karakter ,
  27.  
  28. //ovi  karakteri predstavljaju stvorenja u igri i igrača
  29. #define character_player 33 // karakter !
  30. #define character_merchant 77 // karakter M
  31. #define mob_orc 79 // karakter O
  32. #define mob_troll 84 // karakter T
  33. #define mob_wraith 87 // karakter W
  34. #define mob_zombie 90 // karakter Z
  35.  
  36. #define object_locked_door_vertical 179 // karakter "|", koji prestavlja zaključana vrata(vertikalna)
  37. #define object_locked_door_horizontal 196 // karakter "─", koji predstavlja zaključana vrata(horizontalna)
  38. #define object_lootchest 67 // karakter "C", koji predstavlja kovčeg
  39. #define object_lever 76 // karakter "L", koji predstavlja polugu
  40.  
  41. #define placeholder_wall 43 // karakter "+" ; bice obrisano, predstavlja zid
  42.  
  43. #define LEVEL_HEIGHT 17
  44. #define LEVEL_WIDTH 25
  45.  
  46. //definisanje input tastera
  47.  
  48. #define KEY_UP 72  //taster "strelica gore"
  49. #define KEY_DOWN 80 //taster "strelica dole"
  50. #define KEY_LEFT 75 //taster "strelica levo"
  51. #define KEY_RIGHT 77 //taster "strelica desno"
  52. #define KEY_USE 101 //taster "e"
  53. #define KEY_ATTACK 97 //taster "a"
  54.  
  55.  
  56. using namespace std;
  57.  
  58. //funkcija za crtanje mape
  59. void draw_map(int map[LEVEL_HEIGHT][LEVEL_WIDTH])
  60. {
  61.     for (int i = 0; i<LEVEL_HEIGHT; i++)
  62.     {
  63.         for (int j = 0; j<LEVEL_WIDTH; j++)
  64.         {
  65.             cout << (char)map[i][j];
  66.         }
  67.         cout << endl;
  68.     }
  69. }
  70.  
  71. //funkcija za pomeranje na gore
  72. void move_up(int map[LEVEL_HEIGHT][LEVEL_WIDTH],int &x,int &y)
  73. {
  74.             if (map[x - 1][y] == terrain_safe)
  75.             {
  76.                 map[x - 1][y] = character_player;
  77.                 map[x][y] = terrain_safe;
  78.                 x--;
  79.             }
  80. }  
  81.  
  82. //funkcija za pomeranje na dole
  83. void move_down(int map[LEVEL_HEIGHT][LEVEL_WIDTH],int &x, int &y)
  84. {
  85.             if (map[x + 1][y] == terrain_safe)
  86.             {
  87.                 map[x + 1][y] = character_player;
  88.                 map[x][y] = terrain_safe;
  89.                 x++;
  90.             }
  91.  
  92. }
  93.  
  94. //funkcija za pomeranje na levo
  95. void move_left(int map[LEVEL_HEIGHT][LEVEL_WIDTH], int &x, int &y)
  96. {
  97.             if (map[x][y - 1] == terrain_safe)
  98.             {
  99.                 map[x][y - 1] = character_player;
  100.                 map[x][y] = terrain_safe;
  101.                 y--;
  102.             }
  103. }
  104.  
  105. //funkcija za pomeranje na desno
  106. void move_right(int map[LEVEL_HEIGHT][LEVEL_WIDTH], int &x, int &y)
  107. {
  108.             if (map[x][y + 1] == terrain_safe)
  109.             {
  110.                 map[x][y + 1] = character_player;
  111.                 map[x][y] = terrain_safe;
  112.                 y++;
  113.             }
  114. }
  115.  
  116. //funckija za taster e (taster za korišćenje)
  117. void use(int map[LEVEL_HEIGHT][LEVEL_WIDTH], int &x, int &y)
  118. {
  119.     //u slucaju da je uz lika iz igre poluga
  120.     if ((map[x + 1][y]) == object_lever
  121.         || (map[x - 1][y]) == object_lever
  122.         || (map[x][y + 1]) == object_lever
  123.         || (map[x][y - 1]) == object_lever
  124.         || (map[x + 1][y + 1]) == object_lever
  125.         || (map[x - 1][y + 1]) == object_lever
  126.         || (map[x - 1][y + 1]) == object_lever
  127.         || (map[x - 1][y - 1] == object_lever))
  128.         for (int i = 0; i<LEVEL_HEIGHT; i++)
  129.         {
  130.             for (int j = 0; j<LEVEL_WIDTH; j++)
  131.             {
  132.                 if ((map[i][j] == object_locked_door_vertical) | (map[i][j] == object_locked_door_horizontal))
  133.                     map[i][j] = terrain_safe;
  134.             }
  135.         }
  136. }
  137.  
  138. //funkcija za utvrđivanje da li je igračev potez
  139. bool player_turn(int count)
  140. {
  141.     count=count % 4;
  142.  
  143.     if (count == 0 || count == 1)
  144.         return true;
  145.     else
  146.         return false;
  147. }
  148.  
  149. int main() {
  150.  
  151.     int i, j, maplogic[LEVEL_HEIGHT][LEVEL_WIDTH];
  152.     int player_position_x , player_position_y ;
  153.  
  154.     int c,a,turn_count=0;
  155.  
  156. // placeholder ucitavanje mape (nivoi ce se ucitavati iz struct),  ovaj deo koda se brise
  157.     player_position_x = 10;
  158.     player_position_y = 10;
  159.     for (i = 0; i<LEVEL_HEIGHT; i++)
  160.         for (j = 0; j<LEVEL_WIDTH; j++)
  161.         {
  162.             if (i == player_position_x && j == player_position_y)
  163.                 maplogic[i][j] = character_player;
  164.             else if (i == 0 || j == 0 || i == (LEVEL_HEIGHT - 1) || j == (LEVEL_WIDTH - 1))
  165.                 maplogic[i][j] = placeholder_wall;
  166.             else if (j == 20)
  167.                 maplogic[i][j] = object_locked_door_vertical;
  168.             else if (j == 5 && i == 5)
  169.                 maplogic[i][j] = object_lever;
  170.             else
  171.                 maplogic[i][j] = terrain_safe;
  172.         }  
  173. // sve do ovde se briše
  174.  
  175.     draw_map(maplogic);
  176.     cout << endl << "\t\tDobrodosli u ranu verziju igre!" << endl << endl << "\tIgrac je u ovoj igri predstavljen kao karakter '!' " << endl << "\tKarakter 'L' predstavlja polugu koja otvara vrata,";
  177.     cout << "a karakter '|' predstavlja zakljucana vrata." << endl << "\tKontrole su strelice na tastaturi za kretanje, i tasteri 'a' za napad i 'e' za koriscenje okruzenja.";
  178.     cout << endl << "\tPridjite uz polugu i stisnite taster 'e'." << endl;
  179.  
  180.     while (1)
  181.     {
  182.         //ispituje da li je potez igračev;
  183.         if (player_turn(turn_count))
  184.         {
  185.             switch ((c = _getch())) {
  186.             case KEY_UP: //akcija za strelicu gore
  187.                 move_up(maplogic, player_position_x, player_position_y);
  188.                 turn_count++;
  189.                 break;
  190.             case KEY_DOWN: //akcija za strelicu dole
  191.                 move_down(maplogic, player_position_x, player_position_y);
  192.                 turn_count++;
  193.                 break;
  194.             case KEY_LEFT: //akcija za strelicu levo
  195.                 move_left(maplogic, player_position_x, player_position_y);
  196.                 turn_count++;
  197.                 break;
  198.             case KEY_RIGHT: //akcija za strelicu desno
  199.                 move_right(maplogic, player_position_x, player_position_y);
  200.                 turn_count++;
  201.                 break;
  202.             case KEY_USE: //akcija za taster za korišćenje "e"
  203.                 use(maplogic, player_position_x, player_position_y);
  204.                 turn_count++;
  205.                 break;
  206.             case KEY_ATTACK: //akcija za taster za napad "a"
  207.                 turn_count++;
  208.                 //a = rand() % 4 + rand() % 4 + 3;
  209.                 //cout << endl << "napad!!=" << a << endl;
  210.                 break;
  211.             default: //sve ostalo
  212.                 break;
  213.             }
  214.         }
  215.         else
  216.         {
  217.             //OVDE ĆE ČUDOVIŠTA IMATI SVOJE POTEZE, ZA SAD INKREMENTIRA DVA PUTA TURN_COUNT
  218.             turn_count++;
  219.         }
  220.  
  221.         system("CLS");
  222.         draw_map(maplogic);
  223.         cout << turn_count;
  224.     }
  225.  
  226.     system("pause");
  227.     return 0;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment