-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathenemy.cpp
84 lines (73 loc) · 1.41 KB
/
enemy.cpp
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
#include "enemy.h"
Enemy::Enemy(int x1,int y1,int spe,QWidget *widget)
{
enemy_.load("Images/zombie.png");
enemy_r.load("Images/zombie_r.png");
x=x1;
y=y1;
speed=spe;
enemy=new QLabel(widget);
enemy->setPixmap(enemy_);
enemy->setScaledContents(1);
enemy->setFixedSize(100,100);
enemy->show();
}
void Enemy::relMove(int a,int b)
{
rel_x=x-a;
rel_y=y-b;
}
void Enemy::draw()
{
enemy->move(CENTER_X+rel_x,CENTER_Y+rel_y);
}
int Enemy::getY()
{
return y;
}
void Enemy::Raise()
{
enemy->raise();
}
void Enemy::Lower()
{
enemy->lower();
}
void Enemy::chase(Player *p1, Player *p2)
{
int Xp1=p1->getX(),Yp1=p1->getY(),Xp2=p2->getX(),Yp2=p2->getY();
int disP1=(x-Xp1)*(x-Xp1)+(y-Yp1)*(y-Yp1);
int disP2=(x-Xp2)*(x-Xp2)+(y-Yp2)*(y-Yp2);
if(disP1<disP2){
if(x<Xp1){
x+=speed;
enemy->setPixmap(enemy_r);
}
else if(x>Xp1){
x-=speed;
enemy->setPixmap(enemy_);
}
if(y<Yp1){
y+=speed;
}
else if(y>Yp1){
y-=speed;
}
}
else{
if(x<Xp2){
x+=speed;
enemy->setPixmap(enemy_r);
}
else if(x>Xp2){
x-=speed;
enemy->setPixmap(enemy_);
}
if(y<Yp2){
y+=speed;
}
else if(y>Yp2){
y-=speed;
}
}
}