技术开发 频道

开发Silverlight游戏教程:角色地图移动

    有了这个思路,接下来我用了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;

}

 

0
相关文章