-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGameState.cpp
More file actions
executable file
·121 lines (105 loc) · 2.35 KB
/
Copy pathGameState.cpp
File metadata and controls
executable file
·121 lines (105 loc) · 2.35 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <SFML\Graphics.hpp>
#include "GameState.h"
#include "StateMgr.h"
#include "Entity.h"
#include "MapMgr.h"
#include "Res.h"
#include <iostream>
using namespace std;
int currentLevel = 1;
sf::Texture sprites = loadTexture("TriangleCharacter.png");
sf::IntRect sourceSprite(0, 0, 32, 32);
sf::Sprite currentSprite(sprites, sourceSprite);
sf::Texture screen = loadTexture("GameOver.png");
sf::Sprite overScreen(screen);
sf::Texture completeScreen = loadTexture("Thanks.png");
sf::Sprite gameFinished(completeScreen);
Entity player = Entity::Entity(currentSprite, 0, 388, 5, 5.5);
bool wPressed = false;
bool levelCompleted = false;
bool fail = false;
bool gStart = false;
void initLevel()
{
resetCounter();
loadMap(("Level" + std::to_string(currentLevel) + ".txt").c_str());
}
void updateGameState(sf::RenderWindow &window)
{
window.clear();
if (player.getY() >= 448 - 32)
{
gameOver(window);
gStart = false;
}
else
{
if (!gStart)
{
player.setX(50);
player.setY(100);
gStart = true;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
player.moveRight();
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
player.moveLeft();
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && !wPressed)
{
player.jump();
wPressed = true;
}
if (wPressed)
player.jump();
if (testDown(player.getX(), player.getY()))
player.fall();
else
{
player.resetJumpStart();
wPressed = false;
}
if (player.getX() >= getFinishX() - 16 && player.getX() <= getFinishX() + 32 && player.getY() >= getFinishY() - 32 && player.getY() <= getFinishY())
{
levelCompleted = true;
}
player.drawEntity(window);
drawMap(window);
if (levelCompleted)
{
newLevel(window);
if(currentLevel <= 15)
levelCompleted = false;
}
}
}
void newLevel(sf::RenderWindow &window)
{
if (currentLevel == 16)
gameBeat(window);
else
{
player.setX(10);
player.setY(340);
window.clear();
currentLevel++;
initLevel();
}
}
void gameOver(sf::RenderWindow &window)
{
gStart = false;
fail = true;
currentLevel = 1;
window.clear();
window.draw(overScreen);
}
void gameFailed(bool failed)
{
fail = failed;
}
void gameBeat(sf::RenderWindow &window)
{
player.setX(400);
window.clear();
window.draw(gameFinished);
}