Roguelike AoC – part 14

In the fourteenth lesson of a roguelike game tutorial a next type of monster move is added – the random one.

Like a staggering drunk

To be honest there was not much to be done in this lesson – an algorithm presented by the author actually works well – it’s just random position to be chosen for a monster to move. Despite the fact that I had to make the code comply with my Location structure nothing original happened. So the code is just self explaining:

int pathfindingRandom(Monster *monster)
{
    int random = rand() % 5;

    switch (random) {

        case 0:
            if (mvinch(monster->currentLocation->position.y - 1, monster->currentLocation->position.x) == *FLOOR_SIGN) {
                monster->previousLocation = monster->currentLocation;
                monster->currentLocation->position.y -= 1;
            }
            break;
        case 1:
            if (mvinch(monster->currentLocation->position.y + 1, monster->currentLocation->position.x) == *FLOOR_SIGN) {
                monster->previousLocation = monster->currentLocation;
                monster->currentLocation->position.y += 1;
            }
            break;
        case 2:
            if (mvinch(monster->currentLocation->position.y, monster->currentLocation->position.x - 1) == *FLOOR_SIGN) {
                monster->previousLocation = monster->currentLocation;
                monster->currentLocation->position.x -= 1;
            }
            break;
        case 3:
            if (mvinch(monster->currentLocation->position.y, monster->currentLocation->position.x + 1) == *FLOOR_SIGN) {
                monster->previousLocation = monster->currentLocation;
                monster->currentLocation->position.x += 1;
            }
        case 4:
            break;
    }

    return 0;
}

 

Code

Here is the direct link to the GitHub repo.

You Might Also Like

Leave a Reply

Back to top