User manual
15
tion, nämlich drawValue(), die an der angegebenen Position das aktuelle
Level bzw. den Punktestand zeichnet. Das aktuelle Level ändert sich im-
mer dann, wenn der Ball erfolgreich abgewehrt wurde. Dies wird über die
Funktion moveBall() überprüft.
00
1
void moveBall()
{
002
if (ballX == 1 || ballX == 127)
{
003
setu
p
();
004
}
00
5
if (ballY == 1 || ballY == 63)
{
00
6
collisionY = collisionY * -1;
007
}
00
8
if (abs(ballX - player1X) <=2 && abs(ballY - player1Y) < 9)
{
009
collisionX = collisionX * -1
;
0
1
0
level++;
0
11
}
0
1
2
if (abs(ballX -
p
layer2X) <=2 && abs(ballY -
p
layer2Y) < 9)
{
0
1
3
collisionX = collisionX * -1
;
01
4
level++
;
01
5
}
0
1
6
ballX = ballX + collisionX
;
0
1
7
ballY = ballY + collisionY
;
01
8
}
Wie Sie sehen, gibt es verschiedene Abfragen über die Position des Balls.
Befi ndet er sich an der x-Position bei 1 oder 127, bedeutet dies, dass er
nicht erfolgreich abgewehrt wurde und am linken oder rechten Rand aus
dem Spielfeld gefl ogen ist. In diesem Fall wird die Setup-Routine aufge-
rufen, und das Spiel kann von vorne beginnen. Befi ndet sich der Ball an
der y-Position 1 oder 63, prallt der Ball an der oberen bzw. unteren Kante
ab, indem die collisionY-Variable negiert und somit die Richtung der Ball-
bewegung umgekehrt wird. In den beiden Abfragen
i
f (abs(ballX -
p
layer1X) <=2 && abs(ballY -
p
layer1Y) < 9)
wird festgestellt, ob der Ball an einem Schläger refl ektiert wird, indem
überprüft wird, ob der Ball nah genug am Schläger ist und ob er auf den
Schlägers trifft. Ist dies der Fall, wird die Bewegungsvariable in x-Rich-
tung umgekehrt und das Level erhöht.
00
1
void movePlayer()
{
002
if (
p
layer1Y < 7)
{
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1510223-0 Spieleprogrammierung mit dem Arduino_03.indd 15 14.09.2016 08:37:5714.09.2016 08:37:57