Advertisement
erzis

Untitled

Jan 2nd, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 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];
  14.  
  15. struct Fruct
  16. { int x,y;} f;
  17.  
  18. void Tick()
  19. {
  20. for (int i=num;i>0;--i)
  21. {s[i].x=s[i-1].x;
  22. s[i].y=s[i-1].y;}
  23.  
  24. if (dir==0) s[0].y+=1;
  25. if (dir==1) s[0].x-=1;
  26. if (dir==2) s[0].x+=1;
  27. if (dir==3) s[0].y-=1;
  28.  
  29. if ((s[0].x==f.x) && (s[0].y==f.y))
  30. { num++;
  31. f.x=rand() % N;
  32. f.y=rand() % M; }
  33.  
  34. if (s[0].x>N) s[0].x=0; if (s[0].x<0) s[0].x=N;
  35. if (s[0].y>M) s[0].y=0; if (s[0].y<0) s[0].y=M;
  36.  
  37. for (int i=1;i<num;i++)
  38. if (s[0].x==s[i].x && s[0].y==s[i].y) num=i;
  39. }
  40.  
  41. int main()
  42. {
  43. srand(time(0));
  44.  
  45. RenderWindow window(VideoMode(w, h), "Snake Game!");
  46.  
  47. Texture t1,t2;
  48. t1.loadFromFile("images/white.png");
  49. t2.loadFromFile("images/red.png");
  50.  
  51. Sprite sprite1(t1);
  52. Sprite sprite2(t2);
  53.  
  54. Clock clock;
  55. float timer=0, delay=0.1;
  56.  
  57. f.x=10;
  58. f.y=10;
  59.  
  60. while (window.isOpen())
  61. {
  62. float time = clock.getElapsedTime().asSeconds();
  63. clock.restart();
  64. timer+=time;
  65.  
  66. Event e;
  67. while (window.pollEvent(e))
  68. {
  69. if (e.type == Event::Closed)
  70. window.close();
  71. }
  72.  
  73. if (Keyboard::isKeyPressed(Keyboard::Left)) dir=1;
  74. if (Keyboard::isKeyPressed(Keyboard::Right)) dir=2;
  75. if (Keyboard::isKeyPressed(Keyboard::Up)) dir=3;
  76. if (Keyboard::isKeyPressed(Keyboard::Down)) dir=0;
  77.  
  78. if (timer>delay) {timer=0; Tick();}
  79.  
  80. ////// draw ///////
  81. window.clear();
  82.  
  83. for (int i=0; i<N; i++)
  84. for (int j=0; j<M; j++)
  85. { sprite1.setPosition(i*size,j*size); window.draw(sprite1); }
  86.  
  87. for (int i=0;i<num;i++)
  88. { sprite2.setPosition(s[i].x*size, s[i].y*size); window.draw(sprite2); }
  89.  
  90. sprite2.setPosition(f.x*size, f.y*size); window.draw(sprite2);
  91.  
  92. window.display();
  93. }
  94.  
  95. return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement