winforms 我的游戏在Windows窗体应用程序C#中不断崩溃[已关闭]

oyt4ldly  于 2023-01-02  发布在  Windows
关注(0)|答案(1)|浏览(188)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question
我做了一个简单的游戏在C#使用Windows窗体应用程序的大学作业。问题是,游戏崩溃后,第一组随机生成的障碍。我似乎不能确定什么问题在这里。这里是主要的游戏循环,所有的障碍都是随机生成的,并使精灵移动。

private void MainGameEventTImer(object sender, EventArgs e)
{
    // CONTROLS MAJORITY OF THE PLAYERS MOVEMENT
    if(jump == true && mvForward == true)
    {
        player.Left += 10;
        player.Top -= force;   
        force -= 1;
    }
    else if(jump == true && mvForward == false)
    {
        player.Top -= force;
        force -= 1;
    }
    if(player.Top > 514)
    {
        Gravity = 20;
        player.Top = 515;
        jump = false;
    }

    //RANDOM SPAWNING OBSTACLES

    foreach (Control x in this.Controls)
    {
        if (x is PictureBox && (string)x.Tag == "obstacle")
        {
            x.Left -= speed;
            if (x.Left < -100)
            {
                while (hut.Bounds.IntersectsWith(rock.Bounds) == false);
                {
                    x.Left = ClientSize.Width + rand.Next(200, 500) + (x.Width * 5);
                }
            }
            if (player.Bounds.IntersectsWith(x.Bounds))
            {
                gameOver = true;
                gameTimer.Stop();
                pbGameOver.Visible = true;
                btnQuit.Visible = true;
                btnRestart.Visible = true;
            }
            if(player.Bounds.IntersectsWith(pbLeftWall.Bounds))
            {
                player.Left = 112;
            }
        }
    }
}

我试着改变一些变量,并试图停止所有的后台进程,因为我认为他们可能会干扰游戏(这是没有意义的,因为我有一个i5 11th与8GB的内存)。除此之外,我一直无法确定问题,所以我不知道如何解决它

83qze16e

83qze16e1#

当你说它崩溃的时候-崩溃的性质是什么?它会挂一段时间直到被武力杀死吗?
我猜这就是您的问题的原因:

while (hut.Bounds.IntersectsWith(rock.Bounds) == false);
{
    x.Left = ClientSize.Width + rand.Next(200, 500) + (x.Width * 5);
}

使用while循环时要小心,除非你绝对确定无论在while循环中发生了什么,都会导致while循环在合理的时间内退出。
由于你似乎没有改变任何关于小屋或岩石在循环中,我会考虑修改你的逻辑那里。

相关问题