ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:1.13MB ,
资源ID:10196963      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10196963.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C# WPF新手入门之连连看关卡版3关.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C# WPF新手入门之连连看关卡版3关.docx

1、C# WPF新手入门之连连看关卡版3关C# WPF新手入门之连连看关卡版(3关)之前做了个连连看简单版,只一关,可参见我的文库相关文档,这次增加了关卡,总共三关,并且可以选择关卡,播放不同背景音乐,歌名滚动显示。效果如下:第一关,8*8网格,共8种图片,每种图片出现8次,时间5分钟,背景音乐选择1第二关,10*10网格,共10种图片,每种图片出现10次时间3分钟,背景音乐选择2 第三关,12*12网格,共12种图片,每种图片出现12次时间2.5分钟,背景音乐选择31. 界面设计2. 3. 共2个Grid, Grid1用于生产图片;Grid0上有三个label,显示时间,关卡和歌曲名;2个Men

2、u,展开如左所示;由于歌曲名需要滚动显示,此处label3是放在canvas上的 Xaml代码如下: 4. 程序设计首先,在项目路径下需要一些图片: 3关,共3组图片 背景音乐,需要WAV格式:3关,共种背景音乐 较之前简单版,这里增加了歌曲名的循环移动,此处用了简单的方法,原理是在Canvas上加了一个label,然后改变label位置和宽度,当label向左移动的时候宽度也随着减小,看上去label就像在慢慢消失,全部消失后再回到原始位置以此循环。如下定义4个变量:LabelPos = Canvas.GetLeft(Label3);/获取歌曲名当前X轴位置 LabelPos_Orignal

3、 = LabelPos;/原始位置 LableWidth = Label3.Width;/获取歌曲名当前宽度 LabelWidth_Orignal = LableWidth;/原始宽度主循环中执行:/*歌曲名当前宽度和位置设定*/Canvas.SetLeft(Label3, LabelPos); LabelPos = Canvas.GetLeft(Label3); Label3.Width = LableWidth; LableWidth = Label3.Width; /*歌曲名宽度和位置变化*/ LabelPos = LabelPos - 10; LableWidth = LableWid

4、th - 20; if (LabelPos LabelPos = LabelPos_Orignal; LableWidth = LabelWidth_Orignal; ); 以下为完整源代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Win

5、dows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using System.Threading;using System.Media;namespace 连连看 public partial class MainWindow : Window private int count = 0;/图片点击次数 private I

6、mage SelBeforeImg;/选中之前图片 private int GameFlag=1;/游戏开始标志 private int LeftTime = 0;/剩余时间 private int LeftMin;/剩余时间 分钟 private int LeftSec;/剩余时间 秒 private int ImageNo = 0;/图片名数量 private int ClearImg = 0;/消除的图片 private int EndSelect;/游戏结束选择 失败=0/成功=1/手动结束=2/下一关=3 private int Level=1;/关卡数,默认第一关 private

7、int CGridNo = 10;/生成网格数量 private int CImageNo = 10;/生成图片数量 private double LableWidth;/歌曲名宽度 private double LabelWidth_Orignal;/歌曲名原始宽度 private double LabelPos;/歌曲名位置X轴 private double LabelPos_Orignal;/歌曲名原始位置X轴 Thread thread; Image image; SoundPlayer soundPlayer; public MainWindow() InitializeCompon

8、ent(); private void Window_Load(object sender, RoutedEventArgs e)/界面初始化设置 LeftMin = LeftTime / 60; LeftSec = LeftTime % 60; Label1.Content = LeftMin.ToString().PadLeft(2,0) + : + LeftSec.ToString().PadLeft(2,0);/剩余时间显示 End_Btn.IsEnabled = false; SelMenu.Visibility = Visibility.Hidden; LabelPos = Can

9、vas.GetLeft(Label3);/获取歌曲名当前X轴位置 LabelPos_Orignal = LabelPos;/原始位置 LableWidth = Label3.Width;/获取歌曲名当前宽度 LabelWidth_Orignal = LableWidth;/原始宽度 this.KeyDown += MainWindow_KeyDown;/按键事件 private void MainWindow_KeyDown(object sender, KeyEventArgs e)/关卡选择开启 if (Keyboard.Modifiers & ModifierKeys.Control)

10、= ModifierKeys.Control & e.Key = Key.F1) if (!SelMenu.IsVisible) SelMenu.Visibility = Visibility.Visible; else SelMenu.Visibility = Visibility.Hidden; private void StartBtn_Click(object sender, RoutedEventArgs e)/点击按键开始游戏 Start_Game(); private void Start_Game() Start_Btn.IsEnabled = false; End_Btn.I

