Silverlight C# 遊戲開發:Flyer04讓我們一起來搖擺吧

來源:互聯網
上載者:User

接上回所述,咱們的飛行員已經開始往下飄落了,但是似乎少點什麼,所謂沒有危險那裡來的樂趣,所以要增加一個敵人來搞定為主角造成點難度,本篇作為無聊,只是說了一些廢話,重複了前幾篇的代碼,只是不過稍微做了一些修改,廢話少說,直接:

 我們看到和上次相比,增加了兩個部分,一個是零件堆,一個是血條,首先我們先完成血條的部分,這部分代碼如下:

 

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座標做了位移,用來表示風向發生的變化:

所以,你需要加一個變數,然後按照一段時間變化一次,時間控制仍然用一個定時器來搞定,畢竟麼,就是那麼容易。

好了,具體代碼,不在這裡展示,請參看代碼,點擊這裡下載。

今天就到這裡,本想把碰撞做了,可是時間太晚,下次再見,晚安

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.