Advertisement
rowers

snejk

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