Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <windows.h>
- #include <time.h>
- #include <conio.h>
- #define PYTHON_MAX_SIZE 100
- void ConsoleGoXY(int x, int y);
- void HideCursor(void);
- void RemoveCharacters(int PythonPosition[][2]);
- void PutCharacters(int PythonPosition[][2]);
- int PlaceFood(int FoodCoord[2], int PythonPosition[][2]);
- int main()
- {
- srand(time(NULL));
- int PythonPosition[PYTHON_MAX_SIZE][2];
- for(int i=0;i<PYTHON_MAX_SIZE;i++) {
- PythonPosition[i][0] = -1;
- PythonPosition[i][1] = -1;
- }
- char PythonDirection = 3;
- PythonPosition[0][0] = 40;
- PythonPosition[0][1] = 12;
- PythonPosition[1][0] = 41;
- PythonPosition[1][1] = 12;
- PythonPosition[2][0] = 42;
- PythonPosition[2][1] = 12;
- HideCursor();
- PutCharacters(PythonPosition);
- char KeyBuf;
- int HaveFood = 0;
- int FoodCoord[2];
- while(1) {
- if(kbhit()) {
- KeyBuf = getch();
- switch(KeyBuf) {
- case 72:
- if(PythonDirection != 2)
- PythonDirection = 0;
- break;
- case 80:
- if(PythonDirection != 0)
- PythonDirection = 2;
- break;
- case 75:
- if(PythonDirection != 1)
- PythonDirection = 3;
- break;
- case 77:
- if(PythonDirection != 3)
- PythonDirection = 1;
- break;
- case 27:
- exit(0);
- }
- }
- if(!HaveFood)
- HaveFood = PlaceFood(FoodCoord, PythonPosition);
- RemoveCharacters(PythonPosition);
- {
- int i;
- for(i=0;PythonPosition[i+1][0]!= -1;i++)
- ;
- for(;i>0;i--) {
- PythonPosition[i][0] = PythonPosition[i-1][0];
- PythonPosition[i][1] = PythonPosition[i-1][1];
- }
- }
- switch(PythonDirection) {
- case 0:
- PythonPosition[0][1] -= 1;
- break;
- case 1:
- PythonPosition[0][0] += 1;
- break;
- case 2:
- PythonPosition[0][1] += 1;
- break;
- case 3:
- PythonPosition[0][0] -= 1;
- break;
- }
- for(int i=1;PythonPosition[i][0] != -1;i++)
- if((PythonPosition[0][1] == PythonPosition[i][1]) && (PythonPosition[0][0] == PythonPosition[i][0])) {
- ConsoleGoXY(20,12);
- printf("Eat yourself");
- system("pause\n");
- exit(0);
- }
- if(PythonPosition[0][1] == FoodCoord[1] && PythonPosition[0][0] == FoodCoord[0]) {
- int i;
- for(i=0;PythonPosition[i][0] != -1;i++)
- ;
- if(PythonPosition[i-1][0] == PythonPosition[i-2][0]) {
- if(PythonPosition[i-1][1] > PythonPosition[i-2][1]) {
- PythonPosition[i][0] = PythonPosition[i-1][0];
- PythonPosition[i][1] = PythonPosition[i-1][1] - 1;
- }
- else {
- PythonPosition[i][0] = PythonPosition[i-1][0];
- PythonPosition[i][1] = PythonPosition[i-1][1] = 1;
- }
- }
- if(PythonPosition[i-1][1] == PythonPosition[i-2][1]) {
- if(PythonPosition[i-1][0] > PythonPosition[i-2][0]) {
- PythonPosition[i][1] = PythonPosition[i-1][1] + 1;
- PythonPosition[i][0] = PythonPosition[i-1][0];
- }
- else {
- PythonPosition[i][1] = PythonPosition[i-1][1] - 1;
- PythonPosition[i][0] = PythonPosition[i-1][0];
- }
- }
- HaveFood = 0;
- }
- if(PythonPosition[0][0] <= 0 || PythonPosition[0][0] >= 80 || PythonPosition[0][1] <= 0 || PythonPosition[0][1] >= 25) {
- ConsoleGoXY(20,12);
- printf("Out of border\n");
- system("pause");
- exit(0);
- }
- PutCharacters(PythonPosition);
- Sleep(80);
- }
- return 0;
- }
- void RemoveCharacters(int PythonPosition[][2])
- {
- for(int i=0;i<PYTHON_MAX_SIZE;i++) {
- if(PythonPosition[i][0] != -1) {
- ConsoleGoXY(PythonPosition[i][0], PythonPosition[i][1]);
- putchar(' ');
- }
- else break;
- }
- }
- void PutCharacters(int PythonPosition[][2])
- {
- for(int i=0;i<PYTHON_MAX_SIZE;i++) {
- if(PythonPosition[i][0] != -1) {
- ConsoleGoXY(PythonPosition[i][0], PythonPosition[i][1]);
- putchar('@');
- }
- else break;
- }
- }
- int PlaceFood(int FoodCoord[2], int PythonPosition[][2])
- {
- int Normal;
- while(1) {
- Normal = 1;
- FoodCoord[0] = rand() % 80;
- FoodCoord[1] = rand() % 25;
- for(int i=0;PythonPosition[i][0] != -1;i++)
- if(FoodCoord[0] == PythonPosition[i][0] && FoodCoord[1] == PythonPosition[i][1]) {
- Normal = 0;
- break;
- }
- if(Normal == 1) {
- ConsoleGoXY(FoodCoord[0], FoodCoord[1]);
- putchar('*');
- return 1;
- }
- }
- }
- void ConsoleGoXY(int x, int y)
- {
- HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
- COORD place = {x,y};
- SetConsoleCursorPosition(hConsole, place);
- }
- void HideCursor(void)
- {
- CONSOLE_CURSOR_INFO CCI;
- CCI.bVisible = FALSE;
- CCI.dwSize= 1 ;
- SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CCI);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement