Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Entity/Snake/Snake.h

Committer:
el17sm
Date:
2019-04-25
Revision:
18:3c030560e31d
Parent:
17:99e533f7f2fb
Child:
22:7abf4581bc9b

File content as of revision 18:3c030560e31d:

#ifndef SNAKE_H
#define SNAKE_H
#include "Entity.h"

class Snake : public Entity {
    
    public:
    // Constructor
    Snake(float, float);
    
    // Functions
    virtual void move(float, float);
    virtual int * get_frame();
    
    private:
    // Member Function
    void update_prev_face();
    
    // Member Mutator
    void update_hitbox(int, int, int, int, int, int, int, int, int);
    
    // Member Variable
    int _velocity_index;
    int _prev_face;
    
};

const float velocity_pattern[6] = {0, 0.3, 0.5, 0.7, 0.5, -0.2};

const int sprite_snake_x[2][4][7][12] = {   // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
    {   // Right
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,1,1,1,1,0,1,1,1,1,0,},
            {1,1,1,0,1,1,1,1,1,1,0,0,},
        },
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,1,1,1,1,0,1,1,1,1,1,0,},
            {1,0,0,1,1,1,1,1,1,1,0,0,},
        },
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {1,0,0,0,0,0,0,0,1,1,1,0,},
            {0,1,0,0,1,1,1,1,1,1,1,0,},
            {0,0,1,1,1,0,1,1,1,1,0,0,},
        },
        {
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {0,0,0,0,0,0,0,1,1,1,2,1,},
            {0,0,0,0,0,0,0,1,1,1,1,1,},
            {0,0,0,0,0,0,0,1,1,1,0,0,},
            {0,0,0,0,0,0,0,0,1,1,1,0,},
            {1,1,0,1,1,1,1,1,1,1,1,0,},
            {0,0,1,1,0,1,1,1,1,1,0,0,},
        }
    },
    {   // Left
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {0,1,1,1,1,0,1,1,1,1,0,0,},
            {0,0,1,1,1,1,1,1,0,1,1,1,},
        },
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {0,1,1,1,1,1,0,1,1,1,1,0,},
            {0,0,1,1,1,1,1,1,1,0,0,1,},
        },
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,1,},
            {0,1,1,1,1,1,1,1,0,0,1,0,},
            {0,0,1,1,1,1,0,1,1,1,0,0,},
        },
        {
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {1,2,1,1,1,0,0,0,0,0,0,0,},
            {1,1,1,1,1,0,0,0,0,0,0,0,},
            {0,0,1,1,1,0,0,0,0,0,0,0,},
            {0,1,1,1,0,0,0,0,0,0,0,0,},
            {0,1,1,1,1,1,1,1,1,0,1,1,},
            {0,0,1,1,1,1,1,0,1,1,0,0,},
        }
    }
};

const int sprite_snake_y[2][6][12][6] = {   // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
    {   // Up
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,0,0,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,0,1,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,0,1,0,},
            {0,0,0,1,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,0,1,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,0,0,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,1,1,1,1,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,0,0,0,0,},
            {0,0,1,0,0,0,},
        }
    },
    {   // Down
        {
            {0,0,0,0,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,1,1,0,0,},
            {0,1,0,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,1,0,0,0,},
            {0,1,0,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,1,0,0,0,0,},
            {0,0,1,1,0,0,},
            {0,0,0,1,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,1,1,0,0,},
            {0,0,0,0,1,0,},
            {0,0,0,1,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        },
        {
            {0,0,0,1,0,0,},
            {0,0,0,0,1,0,},
            {0,0,1,1,0,0,},
            {0,1,1,0,0,0,},
            {0,1,1,0,0,0,},
            {0,0,1,1,0,0,},
            {0,1,1,1,1,0,},
            {1,1,1,1,1,1,},
            {1,2,1,1,2,1,},
            {0,1,1,1,1,0,},
            {0,0,1,1,0,0,},
            {0,0,1,1,0,0,},
        }
    }
};

#endif