Advertisement
Guest User

Room.cpp

a guest
Nov 28th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.96 KB | None | 0 0
  1. #include "Room.h"
  2.  
  3.  
  4.  
  5. Room::Room()
  6. {
  7.    
  8.     gm = new GraphicsManager(room, robot);
  9.     this->room = room;
  10.     this->robot = robot;
  11.  
  12.  
  13.  
  14.     //Sets size of the squares to 25 by 25
  15.     white.setSize(sf::Vector2f(25.f, 25.f));
  16.     black.setSize(sf::Vector2f(25.f, 25.f));
  17.     blue.setSize(sf::Vector2f(25.f, 25.f));
  18.     yellow.setSize(sf::Vector2f(25.f, 25.f));
  19.     green.setSize(sf::Vector2f(25.f, 25.f));
  20.  
  21.     //Assigns colours incase of error with texture loading
  22.     white.setFillColor(sf::Color::White);
  23.     black.setFillColor(sf::Color::Black);
  24.     blue.setFillColor(sf::Color::Blue);
  25.     yellow.setFillColor(sf::Color::Yellow);
  26.     green.setFillColor(sf::Color::Green);
  27.  
  28.     //Assigns Textures  Commented out for Now
  29.     white.setTexture(&(gm->imageFloorCell[0]));
  30.     black.setTexture(&(gm->imageFloorCell[1]));
  31.     blue.setTexture(&(gm->imageFloorCell[2]));
  32.     yellow.setTexture(&(gm->imageFloorCell[3]));
  33.     green.setTexture(&(gm->imageFloorCell[4]));
  34.  
  35. }
  36.  
  37.  
  38. Room::~Room()
  39. {
  40. }
  41.  
  42.  
  43.  
  44. void Room::setBlank(int x, int y)
  45. {
  46.     grid[x][y] = WHITE;
  47. }
  48.  
  49. void Room::setWall(int x, int y)
  50. {
  51.     grid[x][y] = BLACK;
  52. }
  53.  
  54. void Room::setObstacle(int x, int y)
  55. {
  56.     grid[x][y] = BLUE;
  57. }
  58.  
  59. void Room::setPath(int x, int y)
  60. {
  61.     grid[x][y] = YELLOW;
  62. }
  63.  
  64. void Room::setTarget(int x,int y)
  65. {
  66.     grid[x][y] = GREEN;
  67. }
  68.  
  69. void Room::setSquare(int x, int y, sf::String color)
  70. {
  71.     if (color == "white") { grid[x][y] = WHITE; }
  72.     else if (color == "black") { grid[x][y] = BLACK; }
  73.     else if (color == "blue") { grid[x][y] = BLUE; }
  74.     else if (color == "yellow") { grid[x][y] = YELLOW; }
  75.     else if (color == "green") { grid[x][y] = GREEN; }
  76. }
  77.  
  78. void Room::setSquare(int x, int y, int color)
  79. {
  80.     switch (color) {
  81.     case 0:     grid[x][y] = WHITE;
  82.         break;
  83.     case 1:     grid[x][y] = BLACK;
  84.         break;
  85.     case 2:     grid[x][y] = BLUE;
  86.         break;
  87.     case 3:     grid[x][y] = YELLOW;
  88.         break;
  89.     case 4:     grid[x][y] = GREEN;
  90.         break;
  91.     default:    break;
  92.     }
  93. }
  94.  
  95.                                 //std::string Room::toString()
  96.                                 //{
  97.                                 //  StringBuffer state = new StringBuffer(1024);
  98.                                 //  for (int x = 0; x < size; x++) {
  99.                                 //      for (int y = 0; y < size; y++) {
  100.                                 //          state.append(grid[x][y]).append(' ');
  101.                                 //      }
  102.                                 //      state.append("\n");
  103.                                 //  }
  104.                                 //  return state.toString();
  105.                                 //}
  106.  
  107.  int Room::room_size()
  108. {
  109.     return size;
  110. }
  111.  
  112.  int Room::getGrid(int grid)
  113.  {
  114.      return grid;
  115.  }
  116.  
  117.  void Room::setGrid(int grid[20][20])
  118. {
  119.  
  120.     //assign individual elements
  121.  
  122.      for (int i = 0; i < 20; i++) {
  123.          for (int j = 0; j < 20; j++) {
  124.              this->grid[i][j] = grid[i][j];
  125.          }
  126.      }
  127.    
  128.  
  129.  
  130.     size = sizeof(grid) / sizeof(int);
  131. }
  132.  
  133. int Room::cell_state(int x, int y)
  134. {
  135.     if (x < 0 || x > room_size() || y < 0 || y > room_size()) {
  136.         return -1;
  137.     }
  138.     return grid[x][y];
  139. }
  140.  
  141. bool Room::isObstacle(int x, int y)
  142. {
  143.     if (grid[x][y] == BLUE || grid[x][y] == BLACK) {
  144.         return true;
  145.     }
  146.     return false;
  147. }
  148.  
  149. void Room::init(int identifier)
  150. {
  151.     for (int x = 0; x < size; x++) {
  152.         for (int y = 0; y < size; y++) {
  153.             if (x == 0 || (x == size - 1) || y == 0 || (y == size - 1))
  154.                 grid[x][y] = BLACK;
  155.             else
  156.                 grid[x][y] = WHITE;
  157.         }
  158.     }
  159.  
  160.     switch (identifier) {
  161.     case 1:
  162.         grid[3][3] = 2;
  163.         grid[4][3] = 2;
  164.         grid[5][3] = 2;
  165.         grid[6][3] = 2;
  166.         grid[3][4] = 2;
  167.         grid[5][4] = 4;
  168.         break;
  169.  
  170.     case 2:
  171.         grid[1][7] = 2;
  172.         grid[2][7] = 2;
  173.         grid[3][7] = 2;
  174.         grid[4][7] = 2;
  175.         grid[4][8] = 2;
  176.         grid[4][9] = 2;
  177.         grid[4][10] = 2;
  178.         grid[9][5] = 2;
  179.         grid[9][6] = 2;
  180.         grid[9][7] = 2;
  181.         grid[9][8] = 2;
  182.         grid[10][8] = 2;
  183.         grid[11][8] = 2;
  184.         grid[12][8] = 2;
  185.         grid[13][8] = 2;
  186.         grid[14][8] = 2;
  187.         grid[10][13] = 2;
  188.         grid[10][12] = 2;
  189.         grid[11][12] = 2;
  190.         grid[12][12] = 2;
  191.         grid[11][13] = 4;
  192.         break;
  193.  
  194.     case 3:
  195.         grid[1][2] = 2;
  196.         break;
  197.  
  198.     case 4:
  199.         grid[1][2] = 3;
  200.         grid[1][3] = 3;
  201.         grid[1][4] = 3;
  202.         grid[1][5] = 3;
  203.         grid[1][6] = 3;
  204.         grid[1][7] = 3;
  205.         grid[1][8] = 3;
  206.         grid[2][8] = 3;
  207.         grid[3][8] = 3;
  208.         grid[4][8] = 3;
  209.         grid[5][8] = 3;
  210.         grid[6][8] = 3;
  211.         grid[7][8] = 3;
  212.         grid[8][8] = 3;
  213.         grid[8][7] = 3;
  214.         grid[8][6] = 3;
  215.         grid[8][5] = 3;
  216.         grid[8][4] = 3;
  217.         grid[8][3] = 3;
  218.         grid[8][2] = 3;
  219.         grid[7][2] = 3;
  220.         grid[6][2] = 3;
  221.         grid[5][2] = 3;
  222.         grid[4][2] = 3;
  223.         grid[3][2] = 3;
  224.         grid[3][3] = 3;
  225.         grid[3][4] = 3;
  226.         grid[3][5] = 3;
  227.         grid[4][5] = 3;
  228.         grid[5][5] = 4;
  229.         break;
  230.  
  231.     case 5:
  232.         grid[1][2] = 3;
  233.         grid[1][3] = 3;
  234.         grid[1][4] = 3;
  235.         grid[2][4] = 3;
  236.         grid[3][4] = 3;
  237.         grid[4][4] = 3;
  238.         grid[5][4] = 3;
  239.         grid[6][4] = 3;
  240.         grid[7][4] = 3;
  241.         grid[8][4] = 3;
  242.         grid[8][5] = 3;
  243.         grid[8][6] = 3;
  244.         grid[8][7] = 3;
  245.         grid[7][7] = 3;
  246.         grid[6][7] = 3;
  247.         grid[6][8] = 3;
  248.         grid[6][9] = 3;
  249.         grid[6][10] = 3;
  250.         grid[6][11] = 3;
  251.         grid[5][11] = 3;
  252.         grid[4][11] = 3;
  253.         grid[4][10] = 3;
  254.         grid[4][9] = 3;
  255.         grid[4][8] = 3;
  256.         grid[3][8] = 3;
  257.         grid[2][8] = 3;
  258.         grid[1][8] = 3;
  259.         grid[1][9] = 3;
  260.         grid[1][10] = 3;
  261.         grid[1][11] = 3;
  262.         grid[1][12] = 3;
  263.         grid[1][13] = 3;
  264.         grid[1][14] = 3;
  265.         grid[1][15] = 3;
  266.         grid[2][15] = 3;
  267.         grid[3][15] = 3;
  268.         grid[4][15] = 3;
  269.         grid[5][15] = 3;
  270.         grid[5][16] = 3;
  271.         grid[5][17] = 3;
  272.         grid[5][18] = 4;
  273.         break;
  274.  
  275.     case 6:
  276.         grid[1][2] = 3;
  277.         grid[1][3] = 3;
  278.         grid[1][4] = 3;
  279.         grid[2][4] = 3;
  280.         grid[3][4] = 3;
  281.         grid[4][4] = 3;
  282.         grid[5][4] = 3;
  283.         grid[6][4] = 3;
  284.         grid[7][4] = 3;
  285.         grid[8][4] = 3;
  286.         grid[8][5] = 3;
  287.         grid[8][6] = 3;
  288.         grid[8][7] = 3;
  289.         grid[7][7] = 3;
  290.         grid[6][7] = 3;
  291.         grid[6][8] = 3;
  292.         grid[6][9] = 3;
  293.         grid[6][10] = 3;
  294.         grid[6][11] = 3;
  295.         grid[5][11] = 3;
  296.         grid[4][11] = 3;
  297.         grid[4][10] = 3;
  298.         grid[4][9] = 3;
  299.         grid[4][8] = 3;
  300.         grid[3][8] = 3;
  301.         grid[2][8] = 3;
  302.         grid[1][8] = 3;
  303.         grid[1][9] = 3;
  304.         grid[1][10] = 3;
  305.         grid[1][11] = 3;
  306.         grid[1][12] = 3;
  307.         grid[1][13] = 3;
  308.         grid[1][14] = 3;
  309.         grid[1][15] = 3;
  310.         grid[2][15] = 3;
  311.         grid[3][15] = 3;
  312.         grid[4][15] = 3;
  313.         grid[5][15] = 3;
  314.         grid[5][16] = 3;
  315.         grid[5][17] = 3;
  316.         grid[4][2] = 3;
  317.         grid[4][3] = 3;
  318.         grid[4][5] = 3;
  319.         grid[4][6] = 3;
  320.         grid[9][4] = 3;
  321.         grid[10][4] = 3;
  322.         grid[11][4] = 3;
  323.         grid[12][4] = 3;
  324.         grid[13][4] = 3;
  325.         grid[11][3] = 3;
  326.         grid[11][2] = 3;
  327.         grid[9][7] = 3;
  328.         grid[10][7] = 3;
  329.         grid[11][7] = 3;
  330.         grid[12][7] = 3;
  331.         grid[8][8] = 3;
  332.         grid[8][9] = 3;
  333.         grid[8][10] = 3;
  334.         grid[8][11] = 3;
  335.         grid[8][12] = 3;
  336.         grid[9][12] = 3;
  337.         grid[9][10] = 3;
  338.         grid[10][10] = 3;
  339.         grid[11][10] = 3;
  340.         grid[11][11] = 3;
  341.         grid[6][15] = 3;
  342.         grid[7][15] = 3;
  343.         grid[8][15] = 3;
  344.         grid[5][18] = 4;
  345.         break;
  346.  
  347.     case 7:
  348.         grid[1][9] = 2;
  349.         grid[2][9] = 2;
  350.         grid[3][9] = 2;
  351.         grid[4][9] = 2;
  352.         grid[5][9] = 2;
  353.         grid[5][18] = 2;
  354.         grid[5][17] = 2;
  355.         grid[5][16] = 2;
  356.         grid[5][15] = 2;
  357.         grid[5][14] = 2;
  358.         grid[14][18] = 2;
  359.         grid[14][17] = 2;
  360.         grid[14][16] = 2;
  361.         grid[14][15] = 2;
  362.         grid[14][14] = 2;
  363.         grid[18][9] = 2;
  364.         grid[17][9] = 2;
  365.         grid[16][9] = 2;
  366.         grid[15][9] = 2;
  367.         grid[14][9] = 2;
  368.         grid[11][1] = 2;
  369.         grid[11][2] = 2;
  370.         grid[11][3] = 2;
  371.         grid[11][4] = 2;
  372.         grid[11][5] = 2;
  373.         grid[8][1] = 2;
  374.         grid[8][2] = 2;
  375.         grid[8][3] = 2;
  376.         grid[8][4] = 2;
  377.         grid[8][5] = 2;
  378.         break;
  379.  
  380.     case 8:
  381.         grid[1][9] = 2;
  382.         grid[2][9] = 2;
  383.         grid[3][9] = 2;
  384.         grid[4][9] = 2;
  385.         grid[5][9] = 2;
  386.         grid[5][18] = 2;
  387.         grid[5][17] = 2;
  388.         grid[5][16] = 2;
  389.         grid[5][15] = 2;
  390.         grid[5][14] = 2;
  391.         grid[5][13] = 2;
  392.         grid[5][12] = 2;
  393.         grid[14][18] = 2;
  394.         grid[14][17] = 2;
  395.         grid[18][9] = 2;
  396.         grid[17][9] = 2;
  397.         grid[16][9] = 2;
  398.         grid[15][9] = 2;
  399.         grid[14][9] = 2;
  400.         grid[13][9] = 2;
  401.         grid[12][9] = 2;
  402.         grid[11][9] = 2;
  403.         grid[10][9] = 2;
  404.         grid[11][6] = 2;
  405.         grid[11][1] = 2;
  406.         grid[11][2] = 2;
  407.         grid[11][3] = 2;
  408.         grid[11][4] = 2;
  409.         grid[11][5] = 2;
  410.         grid[8][1] = 2;
  411.         grid[8][2] = 2;
  412.         grid[8][3] = 2;
  413.         grid[8][4] = 2;
  414.         break;
  415.  
  416.     case 9:
  417.         grid[1][9] = 2;
  418.         grid[2][9] = 2;
  419.         grid[3][9] = 2;
  420.         grid[4][9] = 2;
  421.         grid[5][9] = 2;
  422.         grid[5][18] = 2;
  423.         grid[5][17] = 2;
  424.         grid[5][16] = 2;
  425.         grid[6][16] = 2;
  426.         grid[7][16] = 2;
  427.         grid[8][16] = 2;
  428.         grid[9][16] = 2;
  429.         grid[10][16] = 2;
  430.         grid[10][17] = 2;
  431.         grid[10][18] = 2;
  432.         grid[18][13] = 2;
  433.         grid[17][13] = 2;
  434.         grid[16][13] = 2;
  435.         grid[15][13] = 2;
  436.         grid[14][13] = 2;
  437.         grid[13][13] = 2;
  438.         grid[13][12] = 2;
  439.         grid[13][11] = 2;
  440.         grid[13][10] = 2;
  441.         grid[14][10] = 2;
  442.         grid[15][10] = 2;
  443.         grid[15][9] = 2;
  444.         grid[15][8] = 2;
  445.         grid[15][7] = 2;
  446.         grid[16][7] = 2;
  447.         grid[17][7] = 2;
  448.         grid[17][6] = 2;
  449.         grid[17][5] = 2;
  450.         grid[17][4] = 2;
  451.         grid[18][4] = 2;
  452.         grid[12][1] = 2;
  453.         grid[12][2] = 2;
  454.         grid[12][3] = 2;
  455.         grid[12][4] = 2;
  456.         grid[12][5] = 2;
  457.         grid[12][6] = 2;
  458.         grid[11][6] = 2;
  459.         grid[10][6] = 2;
  460.         grid[10][5] = 2;
  461.         grid[10][4] = 2;
  462.         grid[10][3] = 2;
  463.         grid[9][3] = 2;
  464.         grid[8][3] = 2;
  465.         grid[7][3] = 2;
  466.         grid[6][3] = 2;
  467.         grid[6][4] = 2;
  468.         grid[6][5] = 2;
  469.         grid[6][6] = 2;
  470.         grid[5][6] = 2;
  471.         grid[4][6] = 2;
  472.         grid[4][5] = 2;
  473.         grid[4][4] = 2;
  474.         grid[4][3] = 2;
  475.         grid[4][2] = 2;
  476.         grid[4][1] = 2;
  477.         break;
  478.     }
  479. }
  480.  
  481. //This sifts through each elemenet within the preset 20x20 array and checks the value so that i can assign
  482. //textured objects to a mirror rectangle shape array
  483. sf::RectangleShape * Room::generateMap(sf::RectangleShape map[20][20], int grid[20][20])
  484. {
  485.     for (int i = 0; i < 20; i++)
  486.     {
  487.         for (int j = 0; j < 20; j++)
  488.         {
  489.  
  490.             //If grid element is equal to zero we add a white object to our sfml shape array
  491.             if (grid[i][j] == 0)
  492.             {
  493.                 map[i][j] = white;
  494.             }
  495.  
  496.             //If grid element is equal to one we add a black object to our sfml shape array
  497.             else if (grid[i][j] == 1)
  498.             {
  499.                 map[i][j] = black;
  500.             }
  501.  
  502.             //If grid element is equal to two we add a blue object to our sfml shape array
  503.             else if (grid[i][j] == 2)
  504.             {
  505.                 map[i][j] = blue;
  506.             }
  507.  
  508.             //If grid element is equal to three we add a yellow object to our sfml shape array
  509.             else if (grid[i][j] == 3)
  510.             {
  511.                 map[i][j] = yellow;
  512.             }
  513.  
  514.             //If grid element is equal to four we add a green object to our sfml shape array
  515.             else if (grid[i][j] == 4)
  516.             {
  517.                 map[i][j] = green;
  518.             }
  519.         }
  520.     }
  521.  
  522.     return *map;
  523. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement