Updated - gnuskii - GNUSki improved for ascii skiing experience.
 (HTM) git clone git://bitreich.org/gnuskii git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gnuskii
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 87b943aed70c17b78f041e9b92e0e4240b3dbbc9
 (DIR) parent b964e57401e264dbf9a4804eb6d99714f7305a0e
 (HTM) Author: Rudolf Olah <rudolf.olah.to@gmail.com>
       Date:   Mon, 27 Jun 2005 21:50:56 -0400
       
       Updated
       
       Diffstat:
         M src/draw.h                          |     200 ++++++++++++++++++++++++++-----
       
       1 file changed, 170 insertions(+), 30 deletions(-)
       ---
 (DIR) diff --git a/src/draw.h b/src/draw.h
       @@ -24,34 +24,158 @@ void add(int x, int y, char d)
                addch(d);
        };
        
       -void drawSkiDude(int x, int y, int angle)
       +class object
        {
       -        color_set(COLOR_CYAN,0);
       +private:
       +public:
       +        int x, y;
       +        object();
       +        object(int newX, int newY);
       +        virtual void draw();
       +        virtual int getX();
       +        virtual int getY();
       +};
       +
       +object::object()
       +{
       +        x = 0;
       +        y = 0;
       +};
       +
       +object::object(int newX, int newY)
       +{
       +        x = newX;
       +        y = newY;
       +};
       +
       +void object::draw()
       +{
       +};
       +
       +int object::getX()
       +{
       +        return x;
       +};
       +
       +int object::getY()
       +{
       +        return y;
       +};
       +
       +
       +
       +
       +class skiDude : public object
       +{
       +private:
       +        int nextX, nextY;
       +        int angle;
       +public:
       +        skiDude(int newX, int newY, int newAngle);
       +        void crash();
       +        void draw();
       +        void setX(int newX);
       +        void setY(int newY);
       +        void setAngle(int newAngle);
       +        int getX();
       +        int getY();
       +        int getNextX();
       +        int getNextY();
       +        int getAngle();
       +};
       +
       +void skiDude::setX(int newX)
       +{
       +        x = newX;
       +        nextX = newX + 1;
       +};
       +
       +void skiDude::setY(int newY)
       +{
       +        y = newY;
       +        switch (angle)
       +        {
       +                case angle_l:
       +                case angle_cl:        nextY = newY + 1;
       +                                                break;
       +                case angle_c:        nextY = newY;
       +                                                break;
       +                case angle_r:
       +                case angle_cr:        nextY = newY - 1;
       +                                                break;
       +        };
       +        nextY = newY + 1;
       +};
       +
       +void skiDude::setAngle(int newAngle)
       +{
       +        if (newAngle > 4)
       +                angle = 4;
       +        else if (newAngle < 0)
       +                        angle = 0;
       +                else
       +                        angle = newAngle;
       +};
       +
       +int skiDude::getX()        {        return x;        };
       +
       +int skiDude::getY()        {        return y;        };
       +
       +int skiDude::getNextX()        {        return nextX;        };
       +
       +int skiDude::getNextY()        {        return nextY;        };
       +
       +int skiDude::getAngle()        {        return angle;        };
       +
       +skiDude::skiDude(int newX, int newY, int newAngle)
       +{
       +        setAngle(newAngle);
       +        setX(newX);
       +        setY(newY);
       +};
       +
       +void skiDude::crash()
       +{
       +        add(x, y, 'X');
       +};
       +
       +void skiDude::draw()
       +{
       +        color_set(COLOR_CYAN, 0);
                switch (angle)
                {
       -                /*
       -                case angle_l:        add(y,x+2,'S');        add(y,x+1,'S');        add(y,x,'S'); break;
       -                case angle_cl:        add(y+2,x+2,'S');        add(y+1,x+1,'S');        add(y,x,'S'); break;
       -                case angle_c:        add(y+2,x,'S');        add(y+1,x,'S');        add(y,x,'S'); break;
       -                case angle_cr:        add(y+2,x-2,'S');        add(y+1,x-1,'S');        add(y,x,'S'); break;
       -                case angle_r:        add(y,x-2,'S');        add(y,x-1,'S');        add(y,x,'S'); break;
       -                */
       -                case angle_l:        add(y,x+1,'|');        //add(y,x+2,'|');
       -                                                add(y+1,x+1,'|');        //add(y+1,x+2,'|');
       +                case angle_l:        add(y, x+1, '|');
       +                                                add(y+1, x+1, '|');
                                                        break;
       -                case angle_cl:        add(y+1,x+1,'\\');        //add(y+2,x+2,'\\');
       -                                                add(y+2,x+1,'\\');        //add(y+3,x+2,'\\');
       +                case angle_cl:        add(y+1, x+1, '\\');
       +                                                add(y+2, x+1, '\\');
                                                        break;
       -                case angle_c:        add(y+1,x,'=');        //add(y+2,x,'=');
       +                case angle_c:        add(y+1, x, '=');
                                                        break;
       -                case angle_cr:        add(y+1,x-1,'/');        //add(y+2,x-2,'/');
       -                                                add(y+2,x-1,'/');        //add(y+3,x-2,'/');
       +                case angle_cr:        add(y+1, x-1, '/');
       +                                                add(y+2, x-1, '/');
                                                        break;
       -                case angle_r:        add(y,x-2,'|');        //add(y,x-1,'|');
       -                                                add(y+1,x-2,'|');        //add(y+1,x-1,'|');
       +                case angle_r:        add(y, x-2, '|');
       +                                                add(y+1, x-2, '|');
                                                        break;
                };
       -        color_set(COLOR_WHITE,0);
       +        color_set(COLOR_WHITE, 0);
       +};
       +
       +
       +
       +
       +class tree : public object
       +{
       +public:
       +        tree(int newX, int newY);
       +        void draw();
       +};
       +
       +tree::tree(int newX, int newY)
       +{
       +        x = newX;
       +        y = newY;
        };
        
        //Draws a tree
       @@ -60,25 +184,41 @@ void drawSkiDude(int x, int y, int angle)
                /|\
                  |
        */
       -void drawTree(int x, int y)
       +void tree::draw()
       +{
       +        color_set(COLOR_GREEN, 0);
       +        add(x, y, '/');                add(x+2, y, '\\');
       +        add(x, y+1, '/');        add(x+2, y+1, '\\');
       +        color_set(COLOR_YELLOW, 0);
       +        add(x+1, y, '|');        add(x+1, y+1, '|');        add(x+1, y+2, '|');
       +        color_set(COLOR_WHITE, 0);
       +};
       +
       +
       +
       +
       +class rock : public object
       +{
       +public:
       +        rock(int newX, int newY);
       +        void draw();
       +};
       +
       +rock::rock(int newX, int newY)
        {
       -        color_set(COLOR_GREEN,0);
       -        add(x,y,'/');                add(x+2,y,'\\');
       -        add(x,y+1,'/');        add(x+2,y+1,'\\');
       -        color_set(COLOR_YELLOW,0);
       -        add(x+1,y,'|');        add(x+1,y+1,'|');        add(x+1,y+2,'|');
       -        color_set(COLOR_WHITE,0);
       +        x = newX;
       +        y = newY;
        };
        
        //Draws a rock
        /*
                @
        */
       -void drawRock(int x, int y)
       +void rock::draw()
        {
       -        color_set(COLOR_WHITE,0);
       -        add(x,y,'@');
       -        color_set(COLOR_WHITE,0);
       +        color_set(COLOR_WHITE, 0);
       +        add(x, y, '@');
       +        color_set(COLOR_WHITE, 0);
        };
        
        #endif