Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Marko Jovanović RT-28/15
- #include <fstream>
- #include <iostream>
- #include <string>
- #include <stdlib.h>
- #include <conio.h>
- //svi ovi karakteri predstavljaju različite zidove
- #define top_left_corner_wall 201 // karakter ╔
- #define top_right_corner_wall 187 // karakter ╗
- #define bottom_left_corner_wall 200 // karakter ╚
- #define bottom_right_corner_wall 188 // karakter ╝
- #define vertical_wall 186 // karakter ║
- #define horizontal_wall 205 // karakter ═
- #define top_junction_wall 202 // karakter ╩
- #define bottom_junction_wall 203 // karakter ╦
- #define left_junction_wall 186 // karakter ╣
- #define right_junction_wall 204 // karakter ╠
- #define junction_wall 206 // karakter ╬
- //ovi karakteri predstavljaju teren po kome igrač može da se kreće
- #define terrain_safe 46 // karakter .
- #define terrain_trap 42 // karakter *
- #define terrain_exit 44 // karakter ,
- //ovi karakteri predstavljaju stvorenja u igri i igrača
- #define character_player 33 // karakter !
- #define character_merchant 77 // karakter M
- #define mob_orc 79 // karakter O
- #define mob_troll 84 // karakter T
- #define mob_wraith 87 // karakter W
- #define mob_zombie 90 // karakter Z
- #define object_locked_door_vertical 179 // karakter "|", koji prestavlja zaključana vrata(vertikalna)
- #define object_locked_door_horizontal 196 // karakter "─", koji predstavlja zaključana vrata(horizontalna)
- #define object_lootchest 67 // karakter "C", koji predstavlja kovčeg
- #define object_lever 76 // karakter "L", koji predstavlja polugu
- #define placeholder_wall 43 // karakter "+" ; bice obrisano, predstavlja zid
- #define LEVEL_HEIGHT 17
- #define LEVEL_WIDTH 25
- //definisanje input tastera
- #define KEY_UP 72 //taster "strelica gore"
- #define KEY_DOWN 80 //taster "strelica dole"
- #define KEY_LEFT 75 //taster "strelica levo"
- #define KEY_RIGHT 77 //taster "strelica desno"
- #define KEY_USE 101 //taster "e"
- #define KEY_ATTACK 97 //taster "a"
- using namespace std;
- //funkcija za crtanje mape
- void draw_map(int map[LEVEL_HEIGHT][LEVEL_WIDTH])
- {
- for (int i = 0; i<LEVEL_HEIGHT; i++)
- {
- for (int j = 0; j<LEVEL_WIDTH; j++)
- {
- cout << (char)map[i][j];
- }
- cout << endl;
- }
- }
- //funkcija za pomeranje na gore
- void move_up(int map[LEVEL_HEIGHT][LEVEL_WIDTH],int &x,int &y)
- {
- if (map[x - 1][y] == terrain_safe)
- {
- map[x - 1][y] = character_player;
- map[x][y] = terrain_safe;
- x--;
- }
- }
- //funkcija za pomeranje na dole
- void move_down(int map[LEVEL_HEIGHT][LEVEL_WIDTH],int &x, int &y)
- {
- if (map[x + 1][y] == terrain_safe)
- {
- map[x + 1][y] = character_player;
- map[x][y] = terrain_safe;
- x++;
- }
- }
- //funkcija za pomeranje na levo
- void move_left(int map[LEVEL_HEIGHT][LEVEL_WIDTH], int &x, int &y)
- {
- if (map[x][y - 1] == terrain_safe)
- {
- map[x][y - 1] = character_player;
- map[x][y] = terrain_safe;
- y--;
- }
- }
- //funkcija za pomeranje na desno
- void move_right(int map[LEVEL_HEIGHT][LEVEL_WIDTH], int &x, int &y)
- {
- if (map[x][y + 1] == terrain_safe)
- {
- map[x][y + 1] = character_player;
- map[x][y] = terrain_safe;
- y++;
- }
- }
- //funckija za taster e (taster za korišćenje)
- void use(int map[LEVEL_HEIGHT][LEVEL_WIDTH], int &x, int &y)
- {
- //u slucaju da je uz lika iz igre poluga
- if ((map[x + 1][y]) == object_lever
- || (map[x - 1][y]) == object_lever
- || (map[x][y + 1]) == object_lever
- || (map[x][y - 1]) == object_lever
- || (map[x + 1][y + 1]) == object_lever
- || (map[x - 1][y + 1]) == object_lever
- || (map[x - 1][y + 1]) == object_lever
- || (map[x - 1][y - 1] == object_lever))
- for (int i = 0; i<LEVEL_HEIGHT; i++)
- {
- for (int j = 0; j<LEVEL_WIDTH; j++)
- {
- if ((map[i][j] == object_locked_door_vertical) | (map[i][j] == object_locked_door_horizontal))
- map[i][j] = terrain_safe;
- }
- }
- }
- //funkcija za utvrđivanje da li je igračev potez
- bool player_turn(int count)
- {
- count=count % 4;
- if (count == 0 || count == 1)
- return true;
- else
- return false;
- }
- int main() {
- int i, j, maplogic[LEVEL_HEIGHT][LEVEL_WIDTH];
- int player_position_x , player_position_y ;
- int c,a,turn_count=0;
- // placeholder ucitavanje mape (nivoi ce se ucitavati iz struct), ovaj deo koda se brise
- player_position_x = 10;
- player_position_y = 10;
- for (i = 0; i<LEVEL_HEIGHT; i++)
- for (j = 0; j<LEVEL_WIDTH; j++)
- {
- if (i == player_position_x && j == player_position_y)
- maplogic[i][j] = character_player;
- else if (i == 0 || j == 0 || i == (LEVEL_HEIGHT - 1) || j == (LEVEL_WIDTH - 1))
- maplogic[i][j] = placeholder_wall;
- else if (j == 20)
- maplogic[i][j] = object_locked_door_vertical;
- else if (j == 5 && i == 5)
- maplogic[i][j] = object_lever;
- else
- maplogic[i][j] = terrain_safe;
- }
- // sve do ovde se briše
- draw_map(maplogic);
- 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,";
- cout << "a karakter '|' predstavlja zakljucana vrata." << endl << "\tKontrole su strelice na tastaturi za kretanje, i tasteri 'a' za napad i 'e' za koriscenje okruzenja.";
- cout << endl << "\tPridjite uz polugu i stisnite taster 'e'." << endl;
- while (1)
- {
- //ispituje da li je potez igračev;
- if (player_turn(turn_count))
- {
- switch ((c = _getch())) {
- case KEY_UP: //akcija za strelicu gore
- move_up(maplogic, player_position_x, player_position_y);
- turn_count++;
- break;
- case KEY_DOWN: //akcija za strelicu dole
- move_down(maplogic, player_position_x, player_position_y);
- turn_count++;
- break;
- case KEY_LEFT: //akcija za strelicu levo
- move_left(maplogic, player_position_x, player_position_y);
- turn_count++;
- break;
- case KEY_RIGHT: //akcija za strelicu desno
- move_right(maplogic, player_position_x, player_position_y);
- turn_count++;
- break;
- case KEY_USE: //akcija za taster za korišćenje "e"
- use(maplogic, player_position_x, player_position_y);
- turn_count++;
- break;
- case KEY_ATTACK: //akcija za taster za napad "a"
- turn_count++;
- //a = rand() % 4 + rand() % 4 + 3;
- //cout << endl << "napad!!=" << a << endl;
- break;
- default: //sve ostalo
- break;
- }
- }
- else
- {
- //OVDE ĆE ČUDOVIŠTA IMATI SVOJE POTEZE, ZA SAD INKREMENTIRA DVA PUTA TURN_COUNT
- turn_count++;
- }
- system("CLS");
- draw_map(maplogic);
- cout << turn_count;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment