Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "controls.h"
- #include "game.h"
- #include "console.h"
- #include <stdio.h>
- #include <stdlib.h>
- void gameTick(GameSettings *_settings, GameInstanse *_instanse);
- void initialHook(GameSettings *_settings, GameInstanse *_instanse);
- void checkSnakeDirection(Direction dir, GameInstanse *_instanse, GameSettings *_settings, Point first);
- void eatSnake(Direction dir, GameInstanse *_instanse, GameSettings *_settings, Point first) {
- if (_instanse->food.x == _instanse->Snake[0].x && _instanse->food.y == _instanse->Snake[0].y)
- {
- _instanse->snakeSize++;
- _instanse->numberOfFood--;
- //consoleDrawFood(_instanse, _settings);
- _instanse->Snake = (Point*)realloc(_instanse->Snake, sizeof(Point) * _instanse->snakeSize);
- _instanse->Snake[_instanse->snakeSize - 1] = _instanse->Snake[0];
- }
- checkSnakeDirection(dir, _instanse, _settings, first);
- }
- void checkSnakeDirection(Direction dir, GameInstanse *_instanse, GameSettings *_settings, Point first) {
- for (int i = 1; i < _instanse->snakeSize; i++) {
- setPixel(_instanse->Snake[i].x, _instanse->Snake[i].y, empty, _instanse, _settings);
- }
- setPixel(first.x, first.y, empty, _instanse, _settings);
- Point tmp = first;
- for (int i = 1; i < _instanse->snakeSize; i++) {
- Point tmp2 = _instanse->Snake[i];
- _instanse->Snake[i] = tmp;
- tmp = tmp2;
- }
- for (int i = 0; i < _instanse->snakeSize; i++) {
- if (i == 0) { setPixel(_instanse->Snake[0].x, _instanse->Snake[0].y, snakeHead, _instanse, _settings); }
- else { setPixel(_instanse->Snake[i].x, _instanse->Snake[i].y, snakeBody, _instanse, _settings); }
- }
- }
- void checkSnake(Direction dir, GameInstanse *_instanse, GameSettings *_settings) {
- char answer = 'w';
- if (_instanse->Screen[_instanse->Snake[0].y *_settings->width + _instanse->Snake[0].x].type
- == block)
- {
- switch (dir)
- {
- case UP:
- _instanse->Snake[0].y++;
- printf("Do you want to play once more? (y or n)\n");
- while (true) {
- scanf_s("%c", &answer);
- if (answer == 'y' || answer == 'n') {
- break;
- }
- }
- if (answer == 'y') {
- _instanse->choose = 1;
- }
- else
- _instanse->choose = 0;
- break;
- case DOWN:
- _instanse->Snake[0].y--;
- printf("Do you want to play once more? (y or n)\n");
- while (true) {
- scanf_s("%c", &answer);
- if (answer == 'y' || answer == 'n') {
- break;
- }
- }
- if (answer == 'y') {
- _instanse->choose = 1;
- }
- else
- _instanse->choose = 0;
- break;
- case LEFT:
- _instanse->Snake[0].x++;
- printf("Do you want to play once more? (y or n)\n");
- while (true) {
- scanf_s("%c", &answer);
- if (answer == 'y' || answer == 'n') {
- break;
- }
- }
- if (answer == 'y') {
- _instanse->choose = 1;
- }
- else
- _instanse->choose = 0;
- break;
- case RIGHT:
- _instanse->Snake[0].x--;
- printf("Do you want to play once more? (y or n)\n");
- while (true) {
- scanf_s("%c", &answer);
- if (answer == 'y' || answer == 'n') {
- break;
- }
- }
- if (answer == 'y') {
- _instanse->choose = 1;
- }
- else
- _instanse->choose = 0;
- break;
- }
- }
- }
- void moveSnake(Direction dir, GameInstanse *_instanse, GameSettings *_settings) {
- Point first = _instanse->Snake[0];
- switch (dir) {
- case UP:
- if (_instanse->Snake[0].y == _settings->borderSize) {
- _instanse->Snake[0].y = _settings->height - _settings->borderSize;
- }
- _instanse->Snake[0].y--;
- break;
- case DOWN:
- if (_instanse->Snake[0].y + 1 == _settings->height - _settings->borderSize) {
- _instanse->Snake[0].y = _settings->borderSize - 1;
- }
- _instanse->Snake[0].y++;
- break;
- case LEFT:
- if (_instanse->Snake[0].x == _settings->borderSize) {
- _instanse->Snake[0].x = _settings->width - _settings->borderSize;
- }
- _instanse->Snake[0].x--;
- break;
- case RIGHT:
- if (_instanse->Snake[0].x + 1 == _settings->width - _settings->borderSize) {
- _instanse->Snake[0].x = _settings->borderSize - 1;
- }
- _instanse->Snake[0].x++;
- break;
- }
- eatSnake(dir,_instanse, _settings, first);
- checkSnake(dir,_instanse, _settings);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement