dimanche 22 avril 2018

Why my keyboard hit is evaluating false

I'm a c++ noob coding the snake game. The whole program draws the board, fruit and snake head perfectly, however I cannot seem to make the snake head coordinates change using a keyboard hit function. When going through the input function which gets keyboard strokes for snake movement, it appears that the if(kbhit) evaluates to false when running program,what is my error and how can i get the snake head to move? thanks

#include <iostream>
#include <stdlib.h> 
#include <time.h>
#include <windows.h>
#include <conio.h>
using namespace std;

int X,Y, fruitX, fruitY;
enum eDir { STOP = 1, UP = 2, DOWN = 3, RIGHT = 4, LEFT = 5 }; //declare variables
eDir direction;
const int height = 20;
const int width = 20;
int board[height][width];
bool gameOver;

void setup()
{
    gameOver = false;
    srand(time(NULL));          // initilize game set up
    fruitX = (rand() % width);
    fruitY = (rand() % height);
     X = height / 2;
     Y = width / 2;
    direction = STOP;
    int board[height][width];


};
void draw()
{

    system("cls");

    for (int i = 0; i < width + 2; i++)

        cout << '#';
        cout << endl;

    for (int i = 0; i < height; i++)    //loop through matrix to draw board
    {
        for (int j = 0; j < width; j++)
        {

        if (j == 0)
            cout << '#';
        if (i == Y && j == X) // draw snake head
            cout << 'T';
        else if (i == fruitY && j == fruitX) // draw fruit
            cout << 'F';
        else
            cout << ' ';

        if (j == width - 1)
            cout << '#';

        }
        cout << endl;
    }

    for (int i = 0; i < width + 2; i++)

        cout << '#';
        cout << endl;
};

void input()
{


    if (_kbhit())
    {

        switch (_getch())
        {
        case 'w':
            direction = UP;
            break;
        case 's':
            direction = DOWN;
            break;
        case 'a':
            direction = LEFT;
            break;
        case 'd':
            direction = RIGHT;
            break;
        default:
            break;
        }

    }
};

void logic()
{
    switch (direction)
    {
    case UP:
        Y--;
        break;
    case DOWN:
        Y++;
        break;
    case LEFT:
        X--;
        break;
    case RIGHT:
        X++;
        break;
    default:
        break;
    }









};

int main()
{
    setup();
    while (!gameOver)
    {
        draw();
        input();
        logic();
        return 0;
    }

};

Aucun commentaire:

Enregistrer un commentaire