WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(九) 2D游戏角色在地图上的移动

 2009-06-22 08:32:43 来源:WEB开发网   
核心提示: 图片看不清楚?请点击这里查看原图(大图), 从上图可以看到,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(九) 2D游戏角色在地图上的移动(2),每个绿色格子代表一个20*20像素的障碍物,只能说勉强达到描绘障碍物的效果吧,从而又验证了我们上一节所讲

图片看不清楚?请点击这里查看原图(大图)。

从上图可以看到,每个绿色格子代表一个20*20像素的障碍物,只能说勉强达到描绘障碍物的效果吧。从而又验证了我们上一节所讲到的GridSize越小,定位将越精确,难道不是至理名言吗!

有了这个思路,接下来我用了3个循环算法实现了左部分的障碍物设定:

            //构建障碍物
            for (int y = 12; y <= 27; y++) {
                for (int x = 0; x <= 7; x++) {
                    //障碍物在矩阵中用0表示
                    Matrix[x, y] = 0;
                    rect = new Rectangle();
                    rect.Fill = new SolidColorBrush(Colors.GreenYellow);
                    rect.Opacity = 0.3;
                    rect.Stroke = new SolidColorBrush(Colors.Gray);
                    rect.Width = GridSize;
                    rect.Height = GridSize;
                    Carrier.Children.Add(rect);
                    Canvas.SetLeft(rect, x * GridSize);
                    Canvas.SetTop(rect, y * GridSize);
                }
            }
            int move = 0;
            for (int x = 8; x <= 15; x++) {
                for (int y = 12; y <= 18; y++) {
                    Matrix[x, y - move] = 0;
                    rect = new Rectangle();
                    rect.Fill = new SolidColorBrush(Colors.GreenYellow);
                    rect.Opacity = 0.3;
                    rect.Stroke = new SolidColorBrush(Colors.Gray);
                    rect.Width = GridSize;
                    rect.Height = GridSize;
                    Carrier.Children.Add(rect);
                    Canvas.SetLeft(rect, x * GridSize);
                    Canvas.SetTop(rect, (y - move) * GridSize);
                }
                move = x % 2 == 0 ? move + 1 : move;
            }
            int start_y = 4;
            int end_y = 10;
            for (int x = 16; x <= 23; x++) {
                for (int y = start_y; y <= end_y; y++) {
                    Matrix[x, y + move] = 0;
                    rect = new Rectangle();
                    rect.Fill = new SolidColorBrush(Colors.GreenYellow);
                    rect.Opacity = 0.3;
                    rect.Stroke = new SolidColorBrush(Colors.Gray);
                    rect.Width = GridSize;
                    rect.Height = GridSize;
                    Carrier.Children.Add(rect);
                    Canvas.SetLeft(rect, x * GridSize);
                    Canvas.SetTop(rect, (y + move) * GridSize);
                }
                start_y = x % 3 == 0 ? start_y + 1 : start_y;
                end_y = x % 3 == 0 ? end_y - 1 : end_y;
            }

上一页  1 2 3 4  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接