Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.07 KB | None | 0 0
  1. #include "controls.h"
  2. #include "game.h"
  3. #include "console.h"
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. void gameTick(GameSettings *_settings, GameInstanse *_instanse);
  8. void initialHook(GameSettings *_settings, GameInstanse *_instanse);
  9. void checkSnakeDirection(Direction dir, GameInstanse *_instanse, GameSettings *_settings, Point first);
  10.  
  11. void eatSnake(Direction dir, GameInstanse *_instanse, GameSettings *_settings, Point first) {
  12.     if (_instanse->food.x == _instanse->Snake[0].x && _instanse->food.y == _instanse->Snake[0].y)
  13.     {
  14.         _instanse->snakeSize++;
  15.         _instanse->numberOfFood--;
  16.         //consoleDrawFood(_instanse, _settings);
  17.         _instanse->Snake = (Point*)realloc(_instanse->Snake, sizeof(Point) * _instanse->snakeSize);
  18.         _instanse->Snake[_instanse->snakeSize - 1] = _instanse->Snake[0];
  19.     }
  20.     checkSnakeDirection(dir, _instanse, _settings, first);
  21.  
  22. }
  23.  
  24. void checkSnakeDirection(Direction dir, GameInstanse *_instanse, GameSettings *_settings, Point first) {
  25.     for (int i = 1; i < _instanse->snakeSize; i++) {
  26.         setPixel(_instanse->Snake[i].x, _instanse->Snake[i].y, empty, _instanse, _settings);
  27.     }
  28.     setPixel(first.x, first.y, empty, _instanse, _settings);
  29.     Point tmp = first;
  30.     for (int i = 1; i < _instanse->snakeSize; i++) {
  31.         Point tmp2 = _instanse->Snake[i];
  32.         _instanse->Snake[i] = tmp;
  33.         tmp = tmp2;
  34.     }
  35.     for (int i = 0; i < _instanse->snakeSize; i++) {
  36.         if (i == 0) { setPixel(_instanse->Snake[0].x, _instanse->Snake[0].y, snakeHead, _instanse, _settings); }
  37.         else { setPixel(_instanse->Snake[i].x, _instanse->Snake[i].y, snakeBody, _instanse, _settings); }
  38.     }
  39. }
  40.  
  41. void checkSnake(Direction dir, GameInstanse *_instanse, GameSettings *_settings) {
  42.     char answer = 'w';
  43.     if (_instanse->Screen[_instanse->Snake[0].y *_settings->width + _instanse->Snake[0].x].type
  44.         == block)
  45.     {
  46.         switch (dir)
  47.         {
  48.         case UP:
  49.             _instanse->Snake[0].y++;
  50.             printf("Do you want to play once more? (y or n)\n");
  51.             while (true) {
  52.                 scanf_s("%c", &answer);
  53.                 if (answer == 'y' || answer == 'n') {
  54.                     break;
  55.                 }
  56.             }
  57.             if (answer == 'y') {
  58.                 _instanse->choose = 1;
  59.             }
  60.             else
  61.                 _instanse->choose = 0;
  62.  
  63.             break;
  64.         case DOWN:
  65.             _instanse->Snake[0].y--;
  66.             printf("Do you want to play once more? (y or n)\n");
  67.             while (true) {
  68.                 scanf_s("%c", &answer);
  69.                 if (answer == 'y' || answer == 'n') {
  70.                     break;
  71.                 }
  72.             }
  73.             if (answer == 'y') {
  74.                 _instanse->choose = 1;
  75.             }
  76.             else
  77.                 _instanse->choose = 0;
  78.             break;
  79.         case LEFT:
  80.             _instanse->Snake[0].x++;
  81.             printf("Do you want to play once more? (y or n)\n");
  82.             while (true) {
  83.                 scanf_s("%c", &answer);
  84.                 if (answer == 'y' || answer == 'n') {
  85.                     break;
  86.                 }
  87.             }
  88.             if (answer == 'y') {
  89.                 _instanse->choose = 1;
  90.             }
  91.             else
  92.                 _instanse->choose = 0;
  93.             break;
  94.         case RIGHT:
  95.             _instanse->Snake[0].x--;
  96.             printf("Do you want to play once more? (y or n)\n");
  97.             while (true) {
  98.                 scanf_s("%c", &answer);
  99.                 if (answer == 'y' || answer == 'n') {
  100.                     break;
  101.                 }
  102.             }
  103.             if (answer == 'y') {
  104.                 _instanse->choose = 1;
  105.             }
  106.             else
  107.                 _instanse->choose = 0;
  108.             break;
  109.         }
  110.     }
  111. }
  112.  
  113. void moveSnake(Direction dir, GameInstanse *_instanse, GameSettings *_settings) {
  114.     Point first = _instanse->Snake[0];
  115.     switch (dir) {
  116.         case UP:
  117.             if (_instanse->Snake[0].y == _settings->borderSize) {
  118.                 _instanse->Snake[0].y = _settings->height - _settings->borderSize;
  119.             }
  120.             _instanse->Snake[0].y--;
  121.             break;
  122.         case DOWN:
  123.             if (_instanse->Snake[0].y + 1 == _settings->height - _settings->borderSize) {
  124.                 _instanse->Snake[0].y = _settings->borderSize - 1;
  125.             }
  126.             _instanse->Snake[0].y++;
  127.             break;
  128.         case LEFT:
  129.             if (_instanse->Snake[0].x == _settings->borderSize) {
  130.                 _instanse->Snake[0].x = _settings->width - _settings->borderSize;
  131.             }
  132.             _instanse->Snake[0].x--;
  133.             break;
  134.         case RIGHT:
  135.             if (_instanse->Snake[0].x + 1 == _settings->width - _settings->borderSize) {
  136.                 _instanse->Snake[0].x = _settings->borderSize - 1;
  137.             }
  138.             _instanse->Snake[0].x++;
  139.             break;
  140.     }
  141.     eatSnake(dir,_instanse, _settings, first);
  142.     checkSnake(dir,_instanse, _settings);
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement