拼图游戏制作文档汇总

合集下载

九宫格拼图游戏

九宫格拼图游戏

九宫格拼图游戏设计文档一、综合设计目的、条件、任务和内容要求:1.设计目的《Windows程序设计》是计算机科学与技术专业本科生的一门学科基础课程。

Windows程序以图形用户界面(GUI)给用户提供各种功能,在各行各业有着广泛的应用。

基于MFC的Windows程序设计是进行Win32程序设计的一种主流方法。

本课程主要介绍Windows程序设计的思想和方法,以及MFC的常见应用。

本课程综合应用算法与程序设计、面向对象程序设计、数据结构、操作系统、数据库系统原理等课程的知识和方法,面向实际应用和开发,以培养、提高学生的程序设计能力和软件工程能力为目的。

通过课程教学、上机实践、综合设计等教学环节,使学生逐步掌握Windows程序设计和MFC的常见应用,并能在实践中熟练应用所掌握的工具和方法解决实际问题。

2.实施方式本课程重在训练学生的综合设计能力和项目开发应用能力,并强调学生的上机实践能力。

按照常规考试方式,不能体现本课程“以理论为基础,侧重实践和应用”的特点,也不能考查学生理解本课程知识的程度以及所培养具备的MFC程序设计应用能力。

3.任务和要求:针对某一综合应用项目,完成如下任务:(1)简要的需求分析(2)规划系统主要功能及其结构。

(3)完成各项系统功能的设计。

(4)形成项目文档和开发报告。

4.工具与环境:设计工具:Visual Studio二、进度安排:第1周:基础知识串联复习第2周:撰写设计报告,并按时递交。

第3周:实现系统各模块功能功能第一部分设计方案论述2.1项目方案论述2.1.1具体论述1.CMenu* GetSubMenu(int nPos) 若弹出菜单位于指定的位置,则返回CMenu 对象的指针,其中CMenu对象要包含弹出菜单的句柄;否则返回NULL。

如果CMenu 对象不存在,那么将创建临时CMenu对象,但返回的CMenu指针不应被存储。

nPos指定包含在菜单中的弹出菜单的位置。

拼图游戏jigsaw

拼图游戏jigsaw

拼图游戏(jigsaw)——项目文档一、项目功能本游戏为拼图游戏,玩法类似华容道,游戏界面为一被分割为许多小块的完整图片(右下角缺少一块),具体玩法为:打乱小块图片顺序后,通过交换空白方块与其周围的小块图片进行拼图,最终拼成原图片(右下角缺少一块)即为游戏胜利。

本游戏具体实现了以下功能:1、运行程序后,出现初始界面,在其最上方有四个按钮(“开始游戏”按钮、“预览全图”按钮、“选择图片”按钮和“选择难度”按钮)的面板对象,在其下方出现主面板对象(游戏的主界面即右下角缺少一块的完整图片),在界面标题栏左侧出现“拼图游戏”,右侧有最小化和关闭按钮。

2、单击“开始游戏”后,小块图片顺序被打乱,游戏开始,通过鼠标点击空白方块周围的小块图片,将其移至空白方块处,从而进行拼图。

3、单击“预览全图”后,界面显示完整的图片,对玩家进行提示,同时“预览全图”按钮变为“返回游戏”。

单击“返回游戏”,界面变回此前的游戏界面,同时“返回游戏”按钮变为“预览全图”。

4、单击“选择图片”后,可通过下拉菜单进行图片选择,从五幅图片中选择一个进行拼图游戏。

5、单击“选择难度”后,可通过下拉菜单选择游戏难度,“初级”为3*3块拼图,“高级”为4*4块拼图。

6、当玩家完成拼图,游戏弹出“恭喜!拼图完成!共用n步”对话框,告知玩家完成游戏所用的步数。

7、当游戏运行,自动循环播放背景音乐。

二、主要技术本游戏使用的主要技术有:Java语言、事件机制、布局机制、异常处理机制、线程同步、Swing组件的运用以及GUI(图形用户界面)开发的综合应用。

1、Swing是一个用于开发Java应用程序用户界面的开发工具包。

它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。

Swing 组件,作为JFC类库的一部分,Swing提供了40多个组件,是AWT的4倍。

本游戏中运用了Swing组件中的窗口类JFrame、面板容器JPanel、显示信息的面板类JLabel、按钮类JButton、提示框类JOptionPane等。

团建拼图数字游戏方案

团建拼图数字游戏方案

以我给的标题写文档,最低1503字,要求以Markdown 文本格式输出,不要带图片,标题为:团建拼图数字游戏方案# 团建拼图数字游戏方案## 1. 游戏背景在团队中开展团建活动可以增强团队凝聚力和合作精神。

而数字拼图游戏是一种既能锻炼思维能力又能增进团队协作的活动。

本方案将介绍一种团建拼图数字游戏方案,旨在通过团队合作完成拼图任务,进一步增强团队的凝聚力和沟通能力。

## 2. 游戏规则拼图数字游戏基于以下规则进行:### 2.1 拼图选材为了增加游戏的趣味性,可以在市面上购买一套数字拼图作为游戏道具。

拼图的难度可以根据团队的实际情况和需求进行选择。

### 2.2 团队分组将参与游戏的人员平均分成若干个小组,每个小组由3-5人组成,确保每个小组的成员之间具有一定的相互了解。

### 2.3 游戏目标每个小组需要合作完成一幅完整的数字拼图。

拼图上的数字将以乱序的形式呈现,小组成员需要通过拼图形式将数字按照正确的顺序组合在一起。

### 2.4 游戏流程游戏分为以下步骤:1. 每个小组领取一套数字拼图;2. 小组成员根据拼图上的数字开始拼图;3. 小组成员进行交流和讨论,共同确定数字的正确位置;4. 如果小组遇到困难,可以向其他小组求助,但不能直接互换数字拼图;5. 时间到达规定时间后,小组停止拼图,进行结果展示和讲解;6. 最终完成拼图时间最短或完成度最高的小组获胜。

### 2.5 游戏注意事项- 游戏开始前,主持人需要对游戏规则进行详细讲解,确保每个小组明确游戏目标和规则;- 游戏过程中,主持人可以适当给予小组一些提示和鼓励,提高游戏的顺利进行;- 游戏结束后,可以进行小组之间的互动和总结,分享拼图的心得和体会。

## 3. 游戏收益通过团建拼图数字游戏,可以达到以下收益:- 增进团队合作意识:游戏过程中需要小组成员相互合作,共同解决问题,锻炼团队协作能力;- 提升沟通能力:游戏需要小组成员之间进行交流和讨论,促进信息的共享和沟通技巧的提升;- 加强团队凝聚力:游戏过程中小组成员可以相互帮助和支持,增进团队成员之间的情感联系;- 激发创新思维:游戏需要小组成员寻找策略和解决问题,培养创新思维和解决问题的能力;- 放松心情:游戏中组员们可以放松身心,享受游戏的乐趣,缓解工作压力。

拼图游戏_精品文档

拼图游戏_精品文档

拼图游戏1. 简介拼图游戏是一种受欢迎的益智游戏,可以锻炼思维能力和观察力。

拼图游戏通常包括将不完整的图案或图片拼合在一起,形成完整的图案。

这个游戏可以玩家们冷静思考,找出正确的位置和方向,一块一块地将图案拼合起来。

拼图游戏不仅适合儿童,也适合成年人,是一种放松身心的方式。

2. 拼图游戏的起源拼图游戏最早起源于18世纪的欧洲。

据说,拼图游戏最早是由英国的一位地理教师推出的,他用地图将其剪成一些碎片,然后让学生将其拼合在一起,以测试他们对地理的了解。

后来,拼图游戏逐渐发展为一种流行的娱乐方式,并在世界各地迅速传播开来。

3. 拼图游戏的好处拼图游戏有许多益智和认知方面的好处。

首先,拼图游戏可以增强空间感知能力。

通过观察和试错,玩家需要找出正确的位置和方向来拼合图案,这使得他们的空间感知能力得到锻炼。

其次,拼图游戏可以促进问题解决和逻辑思维能力的发展。

玩家需要根据图案的形状、颜色和纹理等特征,将碎片拼在一起,这需要他们进行逻辑推理和问题解决。

此外,拼图游戏还可以提高注意力和专注力。

在拼图游戏中,玩家需要集中注意力,专心观察碎片的特征,以便找出正确的位置和方向。

这有助于培养他们的专注力和注意力。

最后,拼图游戏还可以增强手眼协调能力。

拼图游戏要求玩家将碎片精确地放在特定的位置上,这需要他们的手眼协调能力和精细动作控制。

4. 拼图游戏的分类根据难度和图案的不同,拼图游戏可以分为多种类型。

最常见的一种是传统的平面拼图,一般由几十至上百个小块构成。

此外,还有立体拼图、大块拼图和木质拼图等。

立体拼图是一种比较新颖的拼图形式,可以拼出立体的物体,如建筑物、动物等。

这种拼图会增加一定的难度,因为拼图不仅需要考虑平面上的形状,还需要考虑立体的空间关系。

大块拼图是专为儿童设计的,拼图块通常较大且易于拼合。

这样的设计使得儿童更容易完成拼图,提高了他们的成功感和兴趣。

木质拼图则是一种由木质材料制成的拼图,拼图块通常具有特殊的形状和纹理。

拼图游戏

拼图游戏

• 点评:状况共有
• 目标: 5个人拼成同样大小的拼图才算完成任务。 交换纸片即是交换资源。 在统一目标的指引下,资源信息要共享, 彼此愿意、善于分享,将组织利益置于 个人利益之上才是真正的“状况共有”
拼图游戏
• 目的:沟通类、团队训练 人数:适合4人~16人 道具:硬纸若干 说明: • 1、按如图所示制作15张硬纸,将其打乱分拆 成5份装入信封。 • 2、小组内每人得到一个信封,小组的任务将 信封内的卡片拼装成相同形状的正方形。
ቤተ መጻሕፍቲ ባይዱ
• 规则: 1、全过程不许交流 2、每人手里拿到的卡片只许给别人,不能从别人的手 里拿卡片(不能帮助别人拼图)。 任务: 小组内的每个人将散乱的图片评成同样大小 的正方形,最快的小组获得胜利。 陷阱:每个人自己完成以后认为OK了,就不愿将自己 的纸片交给别人了。(不能自己完成就算了)。 。

拼图游戏设计报告.doc

拼图游戏设计报告.doc

1.设计题目:拼图游戏2.设计思路:(1)划分功能模块:运行程序后,点击进入游戏,加载游戏界面,点击开始图片随机分布(2)可以通过选择游戏的级别,选择四图、九图还是十六图的游戏3.过程和函数的调用关系:源程序:Private Sub C1_Click()’点击进入游戏,默认进入级别为一般的九图的游戏界面Load Form1Form1.ShowUnload Form2End SubPrivate Sub C2_Click()’点击退出游戏,退出游戏界面运行EndEnd SubPrivate Sub exit_Click()’点击左上角游戏下拉菜单中的退出,退出游戏EndEnd SubPrivate Sub help_Click()’点击帮助菜单,提示关于拼图的信息MsgBox "拼图是一种老少皆宜、容易上手的益智类小游戏。

指定一幅完整的图片,将其分割成小的图块,并且打乱顺序后重新排列,其中有一块没有任何东西的空档,使用鼠标单击与空档相邻的图块,使该图块与空档位置互换,利用空档位置移动各图块,最终恢复图片原样,完成拼图。

移动的步数越少则表明游戏者的水平越高。

游戏过程中用参考图来获得帮助查找每图块的相对正确的位置.", , "帮助"End SubPrivate Sub jiandan_Click()’选择简单级别,打开四图游戏Load Form4Form4.ShowUnload Form2End SubPrivate Sub kunnan_Click()’选择困难级别,打开十六图游戏Load Form6Form6.ShowUnload Form2End SubPrivate Sub newgame_Click()’单击新游戏,打开新游戏Load Form1Form1.ShowUnload Form2End SubPrivate Sub yiban_Click()’选择一般级别,打开九图游戏Load Form1Form1.ShowUnload Form2End SubOption Explicit’一系列变量的定义Dim shunxu(8) As Integer '记录图片排列顺序的数组Dim Position As Integer '被点击的图片位置Dim kongtuposition As Integer '空图片的位置Dim MoveTimes As Integer '记录移动次数Dim newposition As Integer '用于计算位置,即新位置Dim Started As Boolean '逻辑型Dim Win As BooleanDim Pic(8) As PictureDim i As IntegerPrivate Sub Command2_Click()’返回主界面Load Form2Form2.ShowUnload Form8End SubPrivate Sub Command3_Click()’显示原图Load Form9Form9.ShowEnd SubPrivate Sub jiandan_Click()’单击简单,打开四图游戏界面Load Form4Form4.ShowUnload Form8End SubPrivate Sub kunnan_Click()’单击困难,打开十六图游戏界面Load Form6Form6.ShowUnload Form8End SubPrivate Sub newgame_Click()’单击新游戏,与点击开始的效果一样,小图块重新分布Dim Temp(8) As IntegerDim ChosenNumber As IntegerFor i = 0 To 8Temp(i) = iNextRandomize (Timer)For i = 8 To 0 Step -1ChosenNumber = Int(i * Rnd) '开始图片随机分布shunxu(8 - i) = Temp(ChosenNumber)Temp(ChosenNumber) = Temp(i)NextFor i = 0 To 8Picture1(i).Picture = Pic(shunxu(i))If shunxu(i) = 8 Then kongtuposition = iNextStarted = TrueMoveTimes = 0End SubPrivate Sub Picture1_Click(Index As Integer)’主要是确定空图的位置,然后根据空图位置确定所点击的图片往哪个方向移动Position = Index '所点图片位置If Started = False Then Exit SubIf ((Position <> 0) And (Position <> 3) And (Position <> 6)) Thennewposition = Position - 1’向左移If (newposition = kongtuposition) Then continueEnd IfIf ((Position <> 2) And (Position <> 5) And (Position <> 8)) Thennewposition = Position + 1’向右移If (newposition = kongtuposition) Then continueEnd IfIf (Position >= 3) Thennewposition = Position – 3’向上移If (newposition = kongtuposition) Then continueEnd IfIf (Position <= 5) Thennewposition = Position + 3’向下移If (newposition = kongtuposition) Then continueWin = TrueFor i = 0 To 7If (shunxu(i) <> i) Then Win = False’判断拼图是否拼对If Win = False Then Exit ForNextIf (Win = True) ThenMsgBox "恭喜恭喜!你很聪明。

拼图游戏制作

拼图游戏制作

多媒体技术与应用课程设计题目拼图游戏系 (部) 电子与信息工程系班级姓名学号指导教师2015年 1 月15日多媒体技术与应用课程设计任务书拼图游戏摘要:本课程设计利用authorware制作一个拼图游戏,以authorware7.0为开发工具,用到界面设计、事件响应、时间限制以及声音设置返回等函数变量实现拼图游戏。

关键字:拼图游戏;Authorware;交互性1 系统概述1.1 系统开发背景拼图游戏是家喻户晓的益智类游戏,伴随计算机的迅速普及,伴随网络“触角”的迅速延伸,喜欢探索、充满幻想、渴望参与,这是人的天性。

真实感、立体感、交互性强的游戏吸引着成千上万的人。

拼图游戏是一种大人与小孩都可以玩的游戏,它可以启发智力以及帮助养成解决事情的能力,玩拼图游戏有助于与眼手协调。

它能训练和了解“部分”与“全部”的关系,可以知道许多的“部分”可以拼凑出一个“全部”,以及“一个全部”是由”许多部分“所组成的。

1.2 系统开发的目的和意义1.2.1项目开发目的本课程设计的目的是通过实践使同学们经历多媒体应用系统开发的全过程和受到一次综合训练,以便能够全面理解和掌握、综合运用所学的知识。

结合具体的案例。

来理解并初步掌握多媒体软件的使用,利用多媒体软件的使用,利用多媒体计算机等设备进行音频与视频数据的获取和处理、图像处理与图像文件格式转换、超文本超媒体在交互式多媒体软件的应用。

1.2.2项目开发意义项目开发的意义主要是是学生能够达到提高多媒体技术的实际开发应用能力,了解系统分析、系统设计、系统实施的主要环节和步骤以及文档的制作过程。

2 需求分析2.1 需求分析设计一个拼图游戏,主要实现将碎片拼成完整的一张图。

主界面分为三部分:按钮、表格以及碎片图,主要是将九个方格组成的一个大的正方形,主要是将碎片拼成与原图一样的一幅图,将碎片拖入到正确的位置方可放到方格之中,否则将会退到原处。

如果将图片都完全拼到正确的位置时,界面将会出现“你赢了”的字样。

巧手拼图精品文档

巧手拼图精品文档
巧手拼图
XX,a click to unlimited possibilities
汇报人:XX
目录
CONTENTS
01 拼图技巧 02 拼图图案 03 拼图材质 04 拼图难度
05 拼图品牌与推荐
拼图技巧
第一章
快速拼凑法
分类整理:将拼图碎片按照颜色、 形状等特点进行分类整理,方便后 续拼凑。
善用记忆:利用记忆和想象,将碎 片与已知的图像进行对比,有助于 快速找到正确的位置。
人物图案
拼接技巧:采用不同颜色和 形状的拼块进行拼接
图案特点:形象生动,表情 丰富
适用场景:适合拼装成各种 人物图案,如卡通形象、明
星等
创意发挥:可以根据个人喜 好进行创意设计,打造独特
的拼图作品
抽象图案
特点:无规则、非具象,强调个性表达和创意 常见类型:几何图形、点线面组合、抽象画等 适合人群:喜欢挑战和创意的人,不受年龄限制 拼图难度:相对较高,需要一定的想象力和空间感
纸质拼图:质地 轻柔,可折叠弯 曲,价格实惠
金属拼图:质感 高级,立体感强, 收藏价值高
拼图难度
第四章
初级难度
拼图块数:数量较少,适合初学者 拼图难度:简单易懂,适合儿童和新手 图案选择:以简单图案和动物为主 拼图时间:较短,适合休闲娱乐
中级难度
拼图块数:通常在1000-2000块之间 拼图难度:需要一定的耐心和细心 适合人群:适合有一定拼图经验的人 挑战性:需要一定的技巧和策略
拼图材质
第三章
木质拼图
材质特点:采用天 然木材制作,触感 舒适,环保健康
工艺制作:经过精 心打磨和抛光,拼 块之间咬合紧密, 不易散落
色彩表现:木质拼 图色彩自然,给人 温馨舒适的视觉感 受
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于MFC的拼图游戏设计宋富冉操梦雅摘要:拼图游戏是一个广受欢迎的智力游戏,按人数参与个数可分为单人游戏和多人游戏,按拼图规则它可分为摆放式和挪动式两种类型。

本设计是基于Visual C++ 6.0和MFC的拼图游戏设计,设计了一个操作简单的挪动式单人拼图游戏。

本游戏主要包括游戏界面设计、难易度选择、游戏图片选择、游戏系统设计、判断拼图是否成功等几个模块,程序设计中应用了类、数组、鼠标响应、菜单消息响应等元素和语句。

此游戏的设计主要以学习和熟悉Visual C++ 6.0和MFC软件开发为主要目的。

关键词:拼图; Visual C++ 6.0; MFC1.任务描述1.1 拼图简单介绍拼图游戏是广受欢迎的一种智力游戏,它的变化多端,难度不一,让人百玩不厌。

个性化的拼图,拼凑的不仅仅是一张照片,而是一个故事,一段回忆,一段温情。

每一片的单片都有属于它自己的位置,就像每段回忆都有属于它的故事,你要将它放在专属的地方。

你可以把你记忆中最深刻的片段,你挚爱的照片,你最难忘的一瞬间,做成拼图,在你想起的时候一一拼起。

拼图游戏不仅能增强思维能力,提高智力,而且富含哲理,有助于加强我们的动手能力和我们的洞察能力。

1.2 基本设计要求我们设计的拼图游戏是一个具有简单的系统界面,操作简单易行,上手快,适用于广大用户的小游戏。

