AllenYuan

Untitled

May 25th, 2020
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2. #include <time.h>
  3. using namespace sf;
  4.  
  5. bool isCollide(Sprite s1,Sprite s2)
  6. { return s1.getGlobalBounds().intersects(s2.getGlobalBounds()); }
  7.  
  8. int main()
  9. {
  10. srand(time(0)); // seed time
  11.  
  12. RenderWindow app(VideoMode(520, 450), "Arkanoid Game!");
  13. app.setFramerateLimit(60);
  14.  
  15. // load textures
  16. Texture t1,t2,t3,t4;
  17. t1.loadFromFile("/Users/alleyuan/code-snippets/16_games/03 Arkanoid/images/block01.png");
  18. t2.loadFromFile("/Users/alleyuan/code-snippets/16_games/03 Arkanoid/images/background.jpg");
  19. t3.loadFromFile("/Users/alleyuan/code-snippets/16_games/03 Arkanoid/images/ball.png");
  20. t4.loadFromFile("/Users/alleyuan/code-snippets/16_games/03 Arkanoid/images/paddle.png");
  21.  
  22. // set sprite positions
  23. Sprite sBackground(t2), sBall(t3), sPaddle(t4);
  24. sPaddle.setPosition(300, 440);
  25. sBall.setPosition(300,300);
  26.  
  27. Sprite block[1000]; // blocks
  28.  
  29. int n = 0; // set block positions
  30. for (int i = 1; i <= 10; i++)
  31. for (int j = 1; j <= 10; j++)
  32. {
  33. block[n].setTexture(t1);
  34. block[n].setPosition(i*43,j*20);
  35. n++;
  36. }
  37.  
  38. float dx=6, dy=5; // frame by frame delta
  39.  
  40. // game loop
  41. while (app.isOpen())
  42. {
  43. // event handlers
  44. Event e;
  45. while (app.pollEvent(e))
  46. {
  47. // window closure
  48. if (e.type == Event::Closed)
  49. app.close();
  50. }
  51.  
  52. sBall.move(dx,0); // move ball by delta
  53. for (int i = 0; i < n; i++) // delete collided blocks and reflect ball
  54. if (isCollide(sBall,block[i])) { block[i].setPosition(-100,0); dx = -dx; }
  55.  
  56. sBall.move(0,dy); // move ball by delta
  57. for (int i = 0; i < n; i++) // delete collided blocks and reflect ball
  58. if (isCollide(sBall,block[i])) { block[i].setPosition(-100,0); dy = -dy; }
  59.  
  60. // reflect ball off sides
  61. Vector2f b = sBall.getPosition();
  62. if (b.x < 0 || b.x > 520) dx = -dx;
  63. if (b.y < 0 || b.y > 450) dy = -dy;
  64.  
  65. // draw sprites
  66. app.clear();
  67. app.draw(sBackground);
  68. app.draw(sBall);
  69. app.draw(sPaddle);
  70.  
  71. for (int i = 0; i < n; i++)
  72. app.draw(block[i]);
  73.  
  74. app.display();
  75. }
  76.  
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment