Ich hab mit SFML angefangen und hab versucht ein einfaches Viereck zu zeichnen und dieses dann zu steuern. Nur irgendwie mag das Ding sich einfach nicht bewegen :-)
Hoffe ihr könnt mir helfen.
main.cpp
|
C-/C++-Quelltext
|
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
|
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <string>
#include <sstream>
#include "cPlayer.hpp"
int main()
{
bool Running = true;
sf::RenderWindow App(sf::VideoMode(800,600,32),"Hello World");
sf::Event ev;
cPlayer Player;
App.SetFramerateLimit(60);
while(Running)
{
while(App.GetEvent(ev))
{
switch(ev.Type)
{
case sf::Event::Closed:
Running = false;
break;
case sf::Event::KeyPressed:
{
switch(ev.Key.Code)
{
case sf::Key::Escape:
Running = false;
break;
case sf::Key::Up:
Player.mDUP = true;
break;
case sf::Key::Down:
Player.mDUP = true;
break;
case sf::Key::Left:
Player.mDUP = true;
break;
case sf::Key::Right:
Player.mDUP = true;
break;
}
}
case sf::Event::KeyReleased:
{
switch(ev.Key.Code)
{
case sf::Key::Up:
Player.mDUP = false;
break;
case sf::Key::Down:
Player.mDUP = false;
break;
case sf::Key::Left:
Player.mDUP = false;
break;
case sf::Key::Right:
Player.mDUP = false;
break;
}
}
}
}
//Logik
Player.Move();
//Render
App.Clear();
App.Draw(Player.mRect);
App.Display();
}
App.Close();
return EXIT_SUCCESS;
}
|
cPlayer.hpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <SFML/Graphics.hpp>
#ifndef _CPLAYER_HPP_
#define _CPLAYER_HPP_
class cPlayer
{
public:
float mXPos,mYPos;
float mW,mH;
float mVelocity;
bool mDUP,mDDOWN,mDLEFT,mDRIGHT;
sf::Shape mRect;
cPlayer();
void Move();
};
#endif
|
cPlayer.cpp
|
C-/C++-Quelltext
|
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
|
#include "cPlayer.hpp"
#include <SFML/Graphics.hpp>
cPlayer::cPlayer()
{
this->mXPos = 10;
this->mYPos = 10;
this->mW = 10;
this->mH = 10;
this->mVelocity = 2;
mRect = sf::Shape::Rectangle(
this->mXPos,
this->mYPos,
this->mXPos+this->mW,
this->mYPos+this->mH,
sf::Color(255,255,255)
);
mDUP = false;
mDDOWN = false;
mDLEFT = false;
mDRIGHT = false;
}
void cPlayer::Move()
{
if(this->mDUP)
{
this->mYPos+=this->mVelocity;
this->mRect.SetY(this->mYPos);
}
else if(this->mDDOWN)
{
this->mYPos-=this->mVelocity;
this->mRect.SetY(this->mYPos);
}
if(this->mDLEFT)
{
this->mXPos+=this->mVelocity;
this->mRect.SetX(this->mXPos);
}
else if(this->mDRIGHT)
{
this->mXPos-=this->mVelocity;
this->mRect.SetX(this->mXPos);
}
printf("X: %f - Y: %f\n",this->mXPos,this->mYPos);
}
|
gruß michi