第二:制作菜单,完善功能
源码下载地址:http://download.youkuaiyun.com/source/3503308
一:选关功能

自己要为游戏设置一些关数,而且难度应该递增,这个选关的对话框需要新建,主要是返回一个表示关数的数值
void CPushBoxDlg::OnChose() { CchoseDlg dlg; dlg.m_chose_hard=num_hard; dlg.DoModal(); UpdateData(true); UpdateData(false); num_hard=dlg.m_chose_hard; CPushBoxDlg::Initi_State(ii,jj); saved=false; CPushBoxDlg::OnPaint(); }
二:重来:玩家可能由于失误,需要重玩,这时只需要将个区域的状态回到初始状态就可以了
void CPushBoxDlg::OnAgain() { flag=false; if(saved==false) { CPushBoxDlg::Initi_State(ii,jj); text.Format("你的位置 X: %d Y: %d",sitey,sitex); m_StatusBar.SetPaneText(0,text); text.Format("你走的步骤数: %d",num_step); m_StatusBar.SetPaneText(1,text); //RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); } else { for(int i=0;i<=7;i++) for(int j=0;j<=7;j++) { if(save[i][j]==3) { sitex=i; sitey=j; } face[i][j]=save[i][j]; } text.Format("你的位置 X: %d Y: %d",sitey,sitex); m_StatusBar.SetPaneText(0,text); num_step=0; text.Format("你走的步骤数: %d",num_step); } CPushBoxDlg::OnPaint(); }三:设置状态栏:
这需要定义一个状态栏类,用于显示玩家的位置和已经走过的步数
CStatusBar m_StatusBar;//创建一个状态栏对象
BOOL bRet=m_StatusBar.Create(this); UINT nIDS[2]={1100,1101}; bRet=m_StatusBar.SetIndicators(nIDS,2); m_StatusBar.SetPaneInfo(0,nIDS[0],SBPS_NORMAL,300); m_StatusBar.SetPaneInfo(1,nIDS[1],SBPS_NORMAL,300); text.Format("你的位置 X: %d Y: %d",sitex,sitey); m_StatusBar.SetPaneText(0,text); text.Format("你走的步骤数: %d",num_step); m_StatusBar.SetPaneText(1,text); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
当人的位置发生改变时都需要刷新状态
四:游戏界面的背景颜色:不同的玩家对颜色有不同的喜好,因此可以让玩家自己挑选

着只需要一个颜色对话框就能可以实现,
先定义一个COLORREF m_bgcolor;//背景颜色;
主要代码:
void CPushBoxDlg::OnBgcolor() { CColorDialog dlg; if(dlg.DoModal()==IDOK) m_bgcolor=dlg.m_cc.rgbResult; CPushBoxDlg::OnPaint(); }
五:录像功能:有时候玩家希望能记录自己的路线,方便自己下一步有所思路

其实这也比较简单,只需要设置一数组记录玩家所走过的路程,当然为了减少内存,也可以动态开辟空间
struct video record[MAX];
void CPushBoxDlg::OnBeginVideo() { video_flag=1; num_video=-1; //MessageBox("begin"); //head=p=NULL; } void CPushBoxDlg::OnStopVideo() { video_flag=0; //MessageBox("stop"); //p=NULL; } void CPushBoxDlg::OnPlay() { //MessageBox("play"); if(num_video>=0) { //CPushBoxDlg::Initi_State(); //MessageBox("KKK"); for(int i=0;i<=num_video;i++) { CPushBoxDlg::video_to_face(&record[i],ii,jj); CPushBoxDlg::draw_game_face(dc); Sleep(200); } CPushBoxDlg::video_to_face(&record[MAX-1]); CPushBoxDlg::OnPaint(); } else return; }
六:帮助:对于游戏,应该有所说明,包括玩法和注意事项等
所以我写了html文件,为了在程序打开这个html文件,需要一个函数
void CPushBoxDlg::OnRelate() { ShellExecute(this->m_hWnd,"open","ReadMe.html",NULL,NULL,SW_SHOW); //打开 文件1.txt }
其中html文件时比较方便学的
本文详细介绍了游戏开发过程中的关键功能实现,包括选关、重玩、状态栏、背景颜色设置、录像功能以及帮助文档等内容。同时,文章还提供了一个简易的html文件,用于展示游戏的说明和注意事项。
239

被折叠的 条评论
为什么被折叠?



