-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayer.cpp
More file actions
104 lines (99 loc) · 3.2 KB
/
Player.cpp
File metadata and controls
104 lines (99 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "Player.h"
#include "Size.h"
#include "Maze.h"
#include "Position.h"
#include <QPainter>
#include <QKeyEvent>
#include <QPixmap>
int Player::reqDirection = Qt::RightArrow;
int Player::direction = Qt::RightArrow;
Position* Player::pos;
Position* Player::startPosition;
//Position* Player::startPosition;
Player::Player(Maze * maze, QObject *parent) :QObject(parent)
{
pos = new Position();
this->maze = maze;
//set player start position
maze->initPlayerStartPosition(pos);
dx = 0;
dy = 0;
startPosition = new Position();
health = 3;
direction = Qt::RightArrow;
heroSprite = new QPixmap(":/res/resources/pacman.png");
}
void Player::setReqDirection (int direct) {
reqDirection = direct;
}
bool Player::move(int rDirection) {
bool state = false;
switch (rDirection) {
case Qt::Key_Up :
if ( pos->x > 0 &&
maze->checkPosition (pos->x -1,pos->y)) {
pos->x += - 1;
state = true;
}
break;
case Qt::Key_Down :
if ( pos->x < 259 &&
maze->checkPosition (pos->x +1,pos->y)) {
pos->x += 1;
state = true;
}
break;
case Qt::Key_Left :
if (pos->y - 1 == 0 &&
maze->checkPosition (pos->x, pos->y -1)) {
pos->y = 227;
state = true;
} else if ( pos->y > 0 &&
maze->checkPosition (pos->x, pos->y -1)) {
pos->y += - 1;
state = true;
}
break;
case Qt::Key_Right :
if ( pos->y + 1 == 227 &&
maze->checkPosition (pos->x, pos->y +1 )) {
pos->y = 1;
state = true;
} else if ( pos->y < 227 &&
maze->checkPosition (pos->x, pos->y +1 )) {
pos->y += 1;
state = true;
}
break;
}
return state;
}
bool Player::alive() {
return health > 0 ? true : false;
}
const Position * Player::playerPosition () {
return pos;
}
void Player::update () {
if (move(reqDirection) == true)
direction = reqDirection;
else
move(direction);
}
void Player::draw (QPainter *painter) {
painter->setBrush (QBrush(Qt::red, Qt::SolidPattern));
painter->drawRect (pos->y *2 - 15, pos->x * 2 - 15 , 30, 30);
}
void Player::setOnStartPosition() {
pos = startPosition;
}
void Player::initPosition (int x, int y) {
pos->x = x;
pos->y = y;
startPosition = pos;
}
Player::~Player () {
delete heroSprite;
delete pos;
delete startPosition;
}