Silverlight C# 游戏开发:Flyer04让我们一起来摇摆吧
2010-02-01 18:02
495 查看
接上回所述,咱们的飞行员已经开始往下飘落了,但是似乎少点什么,所谓没有危险那里来的乐趣,所以要增加一个敌人来搞定为主角造成点难度,本篇作为无聊,只是说了一些废话,重复了前几篇的代码,只是不过稍微做了一些修改,废话少说,直接上图:
我们看到和上次相比,增加了两个部分,一个是零件堆,一个是血条,首先我们先完成血条的部分,这部分代码如下:
创建一个ClassFlyerLife类继承StackPanel,用来做头像以及血条的容器,然后分别创建出来血条和头像添加到容器中,可以控制Life的Width来控制血的多少。
OK,下一步,创建飘动的螺丝和螺母,这个部分的动画基本上和主角的没什么太多区别,只是从6行变成了1行,仍然是8帧一行,只需要拆分放到Frames组当中即可,当中的动画也是和主角的一样,通过一个NextFrame以及一个定时器来刷新。
代码部分不做提交,基本上大同小异,可是和飞行员有一个非常不同的地方,那就是螺丝和螺母共享大量的数据以及处理方法,只是图片不同罢了,那么按照伟大的面向对象方法只需要简单继承一下就好啦……不过看起来于此做法非常不值得,还是简单的做吧,在构造函数中增加一个参数,用枚举的方法来区分到底是螺丝钉还是螺丝母,为这问题也是转悠的半天,还是看看代码吧。
所有的Solid应该有一个飞行的控制,那么这个部分和Cloud很接近,但是我们要让游戏“摇摆”起来,所以和云彩也有一点点的不用,即Solid会随风发生变动,做风力的方法也比较简单,只是将X坐标做了偏移,用来表示风向发生的变化:
所以,你需要加一个变量,然后按照一段时间变化一次,时间控制仍然用一个定时器来搞定,毕竟么,就是那么容易。
好了,具体代码,不在这里展示,请参看代码,点击这里下载。
今天就到这里,本想把碰撞做了,可是时间太晚,下次再见,晚安
我们看到和上次相比,增加了两个部分,一个是零件堆,一个是血条,首先我们先完成血条的部分,这部分代码如下:
public class ClassFlyerLife : StackPanel { //用一个StackPanel容器来作为生命条 StackPanel Life = new StackPanel() { VerticalAlignment = VerticalAlignment.Center }; public ClassFlyerLife() { Width = 120; Height = 18; this.Background = new SolidColorBrush(Colors.Orange); Image Face = new Image(); Face.Width = Face.Height = 16; this.Orientation = orientation.Horizontal; Face.VerticalAlignment = VerticalAlignment.Center; Face.Source = new BitmapImage(new Uri(@"Src/face.jpg", UriKind.Relative)); this.Children.Add(Face); Life.Width = 100; Life.Height = 16; Life.Background = new SolidColorBrush(Colors.Red); this.Children.Add(Life); Canvas.SetLeft(this, 10); Canvas.SetTop(this, 10); } }
创建一个ClassFlyerLife类继承StackPanel,用来做头像以及血条的容器,然后分别创建出来血条和头像添加到容器中,可以控制Life的Width来控制血的多少。
OK,下一步,创建飘动的螺丝和螺母,这个部分的动画基本上和主角的没什么太多区别,只是从6行变成了1行,仍然是8帧一行,只需要拆分放到Frames组当中即可,当中的动画也是和主角的一样,通过一个NextFrame以及一个定时器来刷新。
代码部分不做提交,基本上大同小异,可是和飞行员有一个非常不同的地方,那就是螺丝和螺母共享大量的数据以及处理方法,只是图片不同罢了,那么按照伟大的面向对象方法只需要简单继承一下就好啦……不过看起来于此做法非常不值得,还是简单的做吧,在构造函数中增加一个参数,用枚举的方法来区分到底是螺丝钉还是螺丝母,为这问题也是转悠的半天,还是看看代码吧。
/// <summary> /// 螺丝或者螺母的枚举 /// 在ClassSolid构造的时候据此选择螺丝或者螺母的图片 /// </summary> public enum emSolidSort { nut, screw } /// <summary> /// 固体类,也就是飞行员的敌人。。。 /// </summary> public class ClassSolid : Canvas { int _iFrame = 0; Image _image; ImageSource[] SolidFrames = new ImageSource[8]; public ClassSolid(emSolidSort sort) { _image = new Image(); BitmapImage bitmap; if(sort == emSolidSort.nut) bitmap = new BitmapImage(new Uri(@"Src/solidLM.png", UriKind.Relative)); else bitmap = new BitmapImage(new Uri(@"Src/solidLS.png", UriKind.Relative)); bitmap.ImageOpened += new EventHandler<RoutedEventArgs>(bitmap_ImageOpened); _image.Source = bitmap; this.Children.Add(_image); //设定一个循环来控制Solid的动画 DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(TickGameFrameLoop); dispatcherTimer.Interval = TimeSpan.FromMilliseconds(30); //重复间隔 dispatcherTimer.Start(); } }
所有的Solid应该有一个飞行的控制,那么这个部分和Cloud很接近,但是我们要让游戏“摇摆”起来,所以和云彩也有一点点的不用,即Solid会随风发生变动,做风力的方法也比较简单,只是将X坐标做了偏移,用来表示风向发生的变化:
所以,你需要加一个变量,然后按照一段时间变化一次,时间控制仍然用一个定时器来搞定,毕竟么,就是那么容易。
好了,具体代码,不在这里展示,请参看代码,点击这里下载。
今天就到这里,本想把碰撞做了,可是时间太晚,下次再见,晚安
相关文章推荐
- Silverlight C# 游戏开发:Flyer04让我们一起来摇摆吧
- Silverlight C# 游戏开发:Flyer02 从第一行代码写起
- Silverlight C# 游戏开发:Flyer01开发一个有趣的游戏
- Silverlight C# 游戏开发:Flyer02 从第一行代码写起
- Silverlight C# 游戏开发:Flyer05与什么什么进行搏斗
- Silverlight C# 游戏开发:Flyer06小小的改进让游戏更有趣
- Silverlight C# 游戏开发:Flyer03大图裁剪,高效动画的艺术
- Silverlight C# 游戏开发:Flyer11僵尸五子棋
- Silverlight C# 游戏开发:Flyer07做一个有开始的游戏
- Silverlight C# 游戏开发:Flyer01开发一个有趣的游戏
- Silverlight C# 游戏开发:Flyer03大图裁剪,高效动画的艺术
- Silverlight C# 游戏开发:Flyer10完成"寻找"工作
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十九)向Silverlight移植①
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(五十) 终章!新的曙光!
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二)让物体动起来②
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二十八) 经典式属性设计及完美的物理攻击系统
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):目录
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十九) 落雷!治疗!陷阱!连锁闪电!多段群伤!魔法之终极五重奏②
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十六)地图自定义切片与导出
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十九) 落雷!治疗!陷阱!连锁闪电!多段群伤!魔法之终极五重奏②