From 82292deb533fd1c05cf186a5a39b158bdcb60ca3 Mon Sep 17 00:00:00 2001 From: zombidust Date: Sun, 16 Mar 2014 13:40:52 +0200 Subject: [PATCH] adding basic classes --- source/bullet.cpp | 59 ++++++++++++++ source/entities.h | 29 +++++++ source/player.cpp | 188 +++++++++++++++++++++++++++++++++++++++++++ source/point.cpp | 14 ++++ source/point.h | 20 +++++ source/projectiles.h | 37 +++++++++ 6 files changed, 347 insertions(+) create mode 100644 source/bullet.cpp create mode 100644 source/entities.h create mode 100644 source/player.cpp create mode 100644 source/point.cpp create mode 100644 source/point.h create mode 100644 source/projectiles.h diff --git a/source/bullet.cpp b/source/bullet.cpp new file mode 100644 index 0000000..42b8f4b --- /dev/null +++ b/source/bullet.cpp @@ -0,0 +1,59 @@ +#include "projectiles.h" +#include "entities.h" +#include "point.h" + +bool Bullet::hitScan() { + if((origin_.getX()+(size_/2))>=map_.getX()) { + hit_=true; + } + else if((origin_.getX()-(size_/2))<=0) { + hit_=true; + } + else if((origin_.getY()+(size_/2))>=map_.getY()) { + hit_=true; + } + else if((origin_.getY()-(size_/2))<=0) { + hit_=true; + } + else { + switch(direction_) { + case 0: + origin_.setY(origin_.getY()-4); + break; + case 1: + origin_.setX(origin_.getX()+2); + origin_.setY(origin_.getY()-2); + break; + case 2: + origin_.setX(origin_.getX()+4); + break; + case 3: + origin_.setX(origin_.getX()+2); + origin_.setY(origin_.getY()+2); + break; + case 4: + origin_.setY(origin_.getY()+4); + break; + case 5: + origin_.setX(origin_.getX()-2); + origin_.setY(origin_.getY()+2); + break; + case 6: + origin_.setX(origin_.getX()-4); + break; + case 7: + origin_.setX(origin_.getX()-2); + origin_.setY(origin_.getY()-2); + break; + } + } + return hit_; +} + +Point Bullet::getPosition() const { + return origin_; +} + +int Bullet::getSize() const { + return size_; +} diff --git a/source/entities.h b/source/entities.h new file mode 100644 index 0000000..3369315 --- /dev/null +++ b/source/entities.h @@ -0,0 +1,29 @@ +#ifndef ENTITIES_H_ +#define ENTITIES_H_ + +#include "point.h" + +class Player { + Point origin_; + Point map_; + int direction_; + int size_; + + int checkDirection(int dir) const; + +public: + + Player() + : origin_(5,5), + map_(640,480), + direction_(0), + size_(10) + {} + + Point getPosition() const; + int getDirection() const; + void movePlayer(int dir); + void init(Point origin, int size, int dir, Point map); +}; + +#endif diff --git a/source/player.cpp b/source/player.cpp new file mode 100644 index 0000000..a593349 --- /dev/null +++ b/source/player.cpp @@ -0,0 +1,188 @@ +#include "point.h" +#include "entities.h" + +int Player::checkDirection(int dir) const { + int x=origin_.getX(); + int y=origin_.getY(); + switch(dir) { + case 0: + if(y==(size_/2)) { + return 12; + } + else if(y==(size_/2)+1) { + return 8; + } + else return 0; + break; + case 1: + if((y==(size_/2))&&(x!=(map_.getX()-(size_/2)))) { + return 9; + } + else if((y==(size_/2))&&(x==(map_.getX()-(size_/2)))) { + return 13; + } + else if((y!=(size_/2))&&(x==(map_.getX()-(size_/2)))) { + return 8; + } + else return 1; + break; + case 2: + if(x==(map_.getX()-(size_/2))) { + return 14; + } + else if(x==(map_.getX()-((size_/2)+1))) { + return 9; + } + else { + return 2; + } + break; + case 3: + if((y==(map_.getY()-(size_/2)))&&(x!=(map_.getX()-(size_/2)))) { + return 9; + } + else if((y==(map_.getY()-(size_/2)))&&(x==(map_.getX()-(size_/2)))) { + return 15; + } + else if((y!=(map_.getY()-(size_/2)))&&(x==(map_.getX()-(size_/2)))) { + return 10; + } + else return 3; + break; + case 4: + if(y==(map_.getY()-(size_/2))) { + return 16; + } + else if(y==(map_.getX()-((size_/2)+1))) { + return 10; + } + else return 4; + break; + case 5: + if((y==(map_.getY()-(size_/2)))&&(x!=(size_/2))) { + return 11; + } + else if((y==(map_.getY()-(size_/2)))&&(x==(size_/2))) { + return 17; + } + else if((y!=(map_.getY()-(size_/2)))&&(x==(size_/2))) { + return 10; + } + else return 5; + break; + case 6: + if(x==(size_/2)) { + return 18; + } + else if(x==((size_/2)+1)) { + return 11; + } + else { + return 6; + } + break; + case 7: + if((y==(size_/2))&&(x!=(size_/2))) { + return 11; + } + else if((y==(size_/2))&&(x==(size_/2))) { + return 19; + } + else if((y!=(size_/2))&&(x==(size_/2))) { + return 8; + } + else return 7; + break; + } +} + +Point Player::getPosition() const { + return origin_; +} + +void Player::movePlayer(int dir) { + direction_=checkDirection(dir); + switch(direction_) { + case 0: + origin_.setY(origin_.getY()-2); + break; + case 1: + origin_.setX(origin_.getX()+1); + origin_.setY(origin_.getY()-1); + break; + case 2: + origin_.setX(origin_.getX()+2); + break; + case 3: + origin_.setX(origin_.getX()+1); + origin_.setY(origin_.getY()+1); + break; + case 4: + origin_.setY(origin_.getY()+2); + break; + case 5: + origin_.setX(origin_.getX()-1); + origin_.setY(origin_.getY()+1); + break; + case 6: + origin_.setX(origin_.getX()-2); + break; + case 7: + origin_.setX(origin_.getX()-1); + origin_.setY(origin_.getY()-1); + break; + case 8: + direction_=0; + origin_.setY(origin_.getY()-1); + break; + case 9: + direction_=2; + origin_.setX(origin_.getX()+1); + break; + case 10: + direction_=4; + origin_.setY(origin_.getY()+1); + break; + case 11: + direction_=6; + origin_.setX(origin_.getX()-1); + break; + case 12: + direction_=0; + break; + case 13: + direction_=1; + break; + case 14: + direction_=2; + break; + case 15: + direction_=3; + break; + case 16: + direction_=4; + break; + case 17: + direction_=5; + break; + case 18: + direction_=6; + break; + case 19: + direction_=7; + break; + } +} + +int Player::getDirection() const { + return direction_; +} + +void Player::init(Point origin, int size, int dir, Point map) { + origin_.setX(origin.getX()); + origin_.setY(origin.getY()); + size_=size; + direction_=dir; + map_.setX(map.getX()); + map_.setY(map.getY()); +} diff --git a/source/point.cpp b/source/point.cpp new file mode 100644 index 0000000..a11ef26 --- /dev/null +++ b/source/point.cpp @@ -0,0 +1,14 @@ +#include "point.h" + +int Point::getY() const { + return y_; +} +int Point::getX() const { + return x_; +} +void Point::setX(int x) { + x_=x; +} +void Point::setY(int y) { + y_=y; +} diff --git a/source/point.h b/source/point.h new file mode 100644 index 0000000..8af4d43 --- /dev/null +++ b/source/point.h @@ -0,0 +1,20 @@ +#ifndef POINT_H_ +#define POINT_H_ + +class Point { + int x_; + int y_; + +public: + Point(int x=0, int y=0) + : x_(x), + y_(y) + {} + + int getY() const; + int getX() const; + void setX(int x); + void setY(int y); +}; + +#endif diff --git a/source/projectiles.h b/source/projectiles.h new file mode 100644 index 0000000..c96aaca --- /dev/null +++ b/source/projectiles.h @@ -0,0 +1,37 @@ +#ifndef PROJECTILES_H_ +#define PROJECTILES_H_ +#include "point.h" +#include "entities.h" + +class Bullet { + int direction_; + Point origin_; + Point map_; + bool hit_; + int damage_; + int size_; + +public: + Bullet() + : direction_(0), + origin_(0,0), + map_(640,480), + hit_(false), + damage_(0), + size_(0) + {} + + Bullet(Player p, int dmg = 0, Point map, int size) + : direction_(p.getDirection()), + origin_(p.getPosition()), + map_(map), + hit_(false), + damage_(dmg), + size_(size) + {} + + bool hitScan(); + Point getPosition() const; + int getSize() const; +}; +#endif