无法弄清楚WPF中的Galaga

时间:2016-12-02 00:05:26

标签: c# wpf xaml canvas

对于我在学校的最后一个项目,我必须在WPF中构建Galaga,我使用两个交替可见性的画布,以便在幕后缓冲以隐藏可见的延迟。我有它所以一旦玩家开始游戏就运行这个方法

public void gameRunning()
    {

        while (true)
        {
            ProcessEvents();
            UpdateAllEntities();
            Draw();
            Thread.Sleep(1000 / 30);
        }
    }

处理任何事件,更新我的船位置的实体,坏人位置,任何碰撞等。然后绘制到我的第二个(缓冲区)画布然后睡觉,以便游戏以30fps运行。

当它进入gameRunning()方法时,它会冻结。我没有做过这么复杂的事情,所以我很丢失。以下是我的Draw()调用的两种方法

public void DrawAllEntities()
    {
        if (buffer) {
            Canvas2.Children.Clear();
            Canvas2.Children.Add(theShip.getImage());
        }
        else
        {
            Canvas1.Children.Clear();
            Canvas1.Children.Add(theShip.getImage());
        }
    }

    public void SwapBuffers()
    {
        if (buffer)
        {
            Canvas1.Visibility = Visibility.Visible;
            Canvas2.Visibility = Visibility.Hidden;
        }
        else
        {
            Canvas2.Visibility = Visibility.Visible;
            Canvas1.Visibility = Visibility.Hidden;
        }
    }

我无法使DrawAllEntities()工作,我尝试使用Canvas.setLeft(),setTop(),但它不起作用。任何帮助或建议将非常感谢,谢谢。

0 个答案:

没有答案