Advertisement
rowers

snake2

Mar 25th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.39 KB | None | 0 0
  1. #include "GraphLib.h"
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. struct WarmSegment
  6. {
  7.     int x;
  8.     int y;
  9. };
  10.  
  11.  
  12. struct MoveDirecton
  13. {
  14.     int dx;
  15.     int dy;
  16. };
  17.  
  18.  
  19. // head is at Warm[0]
  20. struct WarmSegment Warm[100] = { { 40, 10 }, { 41, 10 }, { 42, 10 }, { 43, 10 }, { 44, 10 } };
  21. int WarmLength = 5;
  22. struct WarmSegment owoc; // owoc do zebrania.
  23.  
  24.  
  25. int kierunek;
  26. int koniec;
  27. int znak;
  28. int score;
  29. int zjedzony = 0;
  30. void d_owoc(){ // losowanie pozycji owociu z uwzględnieniem polozenia weza
  31.     int i;
  32.     owoc.y = rand() % 40;
  33.     owoc.x = rand() % 60;
  34.     for (i = WarmLength; i>0; i--){ //
  35.         if (owoc.x == Warm[i].x && owoc.y == Warm[i].y){
  36.             d_owoc();
  37.         }
  38.     }
  39. }
  40. void rysujowoc()
  41. {
  42.     gotoxy(owoc.x, owoc.y);
  43.     printf("o");
  44. }
  45.  
  46.  
  47. void DrawScreen()
  48. {
  49.  
  50.     int i;
  51.     clrscr();
  52.     hidecursor();
  53.     rysujowoc();
  54.     for (i = 0; i < WarmLength; i++)
  55.     {
  56.         gotoxy(Warm[i].x, Warm[i].y);
  57.         printf("@");
  58.  
  59.     }
  60. }
  61.  
  62. void ruch()
  63. {
  64.     int i;
  65.  
  66.  
  67.  
  68.     if (kierunek == 1)
  69.         Warm[0].y = Warm[0].y - 1;//góra
  70.     else if (kierunek == 2)
  71.         Warm[0].x = Warm[0].x - 1;//lewo
  72.     else if (kierunek == 3)
  73.         Warm[0].y = Warm[0].y + 1;//dół
  74.     else if (kierunek == 4)
  75.         Warm[0].x = Warm[0].x + 1;//prawo
  76.     if (Warm[0].x == owoc.x && Warm[0].y == owoc.y){ // sprawdza czy owoc zostal zjedzony
  77.         zjedzony = 1;
  78.         WarmLength += 1;
  79.     }
  80.  
  81.  
  82.  
  83.     for (i = WarmLength; i>0; i--){ //ruch weza
  84.         if (Warm[0].x == Warm[i].x && Warm[0].y == Warm[i].y)
  85.             koniec = 1;
  86.         Warm[i].x = Warm[i - 1].x;  //przesunięcie wartości na kolejny człon
  87.         Warm[i].y = Warm[i - 1].y;  //przesunięcie wartości na kolejny człon
  88.     }
  89.    
  90.  
  91. }
  92. void main() {
  93.     int j;
  94.  
  95.     kierunek = 2;
  96.     d_owoc(); //wstępne losowanie x, y pojawienia się owocu
  97.     while (koniec == 0)
  98.     {
  99.         DrawScreen();
  100.         ruch();
  101.  
  102.  
  103.         for (j = 0; j<10000; j++){ // zczytywanie danych z klawiatury
  104.             if (_kbhit())
  105.                 znak = _getch();
  106.  
  107.  
  108.             if (znak == 'w' && kierunek != 3)
  109.                 kierunek = 1;
  110.  
  111.             else if (znak == 'a' && kierunek != 4)
  112.                 kierunek = 2;
  113.  
  114.             else if (znak == 's' && kierunek != 1)
  115.                 kierunek = 3;
  116.  
  117.             else if (znak == 'd' && kierunek != 2)
  118.                 kierunek = 4;
  119.         }
  120.         ruch();
  121.         if (zjedzony == 1){ // usuwanie zjedzonego owocu, i losowanie nowych x,y.
  122.             gotoxy(owoc.x, owoc.y);
  123.             printf(" ");
  124.             d_owoc();
  125.             zjedzony = 0;
  126.         }
  127.         gotoxy(Warm[WarmLength - 1].x, Warm[WarmLength - 1].y); // usuwanie ostatniego el. weza
  128.         printf(" ");
  129.  
  130.     }
  131.     pause();
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement