首页 > 作文

拼图游戏

更新时间: 阅读: 评论:0

杨太尉-窗边的小豆豆思维导图

拼图游戏
2023年3月17日发(作者:鸡肾)

《数据结构与算法分析》

1

基于MFC的拼图游戏设计

宋富冉操梦雅

摘要:拼图游戏是一个广受欢迎的智力游戏,按人数参与个数可分为单人游戏和

多人游戏,按拼图规则它可分为摆放式和挪动式两种类型。本设计是基于Visual

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

本游戏主要包括游戏界面设计、难易度选择、游戏图片选择、游戏系统设计、判

断拼图是否成功等几个模块,程序设计中应用了类、数组、鼠标响应、菜单消息

响应等元素和语句。此游戏的设计主要以学习和熟悉VisualC++6.0和MFC软

件开发为主要目的。

关键词:拼图;VisualC++6.0;MFC

1.任务描述

1.1拼图简单介绍

拼图游戏是广受欢迎的一种智力游戏,它的变化多端,难度不一,让人百玩

不厌。

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

温情。每一片的单片都有属于它自己的位置,就像每段回忆都有属于它的故事,

你要将它放在专属的地方。你可以把你记忆中最深刻的片段,你挚爱的照片,你

最难忘的一瞬间,做成拼图,在你想起的时候一一拼起。

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

的动手能力和我们的洞察能力。

1.2基本设计要求

《数据结构与算法分析》

2

我们设计的拼图游戏是一个具有简单的系统界面,操作简单易行,上手快,

适用于广大用户的小游戏。此游戏分散的小图片的移动规则是小图片会朝着空位

置方向移动,玩家在界面上先通过鼠标点击“游戏图片选择”选择要拼的图片,

然后通过鼠标左键点击要移动的小图片,小图片会自动移动到原来没有图片的位

置,移动时,预备移动的图片旁边必须要有可供移动的位置,直到拼合出原来的

图片,并且成功拼成图片后会出现“看来这对你来说太简单了,挑战更高难度吧!”

一句话。具体设计要求如下:

(1)可以打开并显示.bmp任意大小的图片;

(2)游戏开始之后,可以自动随机打乱图片;

(3)用户可以点击方块进行上下左右的交换,直到拼出原图片;

(4)系统能够自动检测用户是否拼出原图,并提示用户拼图是否成功。

2.系统需求分析

2.1功能需求分析

(1)用户能用鼠标控制系统界面上各个菜单选项的选择。

(2)游戏难度选择功能:用户可以通过参数设置自定义选择游戏的难度,系统

开始默认的是9块,如果用户想挑战更困难的,可以在设置参数设置中进行相应

的参数修改,比如4*4=16块、5*5=25块、3*4=12块等。

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

播放的音乐也是用户根据喜好自己来选择的。

(4)游戏原图显示功能:当玩家在玩游戏过程中忘记各个小图片的整体排列位

置时能够进入原图显示功能查看完整图片,参考原图进行拼图游戏,以提高游戏

的趣味性。

(5)游戏判断功能:用户通过移动每一小块图片,最终拼出和导入的图片一致

时,系统则会判断你拼图成功,并提示“看来这对你来说太简单了,挑战更高难

度吧!”这句话。

《数据结构与算法分析》

3

图2-1系统功能模块

2.2界面设计需求

该拼图游戏是以对话框的形式显示出来,顶部为标题栏,接着是菜单栏,

菜单栏上是五个菜单选项:主菜单、游戏图像选择、参数设置、原图设置、帮助。

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

2.3系统其他需求分析

(1)性能要求

可靠性强、实时性好

(2)设计约束

开发工具:VC++6.0、运行环境:windows2000以上

(3)软硬件要求

在windows平台上运行、应用程序用C++语言开发、客户端使用普通个人

计算机。

《数据结构与算法分析》

4

2.4系统流程图

开始

选择图片

游戏开始

移动图片

游戏停止

拼图成功

结束

图2-2系统流程图

流程图说明:

(1)启动程序,进入游戏界面。

(2)用户根据自己的想法和意愿选择游戏图片,并进行游戏参数设置后,程序

有相应的操作,对应程序根据参数设置进行图片的分割,游戏区域均分,将分割

后的子图片填充到游戏区域相等面积的方格内,并记录初始各个子图片的原始坐

标,然后随机走动200步。(这个过程执行只在一瞬间即可完成)显示出游戏界

面。

(3)用户开始游戏,使用鼠标或者键盘上下左右键来进行拼图,在此过程中,

《数据结构与算法分析》

5

程序会实时刷新画面,并全盘对比各个子图片的坐标和原始坐标是否相同,若相

同则游戏结束,系统提示拼图成功,若不同,则用户继续游戏,继续移动子图片,

判断程序循环执行,直到拼图成功。

(4)若在游戏过程当中,想要参照原图,则点击原图显示菜单选项,原图像显

示子程序被调用,并将原图像显示在游戏区域一侧,供游戏者参考,不想参考可

再次点击原图显示不显示原图像。

(5)参数设置选项,可以进行拼图的难度设置,即图块的行列数设置,以及游

戏背景音乐的设置,在此过程中程序将执行相应的子函数进行响应用户操作。

(6)中途可以随时重新开始新游戏,退出游戏,参数设置,原图显示与否,调

换游戏图片等,不必关闭程序重新打开。并且确保每次拼图必定会成功,不会出

现拼图不成功的情况。

3.函数功能设置

(1)intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)

{//切换"文本提示形式"菜单选项为"图像提示形式"

HMENUhmenu;

hmenu=::GetMenu(m_hWnd);//获取主菜单控制权

//获取图片选取菜单选项所在的子菜单栏目的控制权

hmenu=::GetSubMenu(hmenu,1);

char*hbmp;

UINTITEM_ID;

HINSTANCEhinst=AfxGetInstanceHandle();//获取实例的句柄

//载入相关的缩小预览型的位图图片,并进行相关选项的属性修改

hbmp=(char*)LoadBitmap(hinst,MAKEINTRESOURCE(IDB_PIC1));

//图片的载入

ITEM_ID=::GetMenuItemID(hmenu,1);//相应菜单选项的ID获取

//属性修改--切换成图像显示方式

::ModifyMenu(hmenu,1,MF_BYPOSITION|MF_BITMAP,ITEM_ID,hbmp);

《数据结构与算法分析》

6

}

(2)BOOLCMainFrame::OnCreateClient(LPCREATESTRUCT,CCreateContext*

pContext){//创建1行2列的分裂视图,设定出游戏界面(参见图3-1)

m_Static(this,1,2);

m_View(0,0,RUNTIME_CLASS(CSFRCMYPINTUView

),CSize(300,0),pContext);

m_View(0,1,RUNTIME_CLASS(COrgView),CSize(0,0),

pContext);

m_ivePane(0,0);//将第一个作为当前激活状态的视图}

图3-1游戏初始界面

(3)BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs)

{//设置对应图3-1的初始界面窗口显示的大小

=600;

=400;

=WS_OVERLAPPED|WS_CAPTION|FWS_ADDTOTITLE

|WS_THICKFRAME|WS_SYSMENU;

yle=WS_EX_ACCEPTFILES;

}

(4)voidCOrgView::OnDraw(CDC*pDC)