11、sEnabled = true; switch (Level) case 1: CGridNo = 8; CImageNo = 8; break;/第一关,8*8网格,8种图片 case 2: CGridNo = 10; CImageNo = 10; break;/第二关,10*10网格,10种图片 case 3: CGridNo = 12; CImageNo = 12; break;/第三关,12*12网格,12种图片 default: break; Creat_Grid(CGridNo);/生成网格 Create_Image(CImageNo);/加载图片 Game_Init();/加载初

12、始设置 soundPlayer.Load();/加载背景音乐 soundPlayer.PlayLooping();/循环播放 thread.Start();/线程开始 private void EndBtn_Click(object sender, RoutedEventArgs e)/点击按键结束游戏 EndSelect = 2; GameEnd(); private void TimeStart()/剩余时间开始计时 while (GameFlag=1) LeftMin = LeftTime / 60; LeftSec = LeftTime % 60; Dispatcher.Invoke(

13、new Action() = Label1.Content = LeftMin.ToString().PadLeft(2, 0) + : + LeftSec.ToString().PadLeft(2, 0);/剩余时间显示 Canvas.SetLeft(Label3, LabelPos);/歌曲名左移 LabelPos = Canvas.GetLeft(Label3); Label3.Width = LableWidth; LableWidth = Label3.Width; ); LeftTime-; LabelPos = LabelPos - 10; LableWidth = LableW

14、idth - 20; if (LabelPos LabelPos = LabelPos_Orignal; LableWidth = LabelWidth_Orignal; ); Thread.Sleep(1000); if (LeftTime0)/时间到0,游戏结束 EndSelect = 0; GameEnd(); private void Image_MouseDown(object sender, MouseButtonEventArgs e)/点击图片触发事件 if (GameFlag=1) if (count = 0) count+; SelBeforeImg = (Image)se

15、nder); else count = 0; string SelNowImg = (Image)sender).Name; if (SelBeforeImg.Name = SelNowImg & SelBeforeImg != (Image)sender)/成功消除 (Image)sender).Visibility = Visibility.Collapsed; SelBeforeImg.Visibility = Visibility.Collapsed; ClearImg+; switch (Level)/共3关,胜利后自动进入下一关 case 1: if (ClearImg = 32)

16、 EndSelect = 3; Level+; ClearImg = 0; GameEnd(); Thread.Sleep(500); Start_Game(); break; case 2: if (ClearImg = 50) EndSelect = 3; Level+; ClearImg = 0; GameEnd(); Thread.Sleep(500); Start_Game(); break; case 3: if (ClearImg = 72) EndSelect = 1; ClearImg = 0; GameEnd(); break; default: break; if (Le

17、vel=3) Level = 1; else SystemSounds.Hand.Play();/消除不成功提示音 private void GameEnd()/游戏结束 for (int i = 0; i Image image1 = image.FindName(Cimage + i.ToString() as Image; GridName.Children.Remove(image1); GridName.UnregisterName(Cimage + i.ToString(); ); for (int i = 0; i GridName.ColumnDefinitions.Clear

18、(); GridName.RowDefinitions.Clear(); ); soundPlayer.Stop();/音乐停止 GameFlag = 0;/游戏标志位复位 ClearImg = 0;/图片清除标志位复位 Dispatcher.Invoke(new Action() = Start_Btn.IsEnabled = true; End_Btn.IsEnabled = false; ); switch (EndSelect)/提示信息选择 case 0: MessageBox.Show(时间到,游戏结束!,游戏失败); ; break; case 1: MessageBox.Sho

19、w(恭喜,完成所有关卡!,游戏胜利); ;break; case 2: MessageBox.Show(游戏结束!,游戏结束); ; break; case 3: MessageBox.Show(恭喜进入下一关!, 游戏胜利); ; break; default: break; thread.Abort();/线程结束 private void Creat_Grid(int gridNo)/生成网格 for (int i = 0; i gridNo; i+)/生成No*No的格子 ColumnDefinition column = new ColumnDefinition(); GridNam

20、e.ColumnDefinitions.Add(column); RowDefinition row = new RowDefinition(); GridName.RowDefinitions.Add(row); private void Create_Image(int imageNO)/加载图片 int, arr1 = new intimageNO, imageNO; Random random = new Random(); int SelImgSerial=1; switch (Level) case 1:SelImgSerial = 11;break;/第一关,图片编号1118 case 2:SelImgSerial = 1; break;/第二关,图片编号110 case 3: SelImgSerial = 21; break;/第三关,图片编号2132 default: break; for (int i = SelImgSerial; i SelImgSerial+imageNO; i+)/比如image=10:把数组arr10,0arr19,9填满随机的110数字,并且每个数字出现10次 int ImageCount = 0; while (ImageCount imageNO) int x

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1