利用c++开发的一款小游戏开发报告.docx
- 文档编号:14782976
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:15
- 大小:27.47KB
利用c++开发的一款小游戏开发报告.docx
《利用c++开发的一款小游戏开发报告.docx》由会员分享,可在线阅读,更多相关《利用c++开发的一款小游戏开发报告.docx(15页珍藏版)》请在冰点文库上搜索。
利用c++开发的一款小游戏开发报告
开发报告
MICROSOFT基础类库:
tiger项目概述:
应用程序向导已为您创建了这个tiger应用程序。
此应用程序不仅演示Microsoft基础类的基本使用方法,还可作为您编写应用程序的起点。
本文件概要介绍组成tiger1应用程序的每个文件的内容。
这是使用应用程序向导生成的VC++项目的主项目文件。
它包含生成该文件的VisualC++的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
这是应用程序的主要头文件。
它包括其他项目特定的头文件(包括,并声明Ctiger1App应用程序类。
这是包含应用程序类Ctiger1App的主要应用程序源文件。
这是程序使用的所有MicrosoftWindows资源的列表。
它包括RES子目录中存储的图标、位图和光标。
此文件可以直接在MicrosoftVisualC++中进行编辑。
项目资源位于这是用作应用程序图标的图标文件。
此图标包括在主要资源文件中。
此文件包含不在MicrosoftVisualC++中进行编辑的资源。
您应该将不可由资源编辑器编辑的所有资源放在此文件中。
对于主框架窗口:
项目包含标准MFC界面。
这些文件包含框架类CMainFrame,该类派生自CFrameWnd并控制所有SDI框架功能。
此位图文件用于为工具栏创建平铺图像。
初始工具栏和状态栏在CMainFrame类中构
Ctiger1Doc类。
编辑这些文件可以添加特殊文档数据并可实现文件保存和加载(通过
Ctiger1Doc:
:
Serialize)。
,-文档的视图这些文件包含CtigerlView类。
CtigerlView对象用于
查看Ctiger1Doc对象。
其他功能:
ActiveX控件
应用程序包括对使用ActiveX控件的支持。
打印及打印预览支持应用程序向导已通过从MFC库调用CView类中的成员函数,生成了用于处理打印、打印设置和打印预览命令的代码。
其他标准文件:
,这些文件用于生成名为的预编译头(PCH)文件和名为的预编译类型文件。
这是标准头文件,它定义新的资源ID。
MicrosoftVisualC++读取并更新此文件。
应用程序清单文件供WindowsXP用来描述应用程序对特定版本并行程序集的依赖性。
加载程序使用此信息从程序集缓存加载适当的程序集或从应用程序加载私有信息。
应用
程序清单可能为了重新分发而作为与应用程序可执行文件安装在相同文件夹中的外部.manifest文件包括,也可能以资源的形式包括在该可执行文件中。
其他注释:
应用程序向导使用“TODO:
”指示应添加或自定义的源代码部分。
如果应用程序在共享的DLL中使用MFC,则需要重新发布这些MFCDLL如果应用程序所用的语言与操作系统
的当前区域设置不同,则还需要重新发布对应的本地化资源。
有关这两个主题的更多信息,请参见MSDN文档中有关RedistributingVisualC++applications(重新发布VisualC++应用程序)的章节。
游戏执行程序
//:
Ctiger1View类的实现//
#include""#include""
#include""
#include""
intmmcol;
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
//宏变量:
白色和黑色
#defineWHITERGB(255,255,255)
#defineBLACKRGB(0,0,0)
#defineBLUERGB(0,0,255)
//Ctiger1View
IMPLEMENT_DYNCREATE(Ctiger1View,CView)
BEGIN_MESSAGE_MAP(Ctiger1View,CView)
//标准打印命令
ON_COMMAND(ID_FILE_PRINT,CView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView:
:
OnFilePrintPreview)
ON_WM_CREATE()
ON_WM_KEYUP()
ON_WM_TIMER()
ON_BN_CLICKED(0xffe1,OnStartBtn)
END_MESSAGE_MAP()
//Ctiger1View构造/析构
Ctiger1View:
:
Ctiger1View()
//TODO:
在此处添加构造代码
}
Ctiger1View:
:
~Ctiger1View()
{
}
BOOLCtiger1View:
:
PreCreateWindow(CREATESTRUCT&cs){
//TODO:
在此处通过修改
//CREATESTRUCT(来修改窗口类或样式
returnCView:
:
PreCreateWindow(cs);
}
//Ctiger1View绘制
voidCtiger1View:
:
OnDraw(CDC*pDC)
{
Ctiger1Do(*pDo(=GetDo(ument();
ASSERT_VALID(pDo();
if(!
pDo()
return;
//TODO:
在此处为本机数据添加绘制代码
inti;
//CBrush*oldBrush=
pDC->Sele(tObje(t(bla(kBrush);
CRe(tre(t;
GetClientRe(t(&re(t);
pDC->Re(tangle(re(t);
pDC->Sele(tObje(t(grayBrush);
pDC->Re(tangle(m_iStartX,m_iStartY,m_iStartX+m_iLarge*m_iCol,m_iStartY
+m_iLarge*m_iRow);
//pDC->Rectangle(10,10,10+301,10+200);
pDC->SelectObject(blueBrush);
//CPen*oldPen=
pDC->SelectObject(blackPen);
//画网格线
if
(1)
{
//画横线
for(i=0;i { pDC->MoveTo(m_iStartX,m_iStartX+i*m_iLarge); pDC->LineTo(m_iStartX+m_iLarge*m_iCol,m_iStartX+i*m_iLarge); } //画竖线 for(i=0;i { pDC->MoveTo(m_iStartY+i*m_iLarge,m_iStartY); pDC->LineTo(m_iStartY+i*m_iLarge,m_iStartY+m_iLarge*m_iRow); } } } //Ctiger1View打印 BOOLCtiger1View: : OnPreparePrinting(CPrintInfo*pInfo) { //默认准备 returnDoPreparePrinting(pInfo); voidCtiger1View: : OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { //TODO: 添加额外的打印前进行的初始化过程 } voidCtiger1View: : OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { //TODO: 添加打印后进行的清理过程 } //Ctiger1View诊断 #ifdef_DEBUG voidCtiger1View: : AssertValid()const { CView: : AssertValid(); } voidCtiger1View: : Dump(CDumpContext&dc)const { CView: : Dump(dc); } Ctiger1Doc*Ctiger1View: : GetDocument()const//非调试版本是内联的 { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(Ctiger1Doc))); return(Ctiger1Doc*)m_pDocument; } #endif//_DEBUG //Ctiger1View消息处理程序 intCtiger1View: : OnCreate(LPCREATESTRUCTlpCreateStruct) if(CView: : OnCreate(lpCreateStruct)==-1) return-1; whitePen=newCPen(PS_SOLID,1,WHITE);blackPen=newCPen(PS_SOLID,1,BLACK);grayBrush=newCBrush(RGB(0,255,255));blueBrush=newCBrush(BLUE); blackBrush=newCBrush(BLACK); //左上角X,Y坐标 m_iStartX=10; m_iStartY=10; //缺省方块大小为m_iLarge个象素m_iLarge=30; m_iRow=10; m_iCol=10; m_turn=0; ani_count=3; //pDataBit1->LoadBitmaps(IDB_BITMAP1);two2one=false; three2two=false; one2three=false; report=false; IsStart=false; srand((unsigned)time(NULL)); SetTimer(1,200,NULL);m_posX[0]=rand()%m_iCol;m_posX[1]=rand()%m_iCol; m_posX[2]=rand()%m_iCol; m_posY[1]=rand()%m_iRow; m_posY[2]=rand()%m_iRow; m_posY[0]=rand()%m_iRow; CBitmapButton*pDataBit1=newCBitmapButton; CBitmapButton*pDataBit2=newCBitmapButton; CBitmapButton*pDataBit3=newCBitmapButton; CButton*pStart=newCButton; CEdit*p_ColEdit=newCEdit; CEdit*p_RowEdit=newCEdit; pDataBit1->Create(”老虎”,WS_VISIBLE|WS_CHILD,CRect(m」StartX+m」Large*m_posX[0],m_iStartY+m_iLarge*m_posY[0],m_iStartX+m_iLarge*m_posX[0]+m_iLarge,m_iStartY+m_iL arge*m_posY[0]+m_iLarge),this,0XFFF1); pDataBit2->Create("鸡”,WS_VISIBLE|WS_CHILD,CRect(m」StartX+m」Large*m_posX[1],m_iStartY+m_iLarge*m_posY[1],m_iStartX+m_iLarge*m_posX[1]+m_iLarge,m_iStartY+m_iL arge*m_posY[1]+m_iLarge),this,0XFFF2); pDataBit3->Create(”棒子”,WS_VISIBLE|WS_CHILD,CRect(m」StartX+m」Large*m_posX[2],m_iStartY+m_iLarge*m_posY[2],m_iStartX+m_iLarge*m_posX[2]+m_iLarge,m_iStartY+m_iL arge*m_posY[2]+m_iLarge),this,0XFFF3); pStart->Create("开始”,WS_VISIBLE|WS_CHILD,CRect(m」StartX+m」Large*m_iCol+50, m_iStartY+50,m_iStartX+m_iLarge*m_iCol+120,m_iStartY+100),this,0Xffe1); p_ColEdit->Create(ES_LEFT|WS_VISIBLE|WS_CHILD,CRect(m_iStartX+m_iLarge*m_iCol+50, m_iStartY+150,m_iStartX+m_iLarge*m_iCol+120,m_iStartY+180),this,IDC_iCol); p_RowEdit->Create(ES_LEFT WS_VISIBLE|WS_CHILD,CRect(m_iStartX+m_iLarge*m_iCol+50, m_iStartY+200,m_iStartX+m_iLarge*m_iCol+120,m_iStartY+230),this,IDC_iRow); /*GetDlgItem(IDC_iCol)->SetDlgItemInt(m_iCol); GetDlgItem(IDC_iCol)->SetDlgItemInt(m_iRow);*/ SetDlgItemInt(IDC_iCol,m_iCol); SetDlgItemInt(IDC_iRow,m_iRow); return0; } voidCtiger1View: : OnKeyUp(UINTnChar,UINTnRepCnt,UINTnFlags) { CView: : OnKeyUp(nChar,nRepCnt,nFlags); } voidCtiger1View: : OnTimer(UINT_PTRnIDEvent) { //TODO: 在此添加消息处理程序代码和/或调用默认值 boolm_isOK; intpos_tmp; intpos_tmpy; m_isOK=false; while(! m_isOK&&! report&&IsStart) { if(1==m_turn) { switch(rand()%4) { case0: m_isOK=true; break; case1: if(m_posY[m_turn] m_isOK=true; break; case2: if(m_posX[m_turn]>0)m_posX[m_turn]-=1; m_isOK=true; break; case3: if(m_posY[m_turn]>0)m_posY[m_turn]-=1; m_isOK=true; break; } } if(0==m_turn) { switch(rand()%4) { case0: if(pos_tmp m_isOK=true; } break; case1: pos_tmp=m_posY[m_turn]+rand()%3+1; if(pos_tmp { m_posY[m_turn]=pos_tmp; m_isOK=true; } break; case2: pos_tmp=m_posX[m_turn]-(rand()%3+1); if(pos_tmp>=0) { m_posX[m_turn]=pos_tmp; m_isOK=true; } break; case3: pos_tmp=m_posY[m_turn]-(rand()%3+1); if(pos_tmp>=0) { m_isOK=true; break; } } if(2==m_turn) { switch(rand()%4) { case0: pos_tmp=m_posX[m_turn]+1+rand()%2;pos_tmpy=m_posY[m_turn]+1+rand()%2;if(pos_tmpy m_posX[m_turn]=pos_tmp;m_posY[m_turn]=pos_tmpy;m_isOK=true; } break; case1: pos_tmp=m_posX[m_turn]-(1+rand()%2);pos_tmpy=m_posY[m_turn]+1+rand()%2;if(pos_tmpy m_posY[m_turn]=pos_tmpy;m_isOK=true;} break; case2: pos_tmp=m_posX[m_turn]-(1+rand()%2); pos_tmpy=m_posY[m_turn]-(1+rand()%2); if(pos_tmpy>=0&&pos_tmp>=0) {m_posX[m_turn]=pos_tmp; m_posY[m_turn]=pos_tmpy; m_isOK=true;} break; case3: pos_tmp=m_posX[m_turn]+(1+rand()%2); pos_tmpy=m_posY[m_turn]-(1+rand()%2); if(pos_tmpy>=0&&pos_tmp {m_posX[m_turn]=pos_tmp; m_posY[m_turn]=pos_tmpy; m_isOK=true;} break;}}} GetDlgItem(0xfff1)->MoveWindow(CRect(m_iStartX+m_iLarge*m_posX[0], m_iStartY+m_iLarge*m_posY[0],m_iStartX+m_iLarge*m_posX[0]+m_iLarge,m_iStartY+m_iL arge*m_posY[0]+m_iLarge)); GetDlgItem(0xfff2)->MoveWindow(CRect(m_iStartX+m_iLarge*m_posX[1], m_iStartY+m_iLarge*m_posY[1],m_iStartX+m_iLarge*m_posX[1]+m_iLarge,m_iStartY+m_iL arge*m_posY[1]+m_iLarge)); GetDlgItem(0xfff3)->MoveWindow(CRect(m_iStartX+m_iLarge*m_posX[2], m_iStartY+m_iLarge*m_posY[2],m_iStartX+m_iLarge*m_posX[2]+m_iLarge,m_iStartY+m_iL arge*m_posY[2]+m_iLarge)); //重叠判断段 if(m_posX[0]==m_posX[1]&&m_posY[0]==m_posY[1]&&! two2one&&! one2three){ GetDlgItem(0xfff2)->ShowWindow(SW_HIDE); two2one=true; ani_count--; } if(m_posX[0]==m_posX[2]&&m_posY[0]==m_posY[2]&&! one2three&&! three2two){ GetDlgItem(0xfff1)->ShowWindow(SW_HIDE); one2three=true; ani_count--; } if(m_posX[1]==m_posX[2]&&m_posY[1]==m_posY[2]&&! three2two&&! two2one){ GetDlgItem(0xfff3)->ShowWindow(SW_HIDE); three2two=true; ani_count--; } if(ani_count<2) { KillTimer(nIDEvent); if(! report) { AfxMessageBox("游戏结束! ! ");report=true; m_turn++; m_turn%=3; CView: : OnTimer(nIDEvent); } voidCtiger1View: : OnStartBtn() { //MessageBox("哈! 你单击了动态按钮。 "); CStringStr_tmp; GetDlgItem(0xffe1)->GetWindowText(Str_tmp); if(Str_tmp=="开始") { GetDlgItem(0xffe1)->SetWindowText("暂停"); m_iCol=GetDlgItemInt(IDC_iCol);m_iRow=GetDlgItemInt(IDC_iRow);IsStart=true; Invalidate(); //UpdateWindow(); //TODO: 在此处为本机数据添加绘制代码 } if(Str_tmp=="暂停") { GetDlgItem(0xffe1)->SetWindowText("开始"); IsStart=false;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 c+ 开发 一款 小游戏 报告