日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

初学WPF,做一款小游戏练习一下

發布時間:2025/3/15 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初学WPF,做一款小游戏练习一下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以前做項目的時候有用過Silverlight,最近了解了一下WPF,做了一款簡單的小游戲來練手,希望能和大家多多交流。

想法:最強大腦 牛人多多,對色彩的分辨更是讓人目瞪口呆,于是我就想到做一個小游戲,簡單一點,做網格狀的色塊,中間穿插一塊不同顏色但是又非常相近的顏色塊,點擊該顏色塊即為通關,進入下一關,下一關的色塊數量+1,直到到達一個差不多的關卡后不再+1;

效果如圖

說做就做,新建工程,開始實現,首先準備好一組顏色相近的顏色代碼,百度HTML顏色代碼,隨便選取,越相鄰顏色色差越小。

1 private string[][] colors = new string[][] { 2 new string[2]{"#7B7B7B","#8E8E8E"} , 3 new string[2]{"#FF5151","#ff7575"} , 4 new string[2]{"#ffaad5","#FFC1E0"} , 5 new string[2]{"#DCB5FF","#E6CAFF"} , 6 new string[2]{"#79FF79","#93FF93"} , 7 new string[2]{"#97CBFF","#ACD6FF"} , 8 new string[2]{"#FFFF93","#FFFFAA"} , 9 new string[2]{"#B766AD","#C07AB8"} , 10 new string[2]{"#B7FF4A","#C2FF68"} 11 };

相關代碼

/// <summary>/// 游戲 找色差 實例/// </summary>public partial class MainWindow : Window{private int level = 2; //當前關卡private double cavWidth = 0; //容器寬度、寬高一樣private double btnWidth = 0; //色塊寬高const int maxLevel = 8; //最大關卡//顏色數組private string[][] colors = new string[][] {new string[2]{"#7B7B7B","#8E8E8E"} ,new string[2]{"#FF5151","#ff7575"} ,new string[2]{"#ffaad5","#FFC1E0"} ,new string[2]{"#DCB5FF","#E6CAFF"} ,new string[2]{"#79FF79","#93FF93"} ,new string[2]{"#97CBFF","#ACD6FF"} ,new string[2]{"#FFFF93","#FFFFAA"} ,new string[2]{"#B766AD","#C07AB8"} ,new string[2]{"#B7FF4A","#C2FF68"}};//WPF的定時器使用DispatcherTimer類對象private System.Windows.Threading.DispatcherTimer dTimer = null;private int tmNum = 30;public MainWindow(){InitializeComponent();Load();}private void Load(){if (dTimer != null){dTimer.Stop();}else{//TimerdTimer = new DispatcherTimer();//注:此處 Tick 為 dTimer 對象的事件( 超過計時器間隔時發生)dTimer.Tick += new EventHandler(dTimer_Tick);//設置時間:TimeSpan(時, 分, 秒)dTimer.Interval = new TimeSpan(0, 0, 1);}//啟動 DispatcherTimer對象dTime。dTimer.Start();tmNum = 30;lblTime.Content = string.Format("剩余{0}秒", tmNum);cavWidth = cavContent.Width;btnWidth = cavWidth / level;int otherIndex = GetRandomNum(level * level); //不一樣的那個lblLevel.Content = string.Format("第 {0} 關", level - 1);string[] strs = colors[GetRandomNum(colors.Length)];string colorBtnBg = strs[0];for (int i = 0; i < level; i++){for (int j = 0; j < level; j++){//向容器中添加一個色塊(按鈕)Button btn = new Button(){Margin = new Thickness(btnWidth * i, btnWidth * j, 0, 0),Background = new SolidColorBrush((Color)System.Windows.Media.ColorConverter.ConvertFromString(colorBtnBg)),BorderThickness = new Thickness(1),BorderBrush = Brushes.Black,Width = btnWidth,Height = btnWidth};//隨機生成的色塊編號,顏色換成相近顏色,當點擊該色塊表示找出差異,進入游戲下一關if (otherIndex == i * level + j){btn.Background = new SolidColorBrush((Color)System.Windows.Media.ColorConverter.ConvertFromString(strs[1]));btn.Click += btn_Click;}cavContent.Children.Add(btn);}}}/// <summary>/// 計時/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void dTimer_Tick(object sender, EventArgs e){lblTime.Content = string.Format("剩余{0}秒", tmNum);if (tmNum < 10){lblTime.Foreground = Brushes.Red;}if (tmNum <= 0){dTimer.Stop();MessageBoxResult result = MessageBox.Show("時間到,還未完成游戲,是否繼續?", "Game Over", MessageBoxButton.YesNo);if (result == MessageBoxResult.Yes){level = 2;Load(); //重置游戲}else{this.Close();}}tmNum--;}/// <summary>/// 點擊不同顏色的色塊時觸發/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void btn_Click(object sender, RoutedEventArgs e){cavContent.Children.Clear();//達到最大關卡時數量不在增多,否則每次多一排一列色塊if (level <= maxLevel){level = level + 1;}Load();}/// <summary>/// 取隨機數/// </summary>/// <param name="maxNum">0-最大區間</param>/// <returns></returns>public int GetRandomNum(int maxNum){Random radom = new Random();return radom.Next(maxNum);}}

  

?

轉載于:https://www.cnblogs.com/chmc/p/5135725.html

總結

以上是生活随笔為你收集整理的初学WPF,做一款小游戏练习一下的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。