Hallo,
ich bin neu bei der C++ programmierung, habe mir aber schon mal ein paar kleine Games mit SFML erstellt. Ich arbeite gerade an einem Zeitvertreiben-Spiel. D.H.: Man hat im 600 x 600 großen Fenster einen Blauen Hintergrund und einen Roten Zeilpunkt (Name: Player, Art: CircleShape). Dann Hab ich noch ensprechent ein Schussloch (Name: Loch, Art: CircleShape) deklariert:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
CircleShape Player(5);
CircleShape Loch(Player);
Player.setFillColor(Color(200,0,0));
Player.setOutlineThickness(2);
Player.setOutlineColor(Color::Black);
Player.setOrigin(2.5,2.5);
Player.setPosition(300,300);
Loch.setFillColor(Color(227,255,255));
Loch.setOutlineThickness(5);
Loch.setOutlineColor(Color(100,100,100));
Loch.setOrigin(2.5,2.5);
|
Man kann "Player" auch bewegen:
|
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
|
float px = Player.getPosition().x;
float py = Player.getPosition().y;
if(Keyboard::isKeyPressed(Keyboard::Left))
{
if( px <= -10)
{
px = Window.getSize().x + 10;
}
else
{
px = px - 0.1;
}
}
else if(Keyboard::isKeyPressed(Keyboard::Right))
{
if(px >= Window.getSize().x + 10)
{
px = -10;
}
else
{
px = px + 0.1;
}
}
else if(Keyboard::isKeyPressed(Keyboard::Up))
{
if(py <= -10)
{
py = Window.getSize().y + 10;
}
else
{
py = py - 0.1;
}
}
else if(Keyboard::isKeyPressed(Keyboard::Down))
{
if(py >= Window.getSize().y +10)
{
py = -10;
}
else
{
py = py + 0.1;
}
}
Player.SetPosition(px,py);
|
Also:
Wie mache ich es, dass wenn ich SPACE drücke, ein NEUES Loch erzeugt wird und an die Koordinate von "Player" gesetzt wird. Im Prinzip so, als könnte man dann Per SPACEBAR immer neue Schusslöcher erzeugen. Den Anfang hab ich Schon:
|
C-/C++-Quelltext
|
1
2
3
4
|
if(Keyboard::isKeyPressed(Keyboard::Space))
{
Loch.setPosition(px,py);
}
|
Wär echt nett wenn mir da jemand helfen könnt.
PS: Warscheinlich ist mein Code ranzig --> Bin aber ja noch Anfänger.