-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlayer.h
72 lines (67 loc) · 2.39 KB
/
Player.h
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
#pragma once
#include "Entity.h"
#include <SFML/Graphics.hpp> //á³áë³îòåêà äëÿ ðîáîòè ç 2D ãðàô³êîþ
using namespace sf; //âèêîðèñòîâóºìî ïðñò³ð ³ìåí sf äëÿ ðîáîòè ç á³áë³îòåêàìè SFML
//ñòâîðþºìà êëàñ Player âèêîðèñòîâóþ÷è ïóáë³÷í³ çì³íí³ êëàñó Entity
class Player :public Entity {
private: float x, y;
public:
float dx,speed;
int dir, playerScore;
String File, name;
bool life;
Player(String F, String Name, float X, float Y, float W, float H) :Entity(F, X, Y, W, H)
{
dx = 0; dy = 0; speed = 0; dir = 0, playerScore = 0;
File = F;
name = Name;
life = true;
w = W; h = H;
image.loadFromFile("images/" + File);
image.createMaskFromColor(Color(255, 255, 255));
texture.loadFromImage(image);
sprite.setTexture(texture);
x = X; y = Y;
}
//îæèâëÿºìî îá'ºêò p êëàñó Player çà äîïîìîãîþ ÷àñó sfml, ïåðåäàþ÷è ÷àñ ÿê ïàðàìåòð ôóíêö³¿ update. çàâäÿêè öüîìó ïåðñîíàæ ìîæå ðóõàòèñÿ
void update(float time)
{
switch (dir)
{
case 0: dx = speed; dy = 0; break; //ïî x çàäàºìî ïîçèòèâíó øâèäê³ñòü, ïî y çàíóëÿºì. îòðèìóºìî, ùî ìàøèíêà éäå ò³ëüêè âïðàâî
case 1: dx = -speed; dy = 0; break; //ïî x çàäàºìî íåãàòèâíó øâèäê³ñòü, ïî y çàíóëÿºì. îòðèìóºìî, ùî ìàøèíêà éäå ò³ëüêè âë³âî
case 2: dx = 0; dy = speed; break; //ïî x çàäàºìî íóëåâå çíà÷åíèå, ïî y ïîçèòèâíó. ïîòðèìóºìî, ùî ìàøèíêà éäå ò³ëüêè âíèç
case 3: dx = 0; dy = -speed; break; //ïî x çàäàºìî íóëåâå çíà÷åíèå, ïî y íåãàòèâíó. îòðèìóºìî, ùî ìàøèíêà éäå ò³ëüêè ââåðõ
}
x += dx * time; // ïðèñêîðåííÿ íà ÷àñ îòðèìóºìî çì³ùåííÿ êîîðäèíàò ³ ÿê íàñë³äîê ðóõ
y += dy * time; //àíàëîã³÷íî
speed = 0;//çàíóëÿþò øâèäê³ñòü, ùîá ìàøèíêà çóïèíèëàñÿ
sprite.setPosition(x, y); //âèâîäèìî ñïðàéò â ïîçèö³þ x y, ïî öåíòðó. íåñê³í÷åííî âèâîäèìî â ö³é ôóíêö³¿, ³íàêøå á íàø ñïðàéò ñòîÿâ áè íà ì³ñö³.
interactionWithMap();//ïåðåâ³ðêà íà âèõ³ä çà ìåæ³ êàðòè
}
void interactionWithMap()
{
for (int i = y / 32; i < (y + h) / 32; i++)
for (int j = x / 32; j < (x + w) / 32; j++)
{
//ÿêùî ìàøèíêà âèõîäèòü çà ìåæ³, òî âîíà ïîâåðòàºòüñÿ íàçàä
if (x > 275)
x = 275;
if (x < 32)
x = 32;
if (y < 0)
y = 0;
if (y > 510)
y = 510;
}
}
FloatRect getRect() {
return FloatRect(x, y, w, h);
}
float get_player_coordinate_x() {
return x;
}
float get_player_coordinate_y() {
return y;
}
};