还剩27页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2011届本科毕业生论文题目VC++拼图游戏设计Title:DesignofVc++PuzzleGame姓名学号所在学院专业指导教师完成日期声明本人郑重声明所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作及取得的研究成果其中除加以标注和致谢的地方,以及法律规定允许的之外,不包含其他人已经发表或撰写完成并以某种方式公开过的研究成果,也不包含为获得其他教育机构的学位或证书而作的材料其他同志对本研究所做的任何贡献均已在文中作了明确的说明并表示谢意本毕业设计(论文)成果是本人在江西师范大学读书期间在指导教师指导下取得的,成果归江西师范大学所有特此声明声明人(毕业设计(论文)作者)学号声明人(毕业设计(论文)作者)签名签名日期年月日摘要本文介绍了一个基于VC的趣味拼图游戏开发的全过程,MFC规范的出现使得我们开发VC游戏成为可能,今天我们要实现的是一个简单的拼图游戏这个拼图游戏是一个3*3的拼图,由9个随机分割打乱的小图片构成,其中置一格为空通过消息映射控制移动空框边的小图片来实现拼图,从游戏前得准备到主要类和设备接口的实现,最后运行、调试和打包关键词VC,拼图,MFC,游戏,随机分割打乱AbstractIntroducesajigsawpuzzlebasedonVCinterestdevelopmententireprocesstheemergenceofordinaryMFCstandardallowsustodevelopVCgamesbecomepossibletodaywearegoingtorealizeisthatasimplepuzzle.Thispuzzleisa3*3ofthejigsawpuzzledisruptedbyninerandomdivisionofthesmallpicturecompositionbuyacaseisempty.Bymovingtheemptyboxedgelittlepicturesfromgametoachievepuzzlesbeforethemainclassandtotherealizationofthedeviceinterfacefinallyrunningdebuggingandpackaged.Keywords:Visualc++PuzzleMfcGameSortingframe.目录TOC\o1-3\h\z\u摘要IAbstractII1引言
11.1拼图游戏介绍
11.2开发背景
11.3开发环境及运行环境
11.
3.1开发环境
11.
3.2运行环境12设计要求
22.1基本要求
22.2创新要求23方案设计
23.1设计原理
23.2设计流程图44系统开发工具和技术
44.1VisualC++的工作环境
44.2位图显示
54.3消息映射过程65九宫格拼图游戏设计
75.1九宫格界面设计
75.2MFC中图像的显示
95.3图片处理与游戏规则
125.4对话框菜单编辑
175.
4.1菜单编辑
175.
4.2菜单命令的消息映射
175.5游戏结束标志196编译运行并测试217总结22参考文献23致谢241引言
1.1拼图游戏介绍拼图游戏是广受欢迎的一种智力游戏,它的变化多端,难度不一,让人百玩不厌个性化的拼图,拼凑的不仅仅是一张照片,而是一个故事,一段回忆,一段温情每一片的单片都有它自己的位置,就像每段回忆都有它的故事,你要将它放在专属的地方,放对了就慢慢丰富起来,放错了就无法完整你可以把你记忆中最深的片段,可以是你挚爱的照片,可以是你最难忘的一瞬留念,做成拼图,在思念的季节里一一拼起,把片片散落的记忆重新组合,用指尖温习甜蜜,把心湖里最美丽的涟漪荡漾开来拼图游戏不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性它既有简单易学的特性,为人民群众所喜闻乐见
1.2开发背景当前网络上流传的拼图游戏功能并不尽善尽美,其中最主要的问题就是很多软件在图片打乱上面处理的比较模糊,也有采用固定的打乱方法;而且有时出现有一对板块是对调的无法完成游戏,所以我决定开发一个随机打乱图片可以完成的拼图游戏系统
1.3开发环境及运行环境
1.
3.1开发环境开发这款拼图游戏需要的电脑配置如下1.Intel®Pentium®
42.0GHz,512M内存,80G硬盘2.Microsoft®Windows™2000Professional3.Microsoft®VisualC++
6.04.Microsoft®DeveloperNetworkforVisualStudio.NET20035.VisualAssistX
10.
1.
1301.
01.
3.2运行环境运行这款拼图游戏所需要的电脑配置如下1.Intel®Pentium®2及以上处理器,32M以上内存,4G以上硬盘2.Microsoft®Windows™9X/NT操作系统
3.800*600或以上的屏幕分辨率2设计要求
2.1基本要求打开任意一个图片,随机打乱图片,然后可以利用鼠标拖动空缺模块附近的模块与空缺模块进行交换,直到拼合出原来图像,具体要求如下
1.可以打开并显示Jpg,bmp,gif等任意格式图片
2.游戏开始之后,可以随机打乱图片3用户可以拖动模块进行交换,直到拼合出原图像4系统能够自动检查到用户拼合出原图像并提示用户
2.2创新要求在基本要求达到后,进行创新设计,创新方向提示如下1.实现每次打乱图片都可以完成2.可以提供原图像以供参考,并且加入边框3.添加用户拼合出原图像的步数3方案设计
3.1设计原理这款拼图游戏是以对话框的形式显现出来,详细设计步骤如下
1.通过拼图边框的绘制及控件的添加来实现对话框的布局设置
2.将拼图边框划分成九个小格,每个小格分别用0~8来标识,通过转换设备环境内存的图片数据划分成9份分别显示到这九个小格子里,其中标识为8的小格不显示图片
3.构建函数实现小图片间的随机打乱,打乱过程确保可以完成拼图
4.通过消息映射来实现鼠标左键来控制格子的移动
5.通过图片的标识数字与0~8比较,如果都一样则完成拼图,否则继续拼图设计效果如图所示756283410图a开始随机打乱标示数图b开始界面123456780图c完成标示数图d完成界面
3.2设计流程图图1设计流程图4系统开发工具和技术
4.1VisualC++的工作环境如果安装了VisualC++
6.0,用鼠标单击“开始”,在“程序”组中选择“MicrosoftVisualC++
6.0”工作组,在“MicrosoftVisual
6.0”项上双击,即进入VisualC++
6.0的集成环境在这一集成环境中,最重要的是工程(Project)的概念“工程”是相关源文件的集合包括源文件、头文件及资源定义文件Visual平台是自动化很高的编译系统,它能自动处理源文件间的关系,利用其内在推理规则来激活编译器、连接器和资源编译器,最后生成可执行文件【1】图2VisualC++集成环境界面
4.2位图显示CBitmap类封装了Windows的GDI位图操作所需的大部分函数其中,LoadBitmap是位图的初始化函数,其函数原型如下BOOLLoadBitmap(LPCTSTRlpszResourceName);BOOLLoadBitmap(UINTnIDResource);由于位图不能直接显示在实际设备中,因此对于GDI位图的显示则必须遵循下列步骤【2】
1.调用CBitmap类的CreateBitmap、CreateCompatibleBitmap以及CreateBitmapIndirect函数创建一个适当的位图对象
2.调用CDCCreateCompatibleDC函数创建一个内存设备环境,以便位图在内存中保存下来,并与指定设备(窗口设备)环境相兼容
3.调用CDCSelectObject函数将位图对象选入内存设备环境中
4.调用CDCBitBlt或CDCStretchBlt函数将位图复制到实际设备环境中
4.3消息映射过程例如,若向CSCPortTestView中添加OnInitalUpdate的消息映射,则可按下列步骤进行【3】
1.按Ctrl+W快捷键打开“MFCClassWizard”对话框
2.在Classname组合框中,将类名选定为CSCPortTestView此时,ObjectIDs和Messages列表内容会相应地改变
3.在ObjectIDs列表框中选定CSCPortTestView,而在Messages列表中选定OnInitalUpdate消息
4.双击Messages列表中的OnInitalUpdate消息或单击“AddFunction”按钮,都会在CSCPortTestView类中添加该消息的映射函数OnInitalUpdate,同时在Memberfunctions列表中显示这一消息映射函数和被映射的消息,如图所示图3消息映射添加
5.单击“EditCode”按钮后,“ClassWizard”对话框退出,并转向文档窗口,定位到OnInitalUpdate函数源代码处
6.添加代码
7.这样就完成了一个消息映射过程5九宫格拼图游戏设计
5.1九宫格界面设计
1.对话框的创建对话框编辑器最初打开时,控件工具栏是随之出现的,利用此工具栏中的各个按钮可以顺利完成控件的添加在对话框中添加一个控件的方法有下列几种【2】
1.1在控件工具栏中单击某控件,此时的鼠标箭头在对话框内变成“十”字形状;在对话框指定位置单击鼠标左键,则此控件被添加到对话框的相应位置,再拖动刚添加控件的选择框可改变其大小和位置
1.2在控件工具栏中单击某按钮,此时的鼠标箭头对话框内变成“十”字形状;在指定位置处单击鼠标左键不放,拖动鼠标至相应位置,释放鼠标键
1.3用鼠标左键单击控件工具栏中的某个控件,并按住鼠标左键不放;在拖动鼠标到对话框的指定位置的过程中,用户会看到一个虚线框,下面带有改控件的标记;释放鼠标左键,新添加的控件立即出现在对话框中
2.拼图边框的创建对话框创建之后,设计划分为九个小格的边框,代码如下【5】VoidCMyDlg::ShowCDC*dc{CDCtdc;CBitmapbmp*obmp;图e控件bmp.LoadBitmapIDB_BG;//调入位图资源tdc.CreateCompatibleDCdc;//定义并创建一个内存设备环境obmp=tdc.SelectObjectbmp;//将位图调入内存设备环境中CDCbmpdcpicdc;bmpdc.CreateCompatibleDCdc;picdc.CreateCompatibleDCdc;CBitmapbbmp*obbmp;CBitmappbmp*opbmp;bbmp.CreateCompatibleBitmapdc360360;pbmp.CreateCompatibleBitmapdc360/size360/size;obbmp=bmpdc.SelectObjectbbmp;opbmp=picdc.SelectObjectpbmp;pic.RenderbmpdcCRect00360360;//读取IDB_BG图像文件分为九格inti;ifborder{//画边框CPenpen*open;pen.CreatePenPS_SOLID1RGB969696;open=bmpdc.SelectObjectpen;fori=0;isize;i++{bmpdc.MoveTo0360/size*i+1-1;bmpdc.LineTo359360/size*i+1-1;bmpdc.MoveTo360/size*i+1-10;bmpdc.LineTo360/size*i+1-1359;}bmpdc.SelectObjectopen;pen.DeleteObject;pen.CreatePenPS_SOLID1RGB240240240;open=bmpdc.SelectObjectpen;fori=0;isize;i++{bmpdc.MoveTo0360/size*i;bmpdc.LineTo359360/size*i;bmpdc.MoveTo360/size*i0;bmpdc.LineTo360/size*i359;}bmpdc.SelectObjectopen;}obmp=tdc.SelectObjectbmp;fori=0;isize;i++{forintj=0;jsize;j++{intn=spell.GetPicij;ifn!=size*size-1{picdc.BitBlt-n%size*360/size-n/size*360/size360360bmpdc00SRCCOPY;tdc.BitBlt360/size*i+2360/size*j+2360/size360/sizepicdc00SRCCOPY;}}}dc-BitBlt1010364364tdc00SRCCOPY;//将位图复制到设备环境中编辑运行此段代码,主要实现以下功能
1、加载IDB_BG位图选入内存设备环境中
2、将位图IDB_BG复制到实际的设备环境中
3、选中Board,规划出九宫格边框
4、将位图划分成9份分别复制到实际的设备环境中,最后一格为空格
3.对话框初始显示CMyDlg::CMyDlgCWnd*pParent/*=NULL*/:CDialogCMyDlg::IDDpParent{//{{AFX_DATA_INITCMyDlg//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp-LoadIconIDR_MAINFRAME;begin=TRUE;step=0;pic.LoadIDR_PIC_VIEW;size=3;border=TRUE;}编辑运行此段代码,主要实现以下功能构建函数实现九宫格对话框的初始显示,包含了对话框的图标、3*3默认模式、图片的加载、step置0等
5.2MFC中图像的显示MFC中实现图片的显示需要先加载图片资源,然后通过设备环境的转换来实现编程步骤如下
1.启动VisualC++
6.0,生成一个基于对话框结构的应用程序,对话框的基类为CMyDlg,同时将该程序命名为九宫格拼图;2.在应用程序的项目代码中添加CPicture类;3.使用资源编辑器向程序中添加Jepg等格式的图像资源;4.添加代码,编译运行程序程序代码classCPicture{public:CPicture;//构造函数~CPicture;//虚构函数BOOLLoadUINTnIDRes;//从资源中加载,寻找“IMAGE”类型BOOLLoadLPCTSTRpszPathName;//从路径名中加载BOOLLoadCFilefile;//从File文件中加载BOOLLoadCArchivear;//从创建文档的流中加载BOOLLoadIStream*pstm;//从流中加载(IStream)BOOLRenderCDC*pDCCRectrc=CRect0000LPCRECTprcMFBounds=NULLconst;//转换设备环境,为IPicture而将其转换为HIMETRICCSizeGetImageSizeCDC*pDC=NULLconst;//获得像素形式的图像尺寸将图片放在资源管理器中的“IMAGE”类型中,然后在成员函数BOOLLoadUINTnIDRes添加代码使得存储器可以加载资源BOOLCPicture::LoadUINTnIDRes{HINSTANCEhInst=AfxGetResourceHandle;HRSRChRsrc=::FindResourcehInstMAKEINTRESOURCEnIDResIMAGE;//从资源文件中加载名为“IMAGE”的资源if!hRsrcreturnFALSE;DWORDlen=SizeofResourcehInsthRsrc;BYTE*lpRsrc=BYTE*LoadResourcehInsthRsrc;//将资源加载进存储器if!lpRsrcreturnFALSE;CMemFilefilelpRsrclen;//创建储存文件并加载它BOOLbRet=Loadfile;FreeResourcehRsrc;GlobalFreelpRsrc;returnbRet;}由于加载的图片无法在MFC中正常显示,所以要通过转换设备环境才可以显示MFC将设备描述表(DC)和图形设备接口封装在一起,建立了设备描述类——CDC类,CDC类是直接从CObject派生处理,CDC类主要功能是定义设备描述表对象,提供在显示器上绘图和打印机上图形输出的方法CDC类提供的方法可以实现GDI的所有图形输出包括控制着色和调色板、处理坐标映射和装换、绘制多边形和区域、使用不同字体绘制正文、处理元文件等等BOOLCPicture::RenderCDC*pDCCRectrcLPCRECTprcMFBoundsconst{//转换设备环境ASSERTpDC;ifrc.IsRectNull{CSizesz=GetImageSizepDC;rc.right=sz.cx;rc.bottom=sz.cy;}longhmWidthhmHeight;GetHIMETRICSizehmWidthhmHeight;m_spIPicture-Render*pDCrc.leftrc.toprc.Widthrc.Height0hmHeighthmWidth-hmHeightprcMFBounds;returnTRUE;}CSizeCPicture::GetImageSizeCDC*pDCconst{//获得像素形式的图像尺寸if!m_spIPicturereturnCSize00;LONGhmWidthhmHeight;m_spIPicture-get_WidthhmWidth;m_spIPicture-get_HeighthmHeight;CSizeszhmWidthhmHeight;ifpDC==NULL{CWindowDCdcNULL;dc.HIMETRICtoDPsz;}else{pDC-HIMETRICtoDPsz;}returnsz;}通过这样的设备环境转换,就可以实现在MFC应用程序中显示JPG/GIF图像文件
5.3图片处理与游戏规则设计一些成员函数来实现图片的操作处理,例如图片的获取,打乱与移动等图4CSpell类成员函数关系其中成员函数CSpell负责构造N*N的框架,包含了一个空缺模块blank;~CSpell负责删除该框架;ReCreate负责重新构造框架;GetPic负责划分图片到该框架中;Move负责拼图相关操作;Init负责随机打乱框架CSpell::CSpellintwinthintbxintby{width=w;height=h;bx=bx=ww-1:bx00:bx;by=by=hh-1:by00:by;blank=by*w+bx;map=newint[w*h];forinti=0;iw*h;i++{map[i]=i;}Init;}编辑运行此段代码,主要实现以下功能构造函数负责创建W*H的内存数据并显示初始九宫图(其中带有一个空模板),并用0~8标记各模板CSpell::~CSpell{delete[]map;}编辑运行此段代码,主要实现以下功能虚构函数负责删除申请的内存数据intCSpell::GetPicintwinth{ifw0||w=width||h0||h=height{return-1;}returnmap[h*width+w];}编辑运行此段代码,主要实现以下功能当用户点击获取到某个位置的图片时,返回标记模板的数字,否则返回-1intCSpell::Moveintwinth{ifw0||w=width||h0||h=height{return-10;}ifblank==map[h*width+w]{return-1;}ifblank==GetPicw-1h{intt=map[h*width+w];map[h*width+w]=map[h*width+w-1];map[h*width+w-1]=t;}elseifblank==GetPicw+1h{intt=map[h*width+w];map[h*width+w]=map[h*width+w+1];map[h*width+w+1]=t;}elseifblank==GetPicwh-1{intt=map[h*width+w];map[h*width+w]=map[h-1*width+w];map[h-1*width+w]=t;}elseifblank==GetPicwh+1{intt=map[h*width+w];map[h*width+w]=map[h+1*width+w];map[h+1*width+w]=t;}else{return-1;}forinti=0;iLENGTH;i++{ifi!=map[i]{return0;}}return1;}编辑运行此段代码,主要实现以下功能
1.没有选中的模板无法移动
2.空模板无法移动
3.模板旁(上下左右)有空模板可以进行移动
4.标记模板的数字如果和0~8一一对应时无法继续移动,否则可以继续移动voidCSpell::Init{srandtimeNULL;intabt;inti=0d=1;whilei++LENGTH||d==0{//交换至少单位数量次do{a=rand%LENGTH;b=rand%LENGTH;}whilea==b;t=map[a];map[a]=map[b];map[b]=t;//计算距离,必须要模为1有解ifblank==map[a]||blank==map[b]{intw=a%width-b%width+1;inth=a/width-b/width;w=w0-w:w;h=h0-h:h;d=d+w+h%2;}else{d=!d;}}}编辑运行此段代码,主要实现以下功能Init()函数负责图片的打乱,9个模板其中选中2个进行交换,如果选中的2个模板其中有一个是空模板的话,则计算空模板与它交换的模板之间的距离(x上的差值dx与y上的差值dy)如果(dx+dy+1)%2=0的话则有解,否则无解,无法拼合出原图随机打乱流程图图5随机打乱流程图
5.4对话框菜单编辑
5.
4.1菜单编辑对话框菜单编辑步骤如下
1.单击资源管理中的菜单Menu文件夹前的”+”号,双击菜单编辑资源
2.在顶层菜单的第一项,VisualC++为用户留出了一个空位置,用于输入新的顶层菜单项在菜单的空位置上双击鼠标左键,出现菜单栏的属性对话框,在标题栏中输入”游戏G”并且设置顶层菜单项的默认属性定义为“弹出”(下拉)菜单
3.鼠标单击“游戏”下拉子菜单的空位置,出现属性对话框,在标题栏中输入“3*3
(3)”,依此建立子菜单“4*4
(4)”、“重新开始(B)”和“退出(E)”
4.依此建立下拉菜单“图片(P)”和其子菜单“选择图片S”及“拼块边框B”
5.
4.2菜单命令的消息映射菜单栏、工具栏的按钮以及快捷键等用户对象都能产生WM_COMMAND命令消息命令消息能够被文档类、应用类、窗口类以及视图类等多种对象接收、处理,且用户可以用ClassWizard对命令消息进行映射建立映射步骤如下
1.选择“查看”→“建立类向导”菜单命令或按Ctrl+W快捷键,则出现MFCClassWizard对话框,并自动切换到MessageMaps页面从“Classname”列表中选择CMyDlg,在IDS列表中选择ID_MENU_BEGIN然后在Messages框中选择COMMAND消息
2.单击“AddFunction”按钮或双击COMMAND消息,出现“AddMemberFunction”对话框以输入成员函数的名称系统默认的函数名为OnMenuBegin该函数是对菜单项ID_MENU_BEGIN的映射也就是说,当应用程序运行后,用户选择“测试”→“对话框”菜单时,该函数OnMenuBegin被调用,执行函数中的代码
3.单击“OK”按钮,在ClassWizard的“Memberfunction”列表中将列出新增加的成员函数悬着此函数,单击“EditCode”按钮,在此成员函数中添加下列代码voidCMyDlg::OnMenuBegin{spell.Init;step=0;SetDlgItemTextIDC_STEP0;begin=TRUE;InvalidateFALSE;}这样就完成了菜单命令(重新开始)的消息映射,依此方法完成其它菜单命令的消息映射通过消息映射就完成了游戏开始的功能,其中包含了图片的随机打乱、步数置为0并显示在对话框中、可以开始玩的标志(begin=TRUE)voidCMyDlg::OnMenu3{if3!=size{CMenu*pMenu=this-GetMenu;pMenu-CheckMenuItemID_MENU_3MF_CHECKED;pMenu-CheckMenuItemID_MENU_4MF_UNCHECKED;spell.ReCreate3322;size=3;OnMenuBegin;}}编辑运行此段代码,主要实现以下功能当用户选择菜单3*3时,确保3*3被选中,4*4不被选中,创建3*3的九宫图之后调用OnMenuBegin函数,实行打乱等操作voidCMyDlg::OnMenuOpen{//打开文件CFileDialogfiletrueNULLNULLOFN_OVERWRITEPROMPT图片文件|*.bmp;*.jpg;*.gif|*.jpg|*.jpg|*.bmp|*.bmp|*.gif|*.gif|NULL;iffile.DoModal==IDOK{pic.Loadfile.GetPathName;InvalidateFALSE;}}编辑运行此段代码,主要实现以下功能实行资源管理器外的图片调用,完成了用户随意选择图片玩的功能
5.5游戏结束标志voidCMyDlg::OnLButtonDownUINTnFlagsCPointpoint{//TODO:Addyourmessagehandlercodehereand/orcalldefaultifbegin{ifpoint.x12point.x372point.y12point.y372{intw=point.x-12/360/size;inth=point.y-12/360/size;intr=spell.Movewh;InvalidateFALSE;if0=r{step++;CStringstr;str.Format%dstep;SetDlgItemTextIDC_STEPstr;}if1==r{MessageBox完成!;begin=FALSE;}}}CDialog::OnLButtonDownnFlagspoint;}游戏结束标志流程图图6结束标志流程图编辑运行此段代码,主要实现以下功能这里定义了一个循环,游戏开始后,可以移动模板,如果判断游戏结束的标志r不等于1的话则可以继续玩,同时标志用户移动次数的step逐次增加1;如果r=1的话则弹出一个对话框显示用户完成拼图游戏6编译运行并测试编译并运行后,出现“九宫格拼图”如图7所示图7开始界面完成拼图后,弹出”完成”对话框如图8所示图8完成界面7总结经过这几个月的开发研究,虽然曾经出现了很多的编辑错误,但是最终还是完成了此次的论文,从中学到了许多的知识例如VC的MFC窗口编程设计、图片的显示等方面,基本上满足了设计所提出的要求,能够编辑出九宫格拼图游戏,解决了图片固定打乱的缺点,但在一些方面上还存在着不足之处,例如,拼完的图片总是缺一块,给人的感觉就不是很完整可能是自己的能力不足吧,自此我还应该加强自己的窗口编程设计能力,使其变得完善参考文献
[1]张荣梅,梁晓林.VisualC++实用教程[M].冶金工业出版社
2004.
[2]郑阿奇.VisualC++实用教程(第2版)[M].电子工业出版社
2003.
[3]孙鑫余安萍.VC++深入详解[M].电子工业出版社
2006.
[4]陈清华等.VisualC++课程设计案例精选与编程指导[C].东南大学出版社
2004.
[5]严华峰等.VISUALC++课程设计案例精编第二版[A].中国水利水电出版社
2004.
[6]周鸣扬.VISUALC++界面编程技术[M].北京希望电子
2003.
[7]荣钦科技.VisualC++游戏编程基础[M].电子工业出版社
2004.
[8]罗伟坚.VisualC++经典游戏程序设计[Z].人民邮电出版社
2006.
[9]荣钦科技.VISUALC++游戏设计[M].北京科海电子出版社
2005.
[10]MSDNforVisualStudio
6.
0.
[11]设计模式——可复用面向对象软件的基础[A],ErichGamma/RichardHelm/RalphJohnson/JohnVlissides著,李英军/蔡敏/刘建东等译.机械工业出版社.
[12]深入浅出MFC(第2版)[EB/OL].侯俊杰著.华中科技大学出版社.ABeginnersGuidetoPointers,AndrewPeace
[13]C++编程思想[J].BruceEckel著.刘宗田/邢大红/孙慧杰等译.机械工业出版社.
[14]21天学通C++[M].JesseLiberty著.康博创作室译.人民邮电出版社.
[15]VisualC++实用教材(第3版)[M].丁有和/郑进/周怡君编著.
[16]J.SemkeJ.MahdaviandM.MathisAutomaticTCPBufferTunung[J]inproceedingsofACMSIGCOMM’98pp.315-323august
1998.
[17]SrinivasanKeshavaControl-TheoreticApproachtoFlowControl[J]InProceedingsofACMSIGCOMM
1991.致谢在这次毕业论文中同学之间互相帮助,对于即将面临毕业的我们来说是一次很有意义的经历大学四年都一起走过了在最后我们可以聚在一起讨论学习研究专业问题进而更好的了解我们每个人的兴趣之所在明确我们的人生理想进而在今后的生活和工作中更好的发挥自己的优势学好自己的专业成为一个对于社会有用的人,感谢我的同学们,在我绝望的时候给了我希望,没有他们,论文就不会有这么好,甚至无法完成在此更要感谢我的老师xxx,是你的细心指导和关怀,使我能够顺利的完成毕业论文老师对于学生总是默默的付出尽管很多时候我们自己并没有特别重视论文的写作没有按时完成老师的任务但是老师还是能够主动的和我们联系告诉我们应该怎么样修改论文怎么样按要求完成论文相关的工作老师的检查总是很仔细的,可以认真的看论文的每一个细小的格式要求,认真的读每一个同学的论文,然后提出最中肯的意见,这是很难得的绘制边框加载图片随机打乱图片拼图移动步数加一判断是否与原图一样完成拼图结束开始YNCspell成员函数CSpell~CSpellReCreateGetPicMoveInit构建随机因子time初始化i和dIlength||d==0取2个小于length的随机数判断2随机数是否相等随机数标志的模块进行交换如果标志的其中一个模块为空模块w=a%width-b%width+1h=a/width-b/widthw与h分别取非负整数d=d+w+h%2D=!d开始结束NYYNYN判断鼠标是否点在分割模块内移动鼠标左键点到的那个模块判断标志r是否大于等于0步数加一文本显示Step判断R是否等于1提示完成N开始结束NYYYN。