Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define ll long long
- using namespace sf;
- using namespace std;
- //////////////////////////////////////////////////////////
- struct bomb {
- bool bomb_placed = 0;
- bool bomb_exploded = 0;
- vector <Sprite>range_right;
- vector <Sprite>range_left;
- vector <Sprite>range_up;
- vector <Sprite>range_down;
- Sprite sprt;
- Time bomb_time, start_explosion, explosion_time;
- Clock bomb_clock, start_clock, explosion_clock;
- int x_pos, y_pos, x_index, y_index;
- int exp_animation_x = 1, exp_animation_y = 0, bomb_animation_y = 0, bomb_animation_x = 0;
- bool flag_range_up = 1, flag_range_down = 1, flag_range_right = 1, flag_range_left = 1;
- };
- #define MAX_NUMBER_OF_ITEMS 3
- int selectedItemIndex = 0;
- Font font; Text menu[MAX_NUMBER_OF_ITEMS];
- int GetXindx(float a)
- {
- return (a - 183) / 53 + 2;
- }
- int GetYindx(float a)
- {
- return (a - 74) / 48 + 2;
- }
- void destroy_breakable_walls(int Xindx, int Yindx, Sprite Grid[][12], Texture &ground, Texture &ground2)
- {
- if (Xindx % 2 == Yindx % 2) { Grid[Xindx][Yindx].setTexture(ground); }
- else { Grid[Xindx][Yindx].setTexture(ground2); }
- Grid[Xindx][Yindx].setPosition((Xindx + 2) * 53, (Yindx + 0.8) * 48);
- Grid[Xindx][Yindx].setScale(0.1009, 0.101);
- }
- ////////////////////////////////////////////////////////
- float position = 0, position2 = 0;// Variables of Player
- const float speed = 0.25;
- int pos_x = 1, pos_y = 0, pos = 0, a, b, i, j;
- bool explosion = false, ispressed = false, flag = 0, flag1 = 0;
- const int length = 11, width = 19;// Variables of Grid
- int main()
- {
- //###############################################################################
- //###############################################################################
- // Making of Player
- int posx = 700, posy = 100;
- Sprite Grid[width + 1][length + 1];
- Sprite player, player2, bombing, exp;
- player.setPosition(posx, posy);
- player2.setPosition(1007, 474);
- player.setScale(1, 1);
- player2.setScale(1, 1);
- bombing.setScale(0.2f, 0.2f);
- exp.setScale(0.25, 0.25);
- Texture playertext, player2text, bombtext, exptext;
- playertext.loadFromFile("mainplayer.png");
- player2text.loadFromFile("blue.png");
- bombtext.loadFromFile("BOOM.png");
- exptext.loadFromFile("exp.png");
- player.setTexture(playertext);
- player2.setTexture(player2text);
- bombing.setTexture(bombtext);
- exp.setTexture(exptext);
- Vector2u text_size = playertext.getSize();
- Vector2u text_size_bomb = bombtext.getSize();
- Vector2u text_size_exp = exptext.getSize();
- Vector2u text_size_2 = player2text.getSize();
- text_size.x /= 9;
- text_size.y /= 4;
- text_size_2.x /= 9;
- text_size_2.y /= 4;
- text_size_bomb.y /= 4;
- text_size_exp.x /= 3;
- text_size_exp.y /= 3;
- player.setTextureRect(IntRect(text_size.x * 0, text_size.y * 2, text_size.x, text_size.y));
- player2.setTextureRect(IntRect(text_size.x * 0, text_size.y * 2, text_size.x, text_size.y));
- Time times2, times, t, ti, bomb_timer;
- Clock clocks2, c, cs, clocks, clock_timer;
- // Making of Grid
- // MAP DEFINATION
- Texture wall, ground, wallpaper, ground2, breakable, life, range, hurt;
- if (!breakable.loadFromFile("breakable.png"))
- {
- cout << "error loading breakable wall pic";
- }
- if (!wallpaper.loadFromFile("wallpaper.jpg"))
- {
- cout << "error loading wallpaper pic";
- }
- if (!wall.loadFromFile("3d wall.png"))
- {
- cout << "error loading wall pic";
- }
- if (!ground.loadFromFile("ground 1.png"))
- {
- cout << "error loading ground pic";
- }
- if (!ground2.loadFromFile("grass.png"))
- {
- cout << "error loading grass pic";
- }
- if (!life.loadFromFile("flife.png"))
- {
- cout << "error loading life pic";
- }
- if (!range.loadFromFile("frange.png"))
- {
- cout << "error loading range pic";
- }
- if (!hurt.loadFromFile("fhurt.png"))
- {
- cout << "error loading hurt pic";
- }
- // Player abilities
- bomb bomb_template;
- bomb_template.sprt.setTexture(bombtext);
- bomb_template.sprt.setScale(0.15f, 0.15f);
- vector<bomb>bombs;
- int number_of_bombs = 0, range_of_bomb = 2, bomb_placement_timer = 0, superpower_of_bomb = 2;
- //bombs.push_back(bomb_template);
- Sprite lifeS, bombS, rangeS, Hurt, Wallpaper;
- lifeS.setTexture(life);
- lifeS.setPosition(0, 180);
- lifeS.setScale(0.1f, 0.1f);
- rangeS.setTexture(range);
- rangeS.setPosition(0, 250);
- rangeS.setScale(0.15f, 0.15f);
- bombS.setTexture(bombtext);
- bombS.setPosition(0, 330);
- bombS.setScale(0.15f, 0.15f);
- Hurt.setTexture(hurt);
- Wallpaper.setTexture(wallpaper);
- Texture healskill;
- healskill.loadFromFile("Heal.png");
- Sprite healS[6];
- // Distribution of wall & ground on the Grid
- for (int i = 1; i <= width; i++)
- {
- for (int j = 1; j <= length; j++)
- {
- if (i % 2 != 0 && j % 2 != 0)
- {
- Grid[i][j].setTexture(wall);
- Grid[i][j].setPosition((i + 1.97)*53.15, (j + 0.255) * 48);
- Grid[i][j].setScale(Vector2f(0.1009, 0.165));
- }
- else if (i == 1 || i == width)
- {
- Grid[i][j].setTexture(wall);
- Grid[i][j].setPosition((i + 1.97)*53.15, (j + 0.255) * 48);
- Grid[i][j].setScale(Vector2f(0.1009, 0.165));
- }
- else if (j == 1 || j == length)
- {
- Grid[i][j].setTexture(wall);
- Grid[i][j].setPosition((i + 1.97)*53.15, (j + 0.255) * 48);
- Grid[i][j].setScale(Vector2f(0.1009, 0.165));
- }
- else
- {
- if (i % 2 == j % 2) { Grid[i][j].setTexture(ground); }
- else { Grid[i][j].setTexture(ground2); }
- Grid[i][j].setPosition((i + 2) * 53, (j + 0.8) * 48);
- Grid[i][j].setScale(0.1, 0.101);
- }
- }
- }
- for (int i = 1; i <= 40; i++)
- {
- int x = rand() % 16 + 2, y = rand() % 9 + 2;
- if (x % 2 != 0 && y % 2 != 0)
- {
- x++;
- }
- Grid[x][y].setTexture(breakable);
- Grid[x][y].setPosition((x + 1.97)*53.15, (y + 0.232)*50.5);
- Grid[x][y].setScale(Vector2f(0.1015, 0.169));
- }
- //Game Window
- RenderWindow window(VideoMode(1280, 768), "our first try with SFML");
- while (window.isOpen())
- {
- Event event;
- while (window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- window.close();
- }
- // bombing
- if (bomb_placement_timer < 200)
- {
- bomb_placement_timer++;
- }
- if (Keyboard::isKeyPressed(Keyboard::Key::Space) && bomb_placement_timer == 200) {
- bombs.push_back(bomb_template);
- bombs[bombs.size() - 1].bomb_clock.restart();
- bombs[bombs.size() - 1].explosion_clock.restart();
- bombs[bombs.size() - 1].start_clock.restart();
- bombs[bombs.size() - 1].bomb_placed = 1;
- bombs[bombs.size() - 1].x_pos = player.getPosition().x;
- bombs[bombs.size() - 1].y_pos = player.getPosition().y;
- bombs[bombs.size() - 1].x_index = GetXindx(bombs[bombs.size() - 1].x_pos);
- bombs[bombs.size() - 1].y_index = GetYindx(bombs[bombs.size() - 1].y_pos);
- bomb_placement_timer = 0;
- }
- //if (bombs.size()>0){
- for (int io = 0; io < bombs.size(); io++)
- {
- if (bombs[io].bomb_placed == 1) {
- bombs[io].bomb_time = bombs[io].bomb_clock.getElapsedTime();
- bombs[io].start_explosion = bombs[io].start_clock.getElapsedTime();
- if (bombs[io].bomb_time.asSeconds() >= 0.2) {
- bombs[io].bomb_clock.restart();
- bombs[io].sprt.setPosition(bombs[io].x_pos, bombs[io].y_pos + 25);
- bombs[io].sprt.setTextureRect(IntRect(0, text_size_bomb.y*bombs[io].bomb_animation_y, text_size_bomb.x, text_size_bomb.y));
- bombs[io].bomb_animation_y += 2;
- if (bombs[io].bomb_animation_y > 2)
- bombs[io].bomb_animation_y = 0;
- }
- if (bombs[io].start_explosion.asSeconds() >= 3) {
- bombs[io].bomb_exploded = 1;
- bombs[io].bomb_placed = 0;
- // bombs[number_of_bombs].sprt.setColor(Color::Transparent);
- for (int k = 0; k <= range_of_bomb; k++)
- {
- bombs[io].range_right.push_back(exp);
- bombs[io].range_left.push_back(exp);
- bombs[io].range_up.push_back(exp);
- bombs[io].range_down.push_back(exp);
- // v[z].push_back(exp);
- }
- }
- }
- //cout<<player.getPosition().x<<' '<<player.getPosition().y<<endl;
- if (bombs[io].bomb_exploded) {
- bombs[io].explosion_time = bombs[io].explosion_clock.getElapsedTime();
- if (bombs[io].explosion_time.asSeconds() >= 0.08) {
- bombs[io].explosion_clock.restart();
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_right[k].setPosition(bombs[io].x_pos + n, bombs[io].y_pos);
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_right[k].setTextureRect(IntRect(text_size_exp.x*bombs[io].exp_animation_x, text_size_bomb.y*bombs[io].exp_animation_y, text_size_exp.x, text_size_exp.y));
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_left[k].setPosition(bombs[io].x_pos - n, bombs[io].y_pos);
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_left[k].setTextureRect(IntRect(text_size_exp.x*bombs[io].exp_animation_x, text_size_bomb.y*bombs[io].exp_animation_y, text_size_exp.x, text_size_exp.y));
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_up[k].setPosition(bombs[io].x_pos, bombs[io].y_pos - n);
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_up[k].setTextureRect(IntRect(text_size_exp.x*bombs[io].exp_animation_x, text_size_bomb.y*bombs[io].exp_animation_y, text_size_exp.x, text_size_exp.y));
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_down[k].setPosition(bombs[io].x_pos, bombs[io].y_pos + n);
- for (int n = 0, k = 0; k <= range_of_bomb, n <= range_of_bomb * 50; k++, n += 50)
- bombs[io].range_down[k].setTextureRect(IntRect(text_size_exp.x*bombs[io].exp_animation_x, text_size_bomb.y*bombs[io].exp_animation_y, text_size_exp.x, text_size_exp.y));
- /*if(Grid[a][b+1].getTexture()==&breakable)
- {
- if (a%2==(b+1)%2) {Grid[a][b+1].setTexture(ground);}
- else {Grid[a][b+1].setTexture(ground2);}
- }
- else if(Grid[a+1][b].getTexture()==&breakable)
- {
- if ((a+1)%2==b%2) {Grid[a+1][b].setTexture(ground);}
- else {Grid[a+1][b].setTexture(ground2);}
- }
- else if(Grid[a-1][b].getTexture()==&breakable)
- {
- if ((a-1)%2==b%2) {Grid[a-1][b].setTexture(ground);}
- else {Grid[a-1][b].setTexture(ground2);}
- }
- else if(Grid[a][b-1].getTexture()==&breakable)
- {
- if (a%2==(b-1)%2) {Grid[a][b-1].setTexture(ground);}
- else {Grid[a][b-1].setTexture(ground2);}
- }*/
- //cout<<bombs[io].exp_animation_x<<" "<<bombs[io].exp_animation_y<<endl;
- bombs[io].exp_animation_x++;
- if (bombs[io].exp_animation_x == 3) {
- bombs[io].exp_animation_x = 0, bombs[io].exp_animation_y++;
- if (bombs[io].exp_animation_y == 3) {
- bombs[io].bomb_exploded = 0;
- // bombs[io].explosion_clock.restart();
- /*for(int z=0;z<=3;z++)
- {
- bombs[number_of_bombs].range_right[z].setColor(Color::Transparent);
- bombs[number_of_bombs].range_left[z].setColor(Color::Transparent);
- bombs[number_of_bombs].range_up[z].setColor(Color::Transparent);
- bombs[number_of_bombs].range_down[z].setColor(Color::Transparent);
- }*/
- bombs.erase(bombs.begin());
- }
- }
- }
- }
- }
- //}
- // Player Movement
- if (Keyboard::isKeyPressed(Keyboard::Key::Right) && (Grid[GetXindx(player.getPosition().x + 12)][GetYindx(player.getPosition().y)].getTexture() == &ground || Grid[GetXindx(player.getPosition().x + 12)][GetYindx(player.getPosition().y)].getTexture() == &ground2)) // Moving Right
- {
- player.move(speed, 0.0);
- times = clocks.getElapsedTime();
- if (times.asSeconds() >= 0.1) {
- clocks.restart();
- position++;
- if (position > 8)
- position -= 8;
- }
- player.setTextureRect(IntRect(text_size.x*position, text_size.y * 3, text_size.x, text_size.y));
- }
- else if (Keyboard::isKeyPressed(Keyboard::Key::Left) && (Grid[GetXindx(player.getPosition().x - 12)][GetYindx(player.getPosition().y)].getTexture() == &ground || Grid[GetXindx(player.getPosition().x - 12)][GetYindx(player.getPosition().y)].getTexture() == &ground2)) // Moving Left
- {
- player.move(-speed, 0.0);
- times = clocks.getElapsedTime();
- if (times.asSeconds() >= 0.1) {
- clocks.restart();
- position++;
- if (position > 8)
- position -= 8;
- }
- player.setTextureRect(IntRect(text_size.x*position, text_size.y * 1, text_size.x, text_size.y));
- }
- else if (Keyboard::isKeyPressed(Keyboard::Key::Up) && (Grid[GetXindx(player.getPosition().x)][GetYindx(player.getPosition().y - 7)].getTexture() == &ground || Grid[GetXindx(player.getPosition().x)][GetYindx(player.getPosition().y - 7)].getTexture() == &ground2)) // Moving Up
- {
- player.move(0.0, -speed);
- posy = player.getPosition().y;
- times = clocks.getElapsedTime();
- if (times.asSeconds() >= 0.1) {
- clocks.restart();
- position++;
- if (position > 8)
- position -= 8;
- }
- player.setTextureRect(IntRect(text_size.x*position, text_size.y * 0, text_size.x, text_size.y));
- }
- else if (Keyboard::isKeyPressed(Keyboard::Key::Down) && (Grid[GetXindx(player.getPosition().x)][GetYindx(player.getPosition().y + 7)].getTexture() == &ground || Grid[GetXindx(player.getPosition().x)][GetYindx(player.getPosition().y + 7)].getTexture() == &ground2)) // Moving Down
- {
- player.move(0.0, speed);
- times = clocks.getElapsedTime();
- if (times.asSeconds() >= 0.1) {
- clocks.restart();
- position++;
- if (position > 8)
- position -= 8;
- }
- player.setTextureRect(IntRect(text_size.x*position, text_size.y * 2, text_size.x, text_size.y));
- }
- if (Keyboard::isKeyPressed(Keyboard::Key::D) && (Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground || Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground2)) // Moving Right
- {
- player2.move(speed, 0.0);
- times2 = clocks2.getElapsedTime();
- if (times2.asSeconds() >= 0.1) {
- clocks2.restart();
- position2++;
- if (position2 > 8)
- position2 -= 8;
- }
- player2.setTextureRect(IntRect(text_size_2.x*position2, text_size_2.y * 3, text_size_2.x, text_size_2.y));
- }
- else if (Keyboard::isKeyPressed(Keyboard::Key::A) && (Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground || Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground2)) // Moving Right
- {
- player2.move(-speed, 0.0);
- times2 = clocks2.getElapsedTime();
- if (times2.asSeconds() >= 0.1) {
- clocks2.restart();
- position2++;
- if (position2 > 8)
- position2 -= 8;
- }
- player2.setTextureRect(IntRect(text_size_2.x*position2, text_size_2.y * 1, text_size_2.x, text_size_2.y));
- }
- else if (Keyboard::isKeyPressed(Keyboard::Key::W) && (Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground || Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground2)) // Moving Right
- {
- player2.move(0.0, -speed);
- times2 = clocks2.getElapsedTime();
- if (times2.asSeconds() >= 0.1) {
- clocks2.restart();
- position2++;
- if (position2 > 8)
- position2 -= 8;
- }
- player2.setTextureRect(IntRect(text_size_2.x*position2, text_size_2.y * 0, text_size_2.x, text_size_2.y));
- }
- else if (Keyboard::isKeyPressed(Keyboard::Key::S) && (Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground || Grid[GetXindx(player2.getPosition().x + 12)][GetYindx(player2.getPosition().y)].getTexture() == &ground2)) // Moving Right
- {
- player2.move(0.0, speed);
- times2 = clocks2.getElapsedTime();
- if (times2.asSeconds() >= 0.1) {
- clocks2.restart();
- position2++;
- if (position2 > 8)
- position2 -= 8;
- }
- player2.setTextureRect(IntRect(text_size_2.x*position2, text_size_2.y * 2, text_size_2.x, text_size_2.y));
- }
- int a = 6;
- for (int i = 0; i < a; i++) {
- int x = rand() % 16 + 2, y = rand() % 9 + 2;
- if (Grid[x][y].getTexture() != &breakable) {
- a++;
- continue;
- }
- healS[a - i].setTexture(healskill);
- healS[a - i].setScale(0.5, 0.5);
- healS[a - i].setPosition((x + 2.05)*53.15, (y + 0.232)*50.5);
- }
- window.clear();
- // Drawing of the Wallpaper
- window.draw(Wallpaper);
- //Drawing of The Map
- for (int i = 2; i < width; i++)
- {
- for (int j = 2; j < length; j++)
- {
- if (Grid[i][j].getTexture() == &ground || Grid[i][j].getTexture() == &ground2)
- {
- window.draw(Grid[i][j]);
- }
- }
- }
- //for (int i=0;i<5;i++){
- // window.draw(healS[i]);
- //}
- for (int j = 1; j <= length; j++)
- {
- for (int i = 1; i <= width; i++)
- {
- if (Grid[i][j].getTexture() == &ground || Grid[i][j].getTexture() == &ground2)
- {
- continue;
- }
- window.draw(Grid[i][j]);
- if (GetYindx(player.getPosition().y) >= j)
- {
- window.draw(player);
- }
- }
- }
- //if (bombs.size()>0)
- //{
- for (int io = 0; io < bombs.size(); io++)
- {
- if (bombs[io].bomb_placed)
- window.draw(bombs[io].sprt);
- if (bombs[io].bomb_exploded)
- {
- //for(int h=0;h<=3;h++)
- for (int g = 0; g <= range_of_bomb; g++)
- {
- window.draw(bombs[io].range_right[g]);
- if ((Grid[bombs[io].x_index + g][bombs[io].y_index].getTexture() == &breakable)&& bombs[io].flag_range_right)
- {
- destroy_breakable_walls(bombs[io].x_index + g, bombs[io].y_index, Grid, ground, ground2);
- bombs[io].flag_range_right = 0;
- break;
- }
- else if (Grid[bombs[io].x_index + g][bombs[io].y_index].getTexture() == &wall)
- {
- bombs[io].flag_range_right = 0;
- break;
- }
- }
- for (int g = 0; g <= range_of_bomb; g++)
- {
- window.draw(bombs[io].range_left[g]);
- if ((Grid[bombs[io].x_index - g][bombs[io].y_index].getTexture() == &breakable)&& bombs[io].flag_range_left)
- {
- destroy_breakable_walls(bombs[io].x_index - g, bombs[io].y_index, Grid, ground, ground2);
- bombs[io].flag_range_left = 0;
- break;
- }
- else if (Grid[bombs[io].x_index - g][bombs[io].y_index].getTexture() == &wall)
- {
- bombs[io].flag_range_left = 0;
- break;
- }
- }
- for (int g = 0; g <= range_of_bomb; g++)
- {
- window.draw(bombs[io].range_up[g]);
- if ((Grid[bombs[io].x_index][bombs[io].y_index - g].getTexture() == &breakable)&& bombs[io].flag_range_up)
- {
- destroy_breakable_walls(bombs[io].x_index, bombs[io].y_index - g, Grid, ground, ground2);
- bombs[io].flag_range_up = 0;
- break;
- }
- else if (Grid[bombs[io].x_index][bombs[io].y_index - g].getTexture() == &wall)
- {
- bombs[io].flag_range_up = 0;
- break;
- }
- }
- for (int g = 0; g <= range_of_bomb; g++)
- {
- window.draw(bombs[io].range_down[g]);
- if ((Grid[bombs[io].x_index][bombs[io].y_index + g].getTexture() == &breakable)&& bombs[io].flag_range_down)
- {
- destroy_breakable_walls(bombs[io].x_index, bombs[io].y_index + g, Grid, ground, ground2);
- bombs[io].flag_range_down = 0;
- break;
- }
- else if (Grid[bombs[io].x_index][bombs[io].y_index + g].getTexture() == &wall && bombs[io].flag_range_down)
- {
- bombs[io].flag_range_down = 0;
- break;
- }
- }
- }
- }
- //for(int h=0;h<=3;h++)
- //window.draw(v[1][h]);
- //for(int h=0;h<=3;h++)
- // window.draw(v[2][h]);
- //for(int h=0;h<=3;h++)
- // window.draw(v[3][h]);
- //}
- window.draw(lifeS);
- window.draw(rangeS);
- //window.draw(bombS);
- window.display();
- }
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment