-
2021-11-21 21:11:27
文章目录
一、项目分析
项目分析简要说明项目主要用户需求、设计思路及模块划分。
1、用户需求分析
在当今社会,人们的生活压力越来越大,也没有太多时间去玩大型的游戏,所以需要一些简单的小游戏来缓解大家的工作和学习压力。而连连看是一款简单,容易理解,大多数人都会玩的小游戏,耗费时间也不是太长,所以特意设计此款游戏来满足用户放松心情的需求。
2、系统设计思路
(1)进行游戏用户的注册以及登录;
(2)先导入图片,并进行切割
(3)随机丢弃一张小切图,并打乱顺序
(3)窗体基本的功能选择栏需实现;
(4)可以判定游戏确定输赢,当拼成时提示成功;
(5)点击图片要能进行移动;
(6)右侧要有重排后的显示框便于玩家游戏的完成。3、系统模块划分
板块一:注册用户并进行登录。
板块二:导入图片。
板块三:设置关卡所能选的难度。
拼图游戏应该有关卡选择33型,44型,5*5型等等。设置多个关卡可以让用户体验游戏更具挑战性。
版块四:拼图是否完成的判断。
通过判断图片对应结构体的数字是否完全顺序排列来判断游戏是否胜利。
板块五:切割图片。
板块六:打乱拼图。
板块七:重排图片,反映现在拼图的状况。
板块八:切成图后的小图片移动。
该过程是整个游戏的核心过程,是最重要的一个过程,用户通过点击图片来移动图片,如果图片临近白块,则图片移动到白块位置;反之则不移动。二、项目设计
详细介绍项目各个子模块的设计方法及设计核心技术。
1、各个子模块的设计方法
板块一:注册用户并进行登录。
通过两个窗体来完成注册登录的步骤。注册主要用到文件读取的方法:
StreamReader reader = new StreamReader("name.txt");
并通过写入函数讲用户注册名写入:
StreamWriter writer = new StreamWriter("name.txt", true); writer.WriteLine(textBox1.Text); MessageBox.Show("用户注册成功,请进行登录!"); writer.Dispose();
登录道理相同。
板块二:导入图片。
导入图片用到
OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.ShowDialog();//打开文件夹选择图片 pictureBox1.Image = Image.FromFile(openFileDialog1.FileName).GetThumbnailImage(250, 250,new Image.GetThumbnailImageAbort(delegate { return false; }),IntPtr.Zero);//使所选图片的尺寸符合所需大小
打开图片文件之后并初始其尺寸大小,便于后期切图以及用户体验。
板块三:设置关卡所能选的难度。
讲难度设置加到combox中
comboBox1.Items.Add("1"); comboBox1.Items.Add("2"); comboBox1.Items.Add("3"); comboBox1.Items.Add("4");
然后用switch对应各个难度
int Diffcult = int.Parse(comboBox1.Text); // 根据对应难度初始化数组并给n赋值 switch (Diffcult) { case 1: node = new Node[3, 3]; n = 3; break; case 2: node = new Node[4, 4]; n = 4; break; case 3: node = new Node[5, 5]; n = 5; break; case 4: node = new Node[9, 9]; n = 9; break; }
版块四:拼图是否完成的判断。
通过判断函数来确定对照各个图片的结构体的数字记录来判断是否拼成
public bool JudgePicture() { int count = 0; for (int x = 0; x < n; x++) { for (int y = 0; y < n; y++) { if (this.node[x, y].num != count) return false; count++; } } return true; }
板块五:切割图片。
// 传入图片;单个图片宽,高;拼图界面的x,y长度 public Image Cutpicture(Image fImage,int width,int height,int spacex,int spacey) { // 创建新图片的位图 Bitmap bitmap = new Bitmap(width, height); // 创建绘制区域 Graphics graphics = Graphics.FromImage(bitmap); // 截取所需原图对应区域写入作图区域 graphics.DrawImage(fImage, 0, 0, new Rectangle(spacex, spacey, width, height), GraphicsUnit.Pixel); // 从作图区域生成新图 Image fgImage = Image.FromHbitmap(bitmap.GetHbitmap()); return fgImage; // 返回分割后的图片 }
通过创建绘制区域,来截取所需的小图块,然后通过调用切图函数将切后的图片全部传入结构体图片数组中。
板块六:打乱拼图。
// 定义随机数用于打乱切后的图 Random lx = new Random(); Random ly = new Random(); int x = lx.Next(0, n); int y = ly.Next(0, n);
再调用交换函数进行来进行两图片交换,进行400000次达到打乱的目的
板块七:重排图片,反映现在拼图的状况。
每次图片的点击移动事件都会进行
pictureBox2.Image = BackImage();
语句来存储移动后的图片,当点击button3时就会调用这个函数// 按钮重排后再picturebox3中显示 private void button3_Click(object sender, EventArgs e) { // 在pictureBox3中显示被移动后的拼图 pictureBox3.Image = BackImage(); }
是的picturebox3的图片显示现在图片的状态
板块八:切成图后的小图片移动。
先读取鼠标点击的位置,用于判断点击的图片位置
int X = e.X / (width / n); // 鼠标x位置整型只能取 1到n-1 int Y = e.Y / (width / n);
一共九种情况:图片在中间,四角,四边,分别判断来确定是否移动:如下面是在中间点击图片的运行代码,其他情况类似:
if (node[X + 1, Y].num == index_m) { Swap(new Point(X + 1, Y), new Point(X, Y)); } else if (node[X - 1, Y].num == index_m) { Swap(new Point(X - 1, Y), new Point(X, Y)); } else if (node[X, Y + 1].num == index_m) { Swap(new Point(X, Y + 1), new Point(X, Y)); } else if (node[X, Y - 1].num == index_m) { Swap(new Point(X, Y - 1), new Point(X, Y)); }
2、设计核心技术
- 用文件流的方法设置登录注册界面,并保存用户名信息
- 使用GDI+的方法对图片进行切割
- 打乱图片的时候运用大量随机数
- 每个图片有自己的对应结构体数字,为了判断是否拼图成功
- 当所点击图片与空白图片交换时,分九种情况:四角,四边,中间,按情况来写入交换方法
- 当拼成功时,按照图片对应的结构体数字并调用判断函数判断
三、项目测试
简要介绍采用的测试方法和测试要点。
点击图中按钮后选择一个图片文件,将图片显示到窗口的左边
然后将图片切为指定的数目(如 3x3)的小图片,从生成的小图片中随机选择一张丢弃,将小图片按照一定规律打乱,并将显示到窗口的中间。
用户可以用鼠标点击空白方块周围的图片,被点击的图片移动到原来空白的位置,被点击图片的位置变为空白。
另设登录,注册界面
四、结论
简要总结项目的主要工作、主要结果、心得感受主要发现以及下一步应当开展的主要工作等。
主要工作
:设计了一款拼图游戏主要结果
:让用户有一种较好的游戏体验,并制作完成三级项目心得感受
:大部分是老师上课讲过的,还有一些运用得不是很好,以及一些自己通过网络,书籍来获取的知识,当然更多的知识是陌生的,需要自己去查找,去学习,来达到学以致用的目的。下一步工作
:程序仍然存在缺陷,缺少背景音乐与华丽的界面,这些问题待解决
五、项目链接
这个文档描述的版本是这个
https://download.csdn.net/download/weixin_45525272/46298952
还有下面这个是我闲着没事用一种极其简单的思想做的:
https://download.csdn.net/download/weixin_45525272/46299299更多相关内容 -
C#拼图游戏
2019-03-13 21:27:48C#拼图游戏,SharpDX.Direct2D1,SharpDX.Direct3D11 -
C#拼图游戏编写代码
2020-12-26 07:53:19本文设计了C#拼图游戏程序,供大家参考,具体内容如下 功能描述: 1.用户自定义上传图片 2.游戏难度选择:简单(3*3)、一般(5*5)、困难(9*9)三个级别 3.纪录完成步数 模块: 1.拼图类 2.配置类 ... -
c#拼图游戏源码可以自定义图片和块数
2019-05-07 13:01:11c#拼图游戏源码可以自定义图片和块数 -
C# 拼图游戏_源代码
2021-03-16 00:36:13C#版的拼图游戏源代码,C#源码下载,一个数字版的小游戏,类似拼图的玩法,有兴趣的修改成图片版的,比较简单基础的游戏例子,C#编程新手参考吧。 运行环境:Visual Studio2010 -
c#拼图游戏
2018-10-26 23:39:38可运行 -
C#拼图游戏_C#_拼图游戏_
2021-09-29 18:24:16C#拼图小游戏源码,适合初学者参考学习使用。 -
C#拼图游戏编写代码(2)
2020-08-30 20:03:18主要为大家详细介绍了C#拼图游戏的编写代码下篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
C#窗体——拼图游戏.zip
2021-11-21 21:22:47C# 拼图: (1)进行游戏用户的注册以及登录; (2)先导入图片,并进行切割 (3)随机丢弃一张小切图,并打乱顺序 (3)窗体基本的功能选择栏需实现; (4)可以判定游戏确定输赢,当拼成时提示成功; (5)点击... -
C#拼图游戏源代码
2016-08-02 11:01:56C#拼图游戏源代码 -
c#拼图游戏源码可以自定义图片和块数4
2019-05-07 13:03:56c#拼图游戏源码可以自定义图片和块数 -
C# 拼图游戏
2019-02-15 15:00:13鼠标拖动拼图;自动判断拼图成功。 开始 设置图片矩阵大小默认为3×3 生成图片框矩阵并初始化其位置 加载默认图片 图片尺寸调整 图片分割、打乱、加载到图片框矩 拼图 判断拼图是否成功 是否继续拼图 是,...一.主要功能包括:图片尺寸自适应;图片动态分割;查看原图;随机切换图片;鼠标拖动拼图;自动判断拼图成功。
- 开始
- 设置图片矩阵大小默认为3×3
- 生成图片框矩阵并初始化其位置
- 加载默认图片
- 图片尺寸调整
- 图片分割、打乱、加载到图片框矩
- 拼图
- 判断拼图是否成功
- 是否继续拼图
- 是,随机加载图片/加载用户自选图片
- 设置/采用默认图片矩阵方式,继续拼图
- 否,结束
二 界面设计
三 运行实现
(1)单击工具条上的“查看原图”按钮,效果如图
(2)单击工具条上的“试玩新图”按钮,可自选图片
(3)单击工具条上的“切换图片”按钮,可再已备图片切换
(4)单击工具条上的“图片重排”按钮,效果如图
(5)改变难度(切割图片块数的变化)
四 系统扩展
用两个timer组件实现计时功能
-
c# 拼图游戏 c# 拼图游戏 c# 拼图游戏
2011-01-07 00:43:47从头到尾自己写的傻瓜程序。 不过可以玩。嘎嘎! -
c#拼图游戏源码
2014-03-19 16:11:38拼图游戏源码,部分代码: private void InitializeLocations() { List<int> allLocations = new List(); allLocations.Clear(); int getRandNumber = rand.Next(1, 17); allLocations.Add(getRandNumber); ... -
C#拼图游戏控制台代码
2015-05-19 11:59:31这是C#控制台拼图游戏代码,转载需说明出处。 -
C#拼图游戏(很强大)
2013-09-04 08:19:03很强大的拼图游戏,支持自选图片,支持电脑自动拼图,绝对物超所值! -
C#拼图游戏源文件
2018-06-06 20:25:39设计一款拼图游戏,要求点击图片按钮,实现图片按钮的移动,直到每一个按钮都到达指定位置游戏终止退出。 游戏设计思路: 1.准备一张图像文件; 2.创建N个按钮图标,每个按钮图标里面存入一张分割后的图片信息; ... -
c#拼图游戏 赋源代码 资源文件参考 不懂可留言
2020-04-09 17:56:49c#拼图游戏 赋源代码 资源文件参考 不懂可留言 -
C#拼图游戏供练习使用
2019-03-24 19:17:19用C#写的拼图游戏。练习C#绘图,图像切割、旋转等等,可作为绘图练手