| Updated - gnuskii - GNUSki improved for ascii skiing experience. | |
| git clone git://bitreich.org/gnuskii git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws… | |
| Log | |
| Files | |
| Refs | |
| Tags | |
| README | |
| LICENSE | |
| --- | |
| commit 87b943aed70c17b78f041e9b92e0e4240b3dbbc9 | |
| parent b964e57401e264dbf9a4804eb6d99714f7305a0e | |
| Author: Rudolf Olah <[email protected]> | |
| Date: Mon, 27 Jun 2005 21:50:56 -0400 | |
| Updated | |
| Diffstat: | |
| M src/draw.h | 200 ++++++++++++++++++++++++++---… | |
| 1 file changed, 170 insertions(+), 30 deletions(-) | |
| --- | |
| 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'); … | |
| - case angle_cl: add(y+2,x+2,'S'); add(y+1,x+1,'S'… | |
| - case angle_c: add(y+2,x,'S'); add(y+1,x,'S'); … | |
| - case angle_cr: add(y+2,x-2,'S'); add(y+1,x-1,'S'… | |
| - case angle_r: add(y,x-2,'S'); add(y,x-1,'S'); … | |
| - */ | |
| - case angle_l: add(y,x+1,'|'); //add(y,x+2,'|'); | |
| - add(y+1,x+1,'|'); //add… | |
| + 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,'\\'); //ad… | |
| + 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… | |
| + 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… | |
| + 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 |