此游戏分散的小图片的移动规则是小图片会朝着空位置方向移动,玩家在界面上先通过鼠标点击“游戏图片选择”选择要拼的图片,然后通过鼠标左键点击要移动的小图片,小图片会自动移动到原来没有图片的位置,移动时,预备移动的图片旁边必须要有可供移动的位置,直到拼合出原来的图片,并且成功拼成图片后会出现“看来这对你来说太简单了,挑战更高难度吧!”一句话。

具体设计要求如下:(1)可以打开并显示.bmp任意大小的图片;(2)游戏开始之后,可以自动随机打乱图片;(3)用户可以点击方块进行上下左右的交换,直到拼出原图片;(4)系统能够自动检测用户是否拼出原图,并提示用户拼图是否成功。

2.系统需求分析2.1 功能需求分析(1)用户能用鼠标控制系统界面上各个菜单选项的选择。

(2)游戏难度选择功能:用户可以通过参数设置自定义选择游戏的难度,系统开始默认的是9块,如果用户想挑战更困难的,可以在设置参数设置中进行相应的参数修改,比如4*4=16块、5*5=25块、3*4=12块等。

(3)游戏音乐播放功能:用户可以根据自己的喜好进行选择是否播放音乐,所播放的音乐也是用户根据喜好自己来选择的。

(4)游戏原图显示功能:当玩家在玩游戏过程中忘记各个小图片的整体排列位置时能够进入原图显示功能查看完整图片,参考原图进行拼图游戏,以提高游戏的趣味性。

(5)游戏判断功能:用户通过移动每一小块图片,最终拼出和导入的图片一致时,系统则会判断你拼图成功,并提示“看来这对你来说太简单了,挑战更高难度吧!”这句话。

图2-1 系统功能模块2.2 界面设计需求该拼图游戏是以对话框的形式显示出来,顶部为标题栏,接着是菜单栏,菜单栏上是五个菜单选项:主菜单、游戏图像选择、参数设置、原图设置、帮助。

然后接下来就是拼图游戏的拼图部分主界面。

2.3 系统其他需求分析(1)性能要求可靠性强、实时性好(2)设计约束开发工具:VC++ 6.0、运行环境:windows 2000以上(3)软硬件要求在windows平台上运行、应用程序用C++语言开发、客户端使用普通个人计算机。

2.4系统流程图图2-2系统流程图流程图说明:(1)启动程序,进入游戏界面。

(2)用户根据自己的想法和意愿选择游戏图片,并进行游戏参数设置后,程序有相应的操作,对应程序根据参数设置进行图片的分割,游戏区域均分,将分割后的子图片填充到游戏区域相等面积的方格内,并记录初始各个子图片的原始坐标,然后随机走动200步。

(这个过程执行只在一瞬间即可完成)显示出游戏界面。

(3)用户开始游戏,使用鼠标或者键盘上下左右键来进行拼图,在此过程中,程序会实时刷新画面,并全盘对比各个子图片的坐标和原始坐标是否相同,若相同则游戏结束,系统提示拼图成功,若不同,则用户继续游戏,继续移动子图片,判断程序循环执行,直到拼图成功。

(4)若在游戏过程当中,想要参照原图,则点击原图显示菜单选项,原图像显示子程序被调用,并将原图像显示在游戏区域一侧,供游戏者参考,不想参考可再次点击原图显示不显示原图像。

(5)参数设置选项,可以进行拼图的难度设置,即图块的行列数设置,以及游戏背景音乐的设置,在此过程中程序将执行相应的子函数进行响应用户操作。

(6)中途可以随时重新开始新游戏,退出游戏,参数设置,原图显示与否,调换游戏图片等,不必关闭程序重新打开。

并且确保每次拼图必定会成功,不会出现拼图不成功的情况。

3.函数功能设置(1)int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { //切换"文本提示形式"菜单选项为"图像提示形式"HMENU hmenu;hmenu=::GetMenu(m_hWnd); //获取主菜单控制权//获取图片选取菜单选项所在的子菜单栏目的控制权hmenu=::GetSubMenu(hmenu,1);char * hbmp;UINT ITEM_ID;HINSTANCE hinst = AfxGetInstanceHandle();//获取实例的句柄//载入相关的缩小预览型的位图图片,并进行相关选项的属性修改hbmp=(char *)LoadBitmap(hinst,MAKEINTRESOURCE(IDB_PIC1));//图片的载入ITEM_ID = ::GetMenuItemID(hmenu,1); //相应菜单选项的ID获取//属性修改--切换成图像显示方式::ModifyMenu(hmenu,1,MF_BYPOSITION|MF_BITMAP,ITEM_ID,hbmp);}(2)BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT,CCreateContext* pContext){ //创建1行2列的分裂视图,设定出游戏界面(参见图3-1)m_wndSplitter.CreateStatic(this,1, 2);m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSFRCMYPINTUView), CSize(300,0), pContext);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(COrgView), CSize(0,0),pContext);m_wndSplitter.SetActivePane(0,0); //将第一个作为当前激活状态的视图}图3-1 游戏初始界面(3)BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { //设置对应图3-1的初始界面窗口显示的大小cs.cx = 600;cs.cy = 400;cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE | WS_THICKFRAME | WS_SYSMENU;cs.dwExStyle = WS_EX_ACCEPTFILES;}(4)void COrgView::OnDraw(CDC* pDC){// 源图像绘制函数CSFRCMYPINTUDoc* pDoc = (CSFRCMYPINTUDoc*)GetDocument()CDC memdc; //使用内存DCmemdc.CreateCompatibleDC(pDC);memdc.SelectObject(pDoc->m_bitmap);pDC->BitBlt(0,0,pDoc->m_bmpWidth,pDoc->m_bmpHeight,&memdc,0,0,SRCCOPY); / /整幅图拷贝}void COrgView::DrawAll(CDC *pDC){//是否显示原图像的响应函数}(5) void COrgView::OnUpdate(CView* pSender, LPARAM lHint, CObject*pHint){//更新界面函数}(6)void CSetitingDlg::OK(){//确定并保存参设设置的所有更改(参见图3-2)}(7)BOOL CSetitingDlg::OnInitDialog(){CDialog::OnInitDialog();//初始化各个游戏参数(部分可参见图3-2)m_iCols=AfxGetApp()->GetProfileInt(_T("游戏参数"),_T("hnums"),3);m_iRows=AfxGetApp()->GetProfileInt(_T("游戏参数"),_T("vnums"),3);} (8)void CSetitingDlg::OnOpen(){//选取播放背景音乐时,打开相关文件函数(参见图3-2)CString strFilter="MP3文件(*.mp3)|*.mp3";CFileDialog fileopen(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFNOVERWRITEPROMPT,strFilter);if(fileopen.DoModal()==IDOK)m_strMusicFileName=fileopen.GetPathName();UpdateData(FALSE);} (9)void CSFRCMYPINTUDoc::GameMixMove(){// 游戏初始化,随机打乱图像,随机走300步}(10)void CSFRCMYPINTUDoc::GameMove(UINT nChar){//根据按键输入指示命令作移动操作函数,与(9)协作}(11)BOOL CSFRCMYPINTUDoc::IsWin(void){//检测是否拼图成功函数//胜利的检测方法是判断地图的所有方块的内部数据是否全为其行列数,是则表示排列好,胜利}(12)void CSFRCMYPINTUDoc::MapInitial(){//图片数据的初始化函数int i,j;//将原来各个位置的数据填好其所在的行ID,列IDfor(i=1;i<=hnums;i++){for(j=1;j<=vnums;j++){m_map[i][j].row =i; m_map[i][j].col =j;}}} (13)void CSFRCMYPINTUDoc::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags){ // 处理键盘事件函数}(14)void CSFRCMYPINTUDoc::OnMenuOrgPicShow(){// 修改窗口是否显示源图的菜单消息处理函数m_bShowOrgPic = !m_bShowOrgPic; //修改原来的显示SetWindow_N_ViewSize(); //重设窗口大小与视图分布}(15)void CSFRCMYPINTUDoc::OnNewGame(){//开始新游戏函数(参见图3-1)SetWindow_N_ViewSize();MapInitial(); //地图的初始化m_blankPos.row =hnums; //打乱前将空白块起点放在右下角m_blankPos.col =vnums;GameMixMove();// 打乱地图(随机移动200步)UpdateAllViews(NULL); //更新视图}(16)void CSFRCMYPINTUDoc::OnPic1(){//游戏图片选取函数(参见图3-1)PicSelect(IDB_BITMAP1);}(17)void CSFRCMYPINTUDoc::OnSet(){//游戏参数设置响应函数(参见图3-2)}图3-2 参数设置对话框界面(18)void CSFRCMYPINTUDoc::OnUserpic(){// 用户选择路径自定义图片函数}(19)void CSFRCMYPINTUDoc::SetWindow_N_ViewSize(){//设置开始游戏后游戏窗口界面大小函数}(20)void CSFRCMYPINTUView::OnLButtonDown(UINT nFlags, CPoint point) {// 处理鼠标左键消息函数CSFRCMYPINTUDoc* pDoc = (CSFRCMYPINTUDoc*)GetDocument();pos DownPos; //计算出鼠标点击所在的cell方块位置DownPos.row =point.x/pDoc->m_cellWidth+1;DownPos.col =point.y/pDoc->m_cellHeight+1;//根据当前空白方块位置将鼠标点击其相邻方块的情况if(abs(DownPos.row-pDoc->m_blankPos.row)+abs(DownPos.col-pDoc->m_b lankPos.col)==1){if(DownPos.row - pDoc->m_blankPos.row == 1){pDoc->OnKeyDown(VK_RIGHT,0,0);}………………(中间略去)………………………….CView::OnLButtonDown(nFlags, point);}(21)void CSFRCMYPINTUView::DrawGameBlocks(CDC *pDC){// 绘制游戏所有当前散乱的方块}(22)void CSFRCMYPINTUView::DrawCellBlock(CDC *pDC, pos destPos, pos srcPos){ //根据源方块的位置和目标放开位置(当前方块实际位置)} (23)void CSFRCMYPINTUDoc::PlayMusic(){ // 播放背景音乐函数//说明:利用MCI机制控制媒体设备放音}4.数据结构的设计在函数功能的设计中我们提到了相关的结构体的定义,在这里给出重要的结构框架定义:(1 ) struct pos //方块位置结构{int row; //图像所在的行坐标int col; //图像所在的列坐标};(2) class OrgView:public CView //原图像显示类{void COrgView::DrawAll(CDC *pDC){}void COrgView::OnDraw(CDC* pDC){}…….};(3) class CSetitingDlg : public CDialog //参数和音乐播放等对话框对应设置处理类{void CSetitingDlg::OK(){}void CSetitingDlg::OnOpen(){}BOOL CSetitingDlg::OnInitDialog(){}…….};(4) class CSFRCMYPINTUApp : public CWinApp //程序基础类{……};(5) class CSFRCMYPINTUDoc : public CDocument //程序基础文档类{BOOL CSFRCMYPINTUDoc::IsWin(void){}void CSFRCMYPINTUDoc::OnKeyDown(UINT nChar, UINTnRepCnt, UINT nFlags){}void CSFRCMYPINTUDoc::OnNewGame() {}void CSFRCMYPINTUDoc::OnPic1() {}void CSFRCMYPINTUDoc::OnSet(){}void CSFRCMYPINTUDoc::OnUserpic() {}void CSFRCMYPINTUDoc::PlayMusic(){}…….};(6) class CSFRCMYPINTUView : public CView//程序基础视图类{void CSFRCMYPINTUView::DrawLines(CDC *pDC){}void CSFRCMYPINTUView::DrawBlankBlock(CDC *pDC){}void CSFRCMYPINTUView::DrawCellBlock(CDC *pDC, posdestPos, pos srcPos){}void CSFRCMYPINTUView::OnLButtonDown(UINT nFlags,CPoint point){}void CSFRCMYPINTUView::OnDraw(CDC* pDC){}……};(7) class CAboutDlg : public CDialog//程序基础对话框类{…….};(8) class CMainFrame : public CFrameWnd//程序主函数类{int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){}BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){}……};5.详细设计5.1 初始窗体设计利用MFC AppWinzard生成五子棋游戏应用程序框架具体步骤如下:1.执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name 文本框中输入SFRCMYPINTU。

相关文档
最新文档