From 9f136ffd92789ad8ce069b8af8ad50fa0eed0834 Mon Sep 17 00:00:00 2001 From: PolishPigeon Date: Fri, 21 Jan 2022 06:11:39 +0100 Subject: [PATCH] feat/bug: Fixed the initial values of mIsMoving* variables so that they are bool, added player movement --- SFMLEngine/makingAGameTick/app | Bin 24656 -> 25360 bytes SFMLEngine/makingAGameTick/basic.cpp | 10 ++++++++++ SFMLEngine/makingAGameTick/constants.hpp | 4 ++-- SFMLEngine/makingAGameTick/game.cpp | 15 ++++++++------- SFMLEngine/makingAGameTick/game.o | Bin 18280 -> 19840 bytes 5 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 SFMLEngine/makingAGameTick/basic.cpp diff --git a/SFMLEngine/makingAGameTick/app b/SFMLEngine/makingAGameTick/app index 47706bafe75e1fd889603b606cba8b3cdee04a7a..66a48a2ce48d53bf27f239008d3c8fec0fe6b69a 100755 GIT binary patch literal 25360 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 + +void print(const std::string s) +{ + std::cout << s << std::endl; +} + +#endif // BASIC_CPP diff --git a/SFMLEngine/makingAGameTick/constants.hpp b/SFMLEngine/makingAGameTick/constants.hpp index 2fd510f..e11d9ba 100644 --- a/SFMLEngine/makingAGameTick/constants.hpp +++ b/SFMLEngine/makingAGameTick/constants.hpp @@ -11,9 +11,9 @@ const sf::Color PLAYER_COLOR = sf::Color::Cyan; // Movement constants // const sf::Vector2f INITIAL_MOVEMENT (0.f, 0.f); -const float MOVING_UP_SPEED = -1; +const float MOVING_UP_SPEED = -0.01; const float MOVING_DOWN_SPEED = -MOVING_UP_SPEED; -const float MOVING_RIGHT_SPEED = 1; +const float MOVING_RIGHT_SPEED = 0.01; const float MOVING_LEFT_SPEED = -MOVING_RIGHT_SPEED; #endif // CONSTANTS_HPP diff --git a/SFMLEngine/makingAGameTick/game.cpp b/SFMLEngine/makingAGameTick/game.cpp index 58c97aa..c5f5111 100644 --- a/SFMLEngine/makingAGameTick/game.cpp +++ b/SFMLEngine/makingAGameTick/game.cpp @@ -1,6 +1,7 @@ #include #include #include "constants.hpp" +#include "basic.cpp" class Game { @@ -13,7 +14,10 @@ class Game void update(); // code that updates the game void render(); // code that renders the game void handlePlayerInput(sf::Keyboard::Key key, bool isPressed); - bool mIsMovingUp, mIsMovingRight, mIsMovingLeft, mIsMovingDown; + bool mIsMovingUp = false; + bool mIsMovingRight = false; + bool mIsMovingLeft = false; + bool mIsMovingDown = false; private: sf::RenderWindow mWindow; sf::CircleShape mPlayer; @@ -24,10 +28,6 @@ Game::Game() : mWindow(sf::VideoMode(640, 480), "SFML Application"), mPlayer() mPlayer.setRadius(PLAYER_RADIUS); mPlayer.setPosition(PLAYER_X_POSITION, PLAYER_Y_POSITION); mPlayer.setFillColor(PLAYER_COLOR); - bool mIsMovingUp = false; - bool mIsMovingRight = false; - bool mIsMovingLeft = false; - bool mIsMovingDown = false; } void Game::run() @@ -63,7 +63,7 @@ void Game::processEvents() sf::Event event; while (mWindow.pollEvent(event)) // mainLoop/gameLoop { - // each time while loop iterates it means that wwe got a new event registered by the window. + // each time while loop iterates it means that we got a new event registered by the window. switch (event.type) { case sf::Event::KeyPressed: @@ -81,11 +81,12 @@ void Game::processEvents() void Game::update() { + sf::Vector2f movement (0.f, 0.f); movement.y += mIsMovingUp * MOVING_UP_SPEED + mIsMovingDown * MOVING_DOWN_SPEED; movement.x += mIsMovingLeft * MOVING_LEFT_SPEED + mIsMovingRight * MOVING_RIGHT_SPEED; - mPlayer.move(movement); + } void Game::render() diff --git a/SFMLEngine/makingAGameTick/game.o b/SFMLEngine/makingAGameTick/game.o index ee9dfc6a9ea19fc25cdbff94e0150c5dea313f5d..00e8fab2d99967de754485fa2e1971344d6bb37c 100644 GIT binary patch literal 19840 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 QJmi~c;ad;wlgTOn|HBV-LjV8( delta 4363 zcmZ`*ZBSI#89wLk;sP!#9}Aad49kMC%L2mkA&9UnA^{Ps7;PDXsZcd^)W)=GoK^;i zX{U@D>AX6_5aY+xT7TeFONOK~TEV6nI-Mrkrc=T=t#-@|jW9(qt~PYu4r;BYE#+{{?H`To zgLBp#{ztfJHF+OQTGzA$Eso)l9gcsE%sPA{b%$#v9m6cd{0W&GvyRs5vySG`Sx0=$ z!&ygM<4njCqz_W=DOa`enaXtj?&~+IAu$YW32lcUX}8?1|QhcVaj&Q)x#rtEbJurO&RPlkGN`K zr;LWv7B(<+JaUT#ZpT^S{^G;1DK-V(wR=5t*rt`btci{Lu~8kfsP2%(a*x|>k&G=t z`W(#L-Bllu1Itbd%4xKRU3ZDc@+pO|enaT#NLisXCX;*NY>eBOVQ@WW8Q%l{#G5`2 z>tjT9(CSF>9JFA|SaK++fqh$yOH2>jiE}4kk*;WRVWElN zut0rWTGGr{NYazlWh85$5AEV3aCOmippACIghbAbb}E$lqlO_ z6noq+;t3H4Mf{J5k#ITL-zWFS1=&s+^7wLsX~y%75O12igQDvQ z@)^t{U5pjU+RudNhKP4Xv_o5p$$cVrP+Z%+h;r4_V60f?9(@KsfIN-46z4?ctq`!& zFq&d^4U4P{$+2*|j|IPM0lyfxR0jT3QR8?~@JkiV)UG%xcyE}mkhPnF_jQE@hpc@e zgoPa&xMMQH%`#Rh{dI!R4Y#vV){Y3?7v@#_mjs_DdF($)R__ZTKb)ZExH5`5R!@l5 zGE@!;z98&ZwPC@lr@~m8bo@i`C1JmCq~mP@{?TNxm0>|8`z(31>J*iHt`2n&s^9xpZF<Q$hX6-JbR3KyscojW%yr_6WfQK%|UWHu02`4e*CwX>W4O{%CpN^<%Jklx-T;x~BF`a(_ ze(uk!Q2(!_h(j(SWvFis@!b@#5KosXy>Q2GW?hiCN>vApv8VWYXez*uuxubwzP2h$ z9Vc=$-l;l5Y|wbhQJ?tD8lQ-~N9OF+c=g#s$zaEU7n=TeHQAIY1Xneln)6F-9Q=jm z^N%!DoovaFA}2+V3cCyO(G=SK%^Is7I=S04p88PV&u$nkH2E30UuedRXdXAr7n-hg zN>xRB;XROBWI}6^JtnBJnXm=fBSrSEZjGfz)p`Al#{d5a!q~`Dy!v#0qVZo-<3N1) z6t6y|k+i=VTO8gs53ECF#lMQ+SukBz2~%Y`(7ehCIjeG@A8{ArIN~5;O1TrJ5StNm z%26+Oa(p|>D`6MjrBpb18{}40@^;vbaT{F3xE-c3z5=;{N*JV^fD;d(7x6Bq0&^;{ z2gGK?LBxKNT~)YSo_+y*TOd$M2v;d?fi zKsb+Db-*~21uY04+F$_Teau66fZCdXF^L*NLL>|zFds}HY>0%^nt-u25?T=QeK3H~ z9|;pg`XKd%fbltM2rLQ)5H4UILPiv%)&`6bAG9EBLJeU@6igtDV_sdrcryxG5N5DV zgkPhE5Sb0BYXin#QA79~^AOUrVFDpP8dB>6Mn^WZAnb{T0fc_k5DuWWE?`_j4WSz~ zg!9p2F=y6!jSHwZ1fs^|@hlzM8cL$Z