J'ai pour une tâche scolaire créé un petit jeu, il est divisé en 2 projets différents, un projet avec le formulaire et un avec un fichier DLL contenant le Jeu.C# problème de fermeture de mon petit jeu lorsque l'événement de fermeture de formulaire est déclenché
La boucle de jeu est très simple et ressemble à ceci:
private void GameLoop(Graphics g)
{
int lastTick = Kernel32.GetTickCount();
do
{
if (terminated)
break;
while ((lastTick + 50) > Kernel32.GetTickCount())
Application.DoEvents();
while (gamePaused)
Application.DoEvents();
g.FillRectangle(new SolidBrush(Color.White), 0, 0, 800, 640);
DrawWalls(g);
MoveMonsters();
DrawMonsters(g);
lastTick = Kernel32.GetTickCount();
}
while (true);
gameRunning = false;
}
Il fonctionne comme prévu et redessine le panneau sur la page du formulaire. Sur la page de formulaire, j'ai un bouton pour quitter le jeu en cours, cela se fait simplement par le formulaire principal appelant la commande TerminateGame() de game.dll terminée par true, cela fonctionne aussi comme prévu. Maintenant, mon problème est lorsque l'utilisateur clique sur le bouton de fermeture de formulaire ou appuie sur F4.
Alors j'ai essayé de faire la même chose:
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (game.IsRunning)
game.TerminateGame();
}
Mais je continue à obtenir cette erreur: Une erreur générique est produite dans GDI +. et il pointe vers cette ligne: g.FillRectangle (nouveau SolidBrush (Color.White), 0, 0, 800, 640); Je ne sais pas pourquoi cela fonctionne quand j'appuie sur le bouton qui vient de terminer le jeu et pourquoi il ne fonctionne pas lorsque le formulaire se ferme, c'est le même appel de méthode.
Le formulaire se ferme parfaitement si j'appuie d'abord sur le bouton, puis appuyez sur F4, c'est juste quand je presse juste F4 que je continue à obtenir cela.
Des idées?
+1 pour l'idée du projet, puisqu'il s'agit d'une tâche scolaire;) –