Wie kann ich ein spiel in C++ eine do-while-schleife wiederholen ohne das Fenster zu schließen?

...komplette Frage anzeigen

1 Antwort

Wenn sich die Schleife nciht wiederholt, dann ist die Bedingung falsch. Zeig doch mal deinen code (aber entsprechend formatiere mit den Code-Tags!)

lso es geht um das spiel pong.

das ist die main und darunter die Funktion mit der der ball wieder an den start gesetzt werden soll und man mit der Leertaste (tastencode 32) von neuem starten kann.

int main()

{
pad.altPos = startPosPad;
pad.neuPos = startPosPad;
pad.laenge = 10;
pad.richtung = stopX;
ball.altPos = startPosBall;
ball.neuPos = startPosBall;
ball.richtungX = stopX;
ball.richtungY = stopY;
zeichnePad();
zeichneSpielfeld();
zeichneBall();

do {
Sleep(100);
int taste = tastepruefe();
if (taste == 75) //Links
{
pad.richtung = links;
}
if (taste == 77)//Rechts
{
pad.richtung = rechts;
}
if (taste == 27)//ESC
{
break;
}
if (taste == 32)//Leertaste
{
ball.richtungX = rechts;
ball.richtungY = rauf;
}
zeichneBall();
pruefeBall();
if (pruefeBall() == true)
{
ball.neuPos.X += ball.richtungX;
ball.neuPos.Y += ball.richtungY;
zeichneBall();
}

if (taste == 75 || taste == 77)
{
pruefePad();
if (pruefePad() == true)
{
pad.neuPos.X += pad.richtung;
zeichnePad();
}
}

//INFO...
setzeCursor(status);
if (taste != -1)
{
cout << taste << "|" << pad.altPos.X;
}

} while (true);

return 0;

}

bool pruefeBall()

{
if (ball.altPos.X + ball.richtungX <= startSpielfeld.X)
{
ball.richtungX = rechts;
return false;
}
if (ball.altPos.X + ball.richtungX >= startSpielfeld.X + breiteFeld)
{
ball.richtungX = links;
return false;
}
if (ball.altPos.Y + ball.richtungY <= startSpielfeld.Y)
{
ball.richtungY = runter;
return false;
}
if (ball.altPos.Y + ball.richtungY >= startSpielfeld.Y + hoeheFeld)
{
//hier soll der Ball wieder an die Startposition gesetzt werden.
ball.richtungX = stopX;
ball.richtungY = stopY;

}
if (ball.altPos.Y + ball.richtungY == startPosPad.Y)
{
for (short i = 0; i <= pad.laenge; i++)
{
if (ball.altPos.X+ball.richtungX == pad.altPos.X + i)
{

ball.richtungY=rauf;
return false;
}

}
return true;
}
return true;
}
0
@carina22022

Und wann genau wird die main verlassen? Hat deine IDE einen Debugger integriert?

0
@ByteJunkey

ehm... keine ahnung... bin noch anfänger und das ist ein "Schulprojekt" in Informatik

die so while schleife in der main soll wiederholt werden, wenn der ball eine bestimmte position in Y richtung erreicht hat .


0

Was möchtest Du wissen?