{//源图像绘制函数

CSFRCMYPINTUDoc*pDoc=(CSFRCMYPINTUDoc*)GetDocument()

《数据结构与算法分析》

7

CDCmemdc;//使用内存DC

CompatibleDC(pDC);

Object(pDoc->m_bitmap);

pDC->BitBlt(0,0,pDoc->m_bmpWidth,pDoc->m_bmpHeight,

&memdc,0,0,SRCCOPY);//整幅图拷贝}

voidCOrgView::DrawAll(CDC*pDC)

{//是否显示原图像的响应函数}

(5)voidCOrgView::OnUpdat家庭食谱 e(CView*pSender,LPARAMlHint,CObject*

pHint){//更新界面函数}

(6)v怎么学好普通话 oidCSetitingDlg::OK()

{//确定并保存参设设置的所有更改(参见图3-2)}

(7)BOOLCSetitingDlg::OnInitDialog()

{CDialog::OnInitDialog();//初始化各个游戏参数(部分可参见图3-2)

m_iCols=AfxGetApp()->GetProfileInt(_T("游戏参数"),_T("hnums"),3);

m_iRows=AfxGetApp()->GetProfileInt(_T("游戏参数"),_T("vnums"),3);}

(8)voidCSetitingDlg::OnOpen()

{//选取播放背景音乐时,打开相关文件函数(参见图3-2)

CStringstrFilter="MP3文件(*.mp3)|*.mp3";

CFileDialogfileopen(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN

OVERWRITEPROMPT,strFilter);if(l()==IDOK)

m_strMusicFileName=hName();UpdateData(FALSE);}

(9)voidCSFRCMYPINTUDoc::GameMixMove()

{//游戏初始化,随机打乱图像,随机走300步}

(10)voidCSFRCMYPINTUDoc::GameMove(UINTnChar)

{//根据按键输入指示命令作移动操作函数,与(9)协作}

(11)BOOLCSFRCMYPINTUDoc::IsWin(void)

{//检测是否拼图成功函数//胜利的检测方法是判断地图的所有方块的内部

数据是否全为其行列数,是则表示排列好,胜利}

(12)voidCSFRCMYPINTUDoc::MapInitial()

《数据结构与算法分析》

8

{//图片数据的初始化函数

inti,j;//将原来各个位置的数据填好其所在的行ID,列ID

for(i=1;i<=hnums;i++)

{for(j=1;j<=vnums;j++){m_map[i][j].row=i;m_map[i][j].col=j;}}}

(13)voidCSFRCMYPINTUDoc::OnKeyDown(UINTnChar,UINTnRepCnt,

UINTnFlags){//处理键盘事件函数}

(14)voidCSFRCMYPINTUDoc::OnMenuOrgPicShow()

{//修改窗口是否显示源图的菜单消息处理函数

m_bShowOrgPic=!m_bShowOrgPic;//修改原来的显示

SetWindow_N_ViewSize();//重设窗口大小与视图分布}

(15)voidCSFRCMYPINTUDoc::OnNewGame()

{//开始新游戏函数(参见图3-1)

SetWindow_N_ViewSize();

MapInitial();//地图的初始化

m_=hnums;//打乱前将空白块起点放在右下角

m_=vnums;

GameMixMove();//打乱地图(随机移动200步)

UpdateAllViews(NULL);//更新视图}

(16)voidCSFRCMYPINTUDoc::OnPic1()

{//游戏图片选取函数(参见图3-1)

PicSelect(IDB_BITMAP1);}

(17)voidCSFRCMYPINTUDoc::OnSet()

{//游戏参数设置响应函数(参见图3-2)}

图3-2参数设置对话框界面

《数据结构与算法分析》

9

(18)voidCSFRCMYPINTUDoc::OnUrpic()

{//用户选择路径自定义图片函数}

(19)voidCSFRCMYPINTUDoc::SetWindow_N_ViewSize()

{//设置开始游戏后游戏窗口界面大小函数}

(20)voidCSFRCMYPINTUView::OnLButtonDown(UINTnFlags,CPointpoint)

{//处理鼠标左键消息函数

CSFRCMYPINTUDoc*pDoc=(CSFRCMYPINTUDoc*)GetDocument();

posDownPos;//计算出鼠标点击所在的cell方块位置

=point.x/pDoc->m_cellWidth+1;

=point.y/pDoc->m_cellHeight+1;

//根据当前空白方块位置将鼠标点击其相邻方块的情况

if(abs(-pDoc->m_)+abs(-pDoc->m_b

)==1){if(-pDoc->m_==1)

{pDoc->OnKeyDown(VK_RIGHT,0,0);}

………………(中间略去)………………………….

CView::OnLButtonDown(nFlags,point);}

(21)voidCSFRCMYPINTUView::DrawGameBlocks(CDC*pDC)

{//绘制游戏所有当前散乱的方块}

(22)voidCSFRCMYPINTUView::DrawCellBlock(CDC*pDC,posdestPos,pos

srcPos){//根据源方块的位置和目标放开位置(当前方块实际位置)}

(23)voidCSFRCMYPINTUDoc::PlayMusic()

{//播放背景音乐函数//说明:利用MCI机制控制媒体设备放音}

4.数据结构的设计

在函数功能的设计中我们提到了相关的结构体的定义,在这里给

出重要的结构框架定义:

(1)structpos//方块位置结构

《数据结构与算法分析》

10

{

introw;//图像所在的行坐标

intcol;//图像所在的列坐标

};

(2)classOrgView:publicCView//原图像显示类

{

voidCOrgView::DrawAll(CDC*pDC){}

voidCOrgView::OnDr走成语 aw(CDC*pDC){}

…….

};

(3)classCSetitingDlg:publicCDialog//参数和音乐播放等对话

框对应设置处理类

{

voidCSetitingDlg::OK(){}

voidCSetitingDlg::OnOpen(){}

BOOLCSetitingDlg::OnInitDialog(){}

…….

};

(4)classCSFRCMYPINTUApp:publicCWinApp//程序基础类

{

……

};

(5)classCSFRCMYPINTUDoc:publicCDocument//程序基础文档类

{

BOOLCSFRCMYPINTUDoc::IsWin(void){}

《数据结构与算法分析》

11

voidCSFRCMYPINTUDoc::OnKeyDown(UINTnChar,UINT

nRepCnt,UINTnFlags){}

voidCSFRCMYPINTUDoc::OnNewGame(){}

voidCSFRCMYPINTUDoc::OnPic1(){}

voidCSFRCMYPINTUDoc::OnSet(){}

voidCSFRCMYPINTUDoc::OnUrpic(){}

voidCSFRCMYPINTUDoc::PlayMusic(){}

…….

};

(6)classCSFRCMYPINTUView:publicCView//程序基础视图类

{

voidCSFRCMYPINTUView::DrawLines(CDC*pDC){}

voidCSFRCMYPINTUView::DrawBlankBlock(CDC*pDC){}

voidCSFRCMYPINTUView::DrawCellBlock(CDC*pDC,pos

destPos,possrcPos){}

voidCSFRCMYPINTUView::OnLButtonDown(UINTnFlags,

CPointpoint){}

voidCSFRCMYPINTUView::OnDraw(CDC*pDC){}

……

};

(7)classCAboutDlg:publicCDialog//程序基础对话框类

{

…….

};

(8)classCMainFrame:publicCFrameWnd//程序主函数类

{

intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){}

《数据结构与算法分析》

12

BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){}

……

};

5.详细设计

5.1初始窗体设计

利用MFCAppWinzard生成五子棋游戏应用程序框架具体步骤如下:

1.执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,

转到Projects选项卡,选择MFCAppWizard(exe)选项,然后在Projectname

文本框中输入SFRCMYPINTU。Lacation文本框是指项目的本地路径。

图5-1新建MFCAppWinzard工程文件

2.单击按钮,弹出MFCAppWinzard_Step1对话框。如图所示。

《数据结构与算法分析》

13

图5-2选择单文档模式

3.单击完成按钮,则建立一个单文档应用框架。

5.2菜单设计

1.添加菜单项

《数据结构与算法分析》

14

图5-3添加menu菜单

2.给对应的菜单项添加响应函数

(1)单击菜单右键,选择ClassWizard,在Classname:中选择在哪个类中

添加响应函数,在Messages:中选择COMMAND,选中完成后,点击AddFunction,

然后可以点击EditCode考研英语学习方法 编辑响应函数,比如游戏图片选择菜单下的自定义图片

和系统图片菜单添加响应函数如下图所示:

图5-4添加菜单响应函数

其响应函数代码如下:

《数据结构与算法分析》

15

1)系统图片

voidCSFRCMYPINTUDoc::OnPic1()

{

//TODO:Addyourcommandhandlercodehere

PicSelect(IDB_BITMAP1);

}

2)自定义图片

voidCSFRCMYPINTUDoc::OnUrpic()

{//用文件对话框的方式选择播放的音乐

CStringfilter="BMP文件(*.bmp)|*.bmp";

CFileDialogpicfile(TRUE,NULL,NU养生豆浆 LL,

OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,filter);

if(l()==IDOK)

{//确定后读入位图并开始游戏

HBITMAPhbitmap;//按照尺寸m_BMP_WIDTH,m_BMP_HEIGHT读

//入位图文件(根据源图比例放大与缩小)

hbitmap=(HBITMAP)::LoadImage(NULL,

hName(),IMAGE_BITMAP,

m_BMP_WIDTH,m_BMP_HEIGHT+180,LR_LOADFROMFILE);

m_();//弃旧选新

m_(hbitmap);

CSFRCMYPINTUDoc::OnNewGame();//开始游戏}

}

(2)操作菜单分为:原图显示、参数设置、开始新游戏和退出四个子菜单

(3)帮助菜单:一个关于拼图游戏的菜单,其响应函数如下:

voidCSFRCMYPINTUApp::OnAppAbout()

{

CAboutDlgaboutDlg;

l();

}

《数据结构与算法分析》

16

以上添加函数等功能,同类功能添加,操作步骤完全一样,不再重复。

5.3游戏设计

5.3.1参数设置设计

首先SFRCMYPINTUresources在引用一个对话框资源Dialog,并添加一个对

话框类,将所需要设置的参数等对话命令符等添加完毕,并设置好相应的名称及

ID号。也为此参数设置添加了一个类,其功能是对对话框所列参数更改等设置

相应函数命令的处理。添加设置结果如下图所示:

图5-6游戏参数设置画面

然后,为这个对话框的弹出指令添加相应的响应函数如下:

voidCSFRCMYPI眼皮痛 NTUDoc::OnSet()

{CSetitingDlgt;

if(l()==IDOK)

{

hnums=t.m_iCols;

vnums=t.m_iRows;

m_bMusic=t.m_bMusic;

m_szMusicFileName=t.m_strMusicFileName;

…………………

OnNewGame();}}

《数据结构与算法分析》

17

5.3.2原图显示设计

在这一部分设计中,首先为其独自添加一个类,来进行相应的函数处理,

其功能设置只包含一个,原图像的显示与否:子函数包含两个void

COrgView::OnDraw(CDC*pDC)与voidCOrgView::OnUpdate(CView*pSender,

LPARAMlHint,CObject*pHint),其显示结果效果图如下图所示:

图5-7游戏原图显示与否效果图

《数据结构与算法分析》

18

5.3.3游戏图片绘制设计

在此部分,初始状态是将整幅图片绘制显示在游戏区域,并将其根据参数设

置等大小划分游戏图片块,并将其初始坐标利用二维数组m_map[i][j].保存下

来。然后才去绘制空白块,覆盖初始右下角的原始游戏图块,即用空白块代替最

右下角图片块,然后随机移动空白块与游戏图片块的交换,也就是初始化游戏,

实现打乱的功能。

另外,本人采用的是缓存绘制,只进行初始化图片坐标的保存,在游戏过程

中利用缓存存储各个子游戏块的坐标。最后判断拼图是否成功时,再将其缓存坐

标与原始坐标相比较,判断是否拼图成功。

其绘制代码如下:

voidCSFRCMYPINTUView::OnDraw(CDC*pDC)

{

//a.获取文档数据控制权

CSFRCMYPINTUDoc*pDoc=(CSFRCMYPINTUDoc*)GetDocument();

//b.使用内存设备环境memDC

CDCmemDC;//与内存环境关联的内存位图memBmp

CompatibleDC(pDC);

CBitmapmemBmp;

CompatibleBitmap(pDC,

pDoc->m_bmpWidth,pDoc->m_bmpHeight);

Object(&memBmp);

//c.将图像绘制到内存位图memBmp中

//1.绘制游戏所有当前散乱的方块

DrawGameBlocks(&memDC);

//2.绘制空白方块

DrawBlankBlock(&memDC);

//3.绘制边界间隔线条

DrawLines(&memDC);

《数据结构与算法分析》

19

//d.整幅图从内存memBmp拷贝到屏幕

pDC->BitBlt(0,0,pDoc->m_bmpWidth,pDoc->m_bmpHeight,

&memDC,0,0,SRCCOPY);

}

5.4判断胜负设计

胜负判断实际上是根据当前空白快的情况来判断胜负的,这也是为什么添加

voidCSFRCMYPINTUDoc::OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)的原

因。实际上判断只需要空白块的位置是否与原始位置相同,若相同则全局判断其

他图片块是否与初始位置坐标相符合,若相符合则判断拼图成功,否则拼图不成

功,游戏继续。其判断胜负代码如下:

BOOLCSFRCMYPINTUDoc::IsWin(void)

{

inti,j;

//胜利的检测方法是判断地图的所有方块的内部

//数据是否全为其行列数,是则表示排列好,胜利

if(i!=m_||j!=m_)

for(i=1;i<=hnums;i++)

{

for(j=1;j<=vnums;j++)

{

if(m_map[i][j].row!=i||m_map[i][j].col!=j)

returnFALSE;

}

}

returnTRUE;

}

拼图成功后的结果截图如下所示:

《数据结构与算法分析》

20

图5-83*3的拼图成功画面

5.5移动图片的鼠标键盘响应设计

按照预先设定的方案,采用鼠标和键盘方向键来移动图块,进行拼图游戏操

作,点击鼠标左键选择相应的图块与相邻的图块进行交换,完成游戏(按压键盘

方向键也是一样的作用)。因此,必须为鼠标添加鼠标左键单击的鼠标和键盘方

向键的消息处理函数,步骤如下:

(1)右击CLM_FiveChessView类,调用添加消息处理函数的对话框,选择

AddwindowsMessageHandler

(2)添加消息处理函数WM_LBUTTONDOWN和WM_KEYDOWN这两个消息处理

函数。然后点击EditExisiting退出对话框。并添加消息处理函数代码。如下图所

示:

《数据结构与算法分析》

21

图5-9添加Windows消息/事件

《数据结构与算法分析》

22

5.6调试与运行

编译程序:鼠标点击build—>Rebuildall。编译若出现错误提示,则根据提示

修改程序,直至编译无误。然后运行。得到的结果如下:

(1)初始化界面

图5-10初始化界面

(2)游戏界面

图5-11游戏界面

《数据结构与算法分析》

23

6.界面设计

初步设想界面采用两个界面形式,可考虑添加背景,一边显示拼图游戏区,

另外一边显示原图像。(参见图3-1)有关于窗口的大小与界面的分布情况,经

过调节实践,最终确定初始窗口的尺寸定为长600个单位,宽则为400个单位为

比较合适的尺寸,看上去相对视觉效果还是比较舒服的。

此外,在界面上只包含三个菜单选项,分别为:文件、游戏图片选择、帮助。

在文件下面还有相应的子菜单,而游戏图片下则为图形提示形式的供游戏选择的

图片选项,在此共设置五幅图片,最后一个为作者本人图像,其他的则是网络图

片。而且第一个选项为自定义图片菜单选项。

原图像的显示菜单选项功能描述:点击“原图显示”菜单选项,显示则前面

会出现一个“√”,再点击则不显示原图则前面没有“√”,而此时原图显示区域

也将隐藏,只显示游戏区域,而且保证无论游戏难度如何变化,即行列数划分多

少,游戏区域总的面积大小将一直保持不变。效果图如下图3-3所示:

《数据结构与算法分析》

24

图3-3原图显示效果图

在菜单栏显示各个游戏操作功能菜单选项,其中包含相应的下拉菜单选项,

即游戏相关的一些用户操作选项。样式图如下图3-4所示:(以作者图像为例)

图3-4游戏界面完整效果图

7.总结

本作品是一个益智游戏程序系统,通过将图片按照一定的形式保存成图片提

示的形式,呈献给游戏玩家,此图片我们前期采用图片处理,将相应的图片处理

成本人需求的尺寸和大小,并重新命名并将其格式进行了需求性的修改。主要设

计的工作可概括如下:

1.在初期我们认真地对游戏的整个用户需求以及系统所要做的工作等进行

深刻的分析,创作了优良的游戏开发方案和系统架构,并且在参考前人的作品基

础上进行了大胆的改进和创新,比如:避免掉游戏无法完成的情况和原图显示的

情况,详细地设计了有关于拼图游戏的等级设置,背景音乐选取播放设置,游戏

区域和窗口设计以及自定义游戏图片的设计等。

2.完成了基本的游戏需求,开始游戏,游戏图片选择,游戏完成判别,游

《数据结构与算法分析》

25

戏参数设置,游戏原图像显示与否,退出游戏,游戏背景音乐选择与播放等。

3.在以上整个开发过程中,我们遇到很多问题和麻烦,经过各方询问,探

索,并且借鉴前人的成功案例以及求助同学老师等,慢慢的解决问题,发现新问

题,在解决问题等往复循环的过程以后,我们学习到很多,也积累很多程序开发

的经验和教训,比如有些参数设置必须明确其含义,让人一看便能猜到其所具备

的功能或者将执行的指令等是什么?而不能含糊的胡乱定义,这样不仅会让开发

者难以理解和记忆,而且也会让后来阅读者更加迷茫而不知所措。

另外,很多编程时的习惯培养是很重要的,对一个人编写程序的效率高低等

有很大影响,良好的科学的编程习惯对以后的发展和个人编程水平的提高具有极

大的帮助。比如:按照一定的功能设置顺序而来,首先将最基本的所有需求全部

完成,并且编译成功而不出现问题在进行附加功能的编写和设计。否则,胡乱添

加而无头绪,只会让自己的程序编写混乱,编译出错而找不到错误源头在何处。

而且编写程序要写一部编译完成一步,保证每一步都不出问题,再往下进行。否

则当我们将整个程序全部编写完毕,再进行编译,改错,修改等等工作,那样必

将耗费数倍的精力和时间,导致效率低下以及人力物力精力的白白浪费和损耗

等。当我们自己完完全全的做完一件事情,我们也会收获巨大的信心,有时候绝

对不能遇到问题就想着走捷径,这样不仅会让我们身心思想俱疲,不能很快的进

步,也会给我们后面的学习工作等留下巨大的隐患。不论次作业和项目等是大是

小,是难是易,绝对不能不假思索的去完成任何项目和任务。

本次课程作业,本小组收获巨大,为以后的学习和类似于本课程的工作等都

产生了很大的影响,提供了很多可供参考的黄金经验。

《数据结构与算法分析》

26

参考文献:

[1]明日科技,VisualC++程序开发范例宝典,人民邮电出版社,2007.07

[2]谭浩强,C++程序设计,清华大学出版社,2011.08

[3]Lippman,SB.,C++Primer(中文版),电子工业出版社,2013.09

本文发布于:2023-03-17 03:48:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/a7597784839dd08ec4e1e0641931b924.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:拼图游戏.doc

本文 PDF 下载地址:拼图游戏.pdf

下一篇:返回列表
标签:拼图游戏
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图