Je tente de créer un jeu Pong en C# avec Visual C# Express 2010. Pour la plupart, j'ai l'idée principale du jeu fini, mais j'ai un problème avec la balle bouge. J'ai créé une boucle for, comme ceci:Alors que la boucle ne fonctionne pas comme prévu dans le jeu Pong
public void ballSet()
{
if (!Values.isPaused)
{
while(true)
{
if (Values.totalTime.Elapsed.Seconds > 1)
{
Values.totalTime.Restart();
ballMove(50, 50);
}
}
}
}
public void ballMove(int factorX, int factorY)
{
Values.ballLastX = ball.Location.X;
Values.ballLastY = ball.Location.Y;
this.ball.Location = new Point(this.ball.Location.X + factorX, this.ball.Location.Y + factorY);
}
Le "ballMove (50, 50);" est juste à des fins de test pour le moment. Le problème est que lorsque ballSet() est appelé, le formulaire semble se fermer avec un code de 0, ce qui signifie qu'il n'y a pas eu d'erreur. J'appelle ballSet() ici.
public Pong()
{
InitializeComponent();
ballSet();
Values.totalTime.Start();
}
Je l'ai déjà vérifié et le programme ne fonctionne un peu lorsque je retire la boucle while dans ballSet(), ainsi que l'instruction if vérification du chronomètre (Values.totalTime est un chronomètre). Évidemment, puisque la boucle while est mise en commentaire, ballMove() n'est appelée qu'une seule fois, et la balle se déplace une fois et s'arrête.
Est-ce que quelqu'un sait comment résoudre ce problème? Je veux que la balle bouge constamment, tout en ayant la possibilité d'effectuer d'autres tâches telles que déplacer la chauve-souris dans Pong.
C'est la sortie que je peux vous donner lorsque vous utilisez Pong.
On dirait que vous démarrez la minuterie après avoir appelé ballset. Si vous ne le lancez pas dans la fonction initialize, elle peut être nulle. –
en démarrant la minuterie avant d'appeler ballSet() ne change rien. – LeChosenOne