AllenYuan

Untitled

May 25th, 2020
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2. #include <time.h>
  3. using namespace sf;
  4.  
  5. int N = 30, M = 20;
  6. int size = 16;
  7. int w = size * N;
  8. int h = size * M;
  9.  
  10. int dir, num = 4;
  11.  
  12. struct Snake
  13. { int x, y; } s[100]; // snake = array of points
  14.  
  15. // move the snake
  16. void Tick()
  17. {
  18. for (int i = num; i > 0; --i) // move snake body
  19. {
  20. s[i].x = s[i-1].x;
  21. s[i].y = s[i-1].y;
  22. }
  23.  
  24. // move snake head
  25. if (dir == 0) s[0].y += 1;
  26. if (dir == 1) s[0].x -= 1;
  27. if (dir == 2) s[0].x += 1;
  28. if (dir == 3) s[0].y -= 1;
  29. }
  30.  
  31. int main()
  32. {
  33. RenderWindow window(VideoMode(w, h), "Snake Game!");
  34.  
  35. Texture t1,t2,t3;
  36. t1.loadFromFile("/Users/alleyuan/code-snippets/16_games/04 Snake/images/white.png");
  37. t2.loadFromFile("/Users/alleyuan/code-snippets/16_games/04 Snake/images/red.png");
  38. t3.loadFromFile("/Users/alleyuan/code-snippets/16_games/04 Snake/images/green.png");
  39.  
  40. Sprite sprite1(t1);
  41. Sprite sprite2(t2);
  42. Sprite sprite3(t3);
  43.  
  44. Clock clock; // timer
  45. float timer = 0, delay = 0.1;
  46.  
  47. // game loop
  48. while(window.isOpen())
  49. {
  50. float time = clock.getElapsedTime().asSeconds(); // set timer
  51. clock.restart();
  52. timer += time;
  53.  
  54. // event handlers
  55. Event e;
  56. while (window.pollEvent(e))
  57. {
  58. // window close
  59. if (e.type == Event::Closed)
  60. window.close();
  61. }
  62.  
  63. // movement event handlers
  64. if (Keyboard::isKeyPressed(Keyboard::Left)) dir = 1;
  65. if (Keyboard::isKeyPressed(Keyboard::Right)) dir = 2;
  66. if (Keyboard::isKeyPressed(Keyboard::Up)) dir = 3;
  67. if (Keyboard::isKeyPressed(Keyboard::Down)) dir = 0;
  68.  
  69. // move the snake every <delay> seconds
  70. if (timer > delay) {
  71. timer = 0;
  72. Tick();
  73. }
  74.  
  75. window.clear();
  76.  
  77. // DRAW
  78. for (int i = 0; i < N; i++) // draw game grid
  79. for (int j = 0; j < M; j++)
  80. { sprite1.setPosition(i*size,j*size); window.draw(sprite1); }
  81.  
  82. for (int i = 0; i < num; i++) // draw snake
  83. {
  84. sprite2.setPosition(s[i].x*size, s[i].y*size);
  85. window.draw(sprite2);
  86. }
  87.  
  88. window.display();
  89. }
  90.  
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment