Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "GraphLib.h"
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <time.h>
- struct WarmSegment
- {
- int x;
- int y;
- };
- struct MoveDirecton
- {
- int dx;
- int dy;
- };
- // head is at Warm[0]
- struct WarmSegment Warm[100] = { { 40, 10 }, { 41, 10 }, { 42, 10 }, { 43, 10 }, { 44, 10 } };
- int WarmLength = 5;
- struct WarmSegment owoc; // owoc do zebrania.
- int kierunek;
- int koniec;
- int znak;
- int score;
- int zjedzony = 0;
- void d_owoc(){ // losowanie pozycji owociu z uwzględnieniem polozenia weza
- int i;
- owoc.y = rand() % 23;
- owoc.x = rand() % 80;
- for (i = WarmLength; i>0; i--){ //
- if(owoc.x % 2 == 0) owoc.x -= 1;
- if(owoc.y % 2 == 0) owoc.y -= 1;
- if (owoc.x == Warm[i].x && owoc.y == Warm[i].y){
- d_owoc();
- }
- }
- }
- void rysujowoc()
- {
- gotoxy(owoc.x, owoc.y);
- printf("¦");
- }
- void DrawScreen()
- {
- int i;
- clrscr();
- hidecursor();
- rysujowoc();
- for (i = 0; i < WarmLength; i++)
- {
- gotoxy(Warm[i].x, Warm[i].y);
- printf("@");
- }
- }
- void ruch()
- {
- int i;
- if (kierunek == 1)
- Warm[0].y = Warm[0].y - 1;//góra
- else if (kierunek == 2)
- Warm[0].x = Warm[0].x - 1;//lewo
- else if (kierunek == 3)
- Warm[0].y = Warm[0].y + 1;//dół
- else if (kierunek == 4)
- Warm[0].x = Warm[0].x + 1;//prawo
- if (Warm[0].x == owoc.x && Warm[0].y == owoc.y){ // sprawdza czy owoc zostal zjedzony
- zjedzony = 1;
- WarmLength += 1;
- }
- for (i = WarmLength; i>0; i--){ //ruch weza
- if (Warm[0].x == Warm[i].x && Warm[0].y == Warm[i].y)
- koniec = 1;
- Warm[i].x = Warm[i - 1].x; //przesunięcie wartości na kolejny człon
- Warm[i].y = Warm[i - 1].y; //przesunięcie wartości na kolejny człon
- }
- }
- void main() {
- int j;
- srand(time(NULL));
- kierunek = 2;
- d_owoc(); //wstępne losowanie x, y pojawienia się owocu
- while (koniec == 0)
- {
- DrawScreen();
- ruch();
- for (j = 0; j<25000; j++){ // zczytywanie danych z klawiatury
- if (_kbhit())
- znak = _getch();
- if (znak == 'w' && kierunek != 3)
- kierunek = 1;
- else if (znak == 'a' && kierunek != 4)
- kierunek = 2;
- else if (znak == 's' && kierunek != 1)
- kierunek = 3;
- else if (znak == 'd' && kierunek != 2)
- kierunek = 4;
- }
- ruch();
- if (zjedzony == 1){ // usuwanie zjedzonego owocu, i losowanie nowych x,y.
- gotoxy(owoc.x, owoc.y);
- printf(" ");
- d_owoc();
- zjedzony = 0;
- }
- gotoxy(Warm[WarmLength - 1].x, Warm[WarmLength - 1].y); // usuwanie ostatniego el. weza
- printf(" ");
- }
- pause();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement