ZsyYxView.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 4KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 3
    下载次数
  • 2010-04-12 19:25
    上传日期
有Visual C++编写的小游戏,龟兔赛跑,追上一只小乌龟就消失
ZsyYxView.rar
  • ZsyYxView.cpp
    13.9KB
内容介绍
// ZsyYxView.cpp : implementation of the CZsyYxView class // #include "stdafx.h" #include "ZsyYx.h" #include "ZsyYxDoc.h" #include "ZsyYxView.h" #include "SelectDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CZsyYxView IMPLEMENT_DYNCREATE(CZsyYxView, CView) BEGIN_MESSAGE_MAP(CZsyYxView, CView) //{{AFX_MSG_MAP(CZsyYxView) ON_WM_KEYDOWN() ON_COMMAND(ID_Restart, OnRestart) ON_COMMAND(ID_SELECT, OnSelect) ON_COMMAND(ID_Start, OnStart) ON_COMMAND(ID_Stop, OnStop) ON_WM_TIMER() ON_UPDATE_COMMAND_UI(ID_Start, OnUpdateStart) ON_UPDATE_COMMAND_UI(ID_Stop, OnUpdateStop) ON_WM_CREATE() //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CZsyYxView construction/destruction CZsyYxView::CZsyYxView() { // TODO: add construction code here //载入兔子和乌龟的位图资源 m_bmRabbit[0].LoadBitmap(IDB_RabbitUp); m_bmRabbit[1].LoadBitmap(IDB_RabbitDown); m_bmRabbit[2].LoadBitmap(IDB_RabbitLeft); m_bmRabbit[3].LoadBitmap(IDB_RabbitRight); m_bmTortoise[0].LoadBitmap(IDB_TortoiseUp); m_bmTortoise[1].LoadBitmap(IDB_TortoiseDown); m_bmTortoise[2].LoadBitmap(IDB_TortoiseLeft); m_bmTortoise[3].LoadBitmap(IDB_TortoiseRight); //计算兔子和乌龟位图的高和宽 BITMAP bmRabbit; m_bmRabbit[2].GetBitmap(&bmRabbit); m_nRabbitw=bmRabbit.bmWidth; m_nRabbith=bmRabbit.bmHeight; BITMAP bmTortoise[4]; m_bmTortoise[0].GetBitmap(&bmTortoise[0]); m_bmTortoise[1].GetBitmap(&bmTortoise[1]); m_bmTortoise[2].GetBitmap(&bmTortoise[2]); m_bmTortoise[3].GetBitmap(&bmTortoise[3]); m_nTortoisew=bmTortoise[0].bmWidth; m_nTortoiseh=bmTortoise[0].bmHeight; //场地矩形和乌龟数目设置 m_rectClient=CRect(20,20,380,380); m_nTortoise=TORTOISEMAX; StartFlag=-1; //计算兔子和乌龟位图的初时位置和运动方向 m_nRabbitx=m_rectClient.left+m_rectClient.Width()/2; m_nRabbity=m_rectClient.top+m_rectClient.Height()/2; m_rectRabbit=CRect(m_nRabbitx,m_nRabbity,m_nRabbitx+m_nRabbitw,m_nRabbity+m_nRabbith); m_nRabbitDirection=2; srand((unsigned)time(NULL)); for(int i=0;i<TORTOISEMAX;i++) { m_nTortoisex[i]=m_rectClient.left+rand()%(m_rectClient.Width()-m_nTortoisew); m_nTortoisey[i]=m_rectClient.top+rand()%(m_rectClient.Height()-m_nTortoiseh); m_rectTortoise[i]=CRect(m_nTortoisex[i],m_nTortoisey[i],m_nTortoisex[i]+m_nTortoisew,m_nTortoisey[i]+m_nTortoiseh); m_nTortoiseDirection[i]=rand()%4; m_bTortoiseLive[i]=TRUE; }/*FOR*/ //初始难度设为中 m_nDifficulty=1; m_timeWork=m_timeSet=20;//游戏时间20秒 m_nRabbitSpeed=5; m_nTortoiseSpeed=3; m_nWinFlag=-1; } CZsyYxView::~CZsyYxView() { } BOOL CZsyYxView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CZsyYxView drawing void CZsyYxView::OnDraw(CDC* pDC) { CZsyYxDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CBitmap m_bmp; m_bmp.LoadBitmap(IDB_BITMAP1); BITMAP bm; m_bmp.GetObject(sizeof(BITMAP),&bm); CDC dcMem; dcMem.CreateCompatibleDC(pDC); CBitmap*pOldbmp=dcMem.SelectObject(&m_bmp); pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY); dcMem.SelectObject(pOldbmp); // TODO: add draw code for native data here pDC->Rectangle(CRect(19,19,381,391)); //显示游戏状态 pDC->Rectangle(CRect(405,70,540,140)); CString strTime; CString strTortoise; strTime.Format("剩余时间: %2d:%2d:%2d",m_timeWork.GetHours(),m_timeWork.GetMinutes(),m_timeWork.GetSeconds()); strTortoise.Format("待抓乌龟:%3d",m_nTortoise); pDC->TextOut(410,80,strTime); pDC->TextOut(410,120,strTortoise); //显示兔子和乌龟 CDC memDC[TORTOISEMAX]; CDC memRabbitDC; CBitmap *pOldDC; memRabbitDC.CreateCompatibleDC(NULL); pOldDC=memRabbitDC.SelectObject(&m_bmRabbit[m_nRabbitDirection]); pDC->BitBlt(m_nRabbitx,m_nRabbity,m_nRabbitw,m_nRabbith,&memRabbitDC,0,0,SRCAND); memRabbitDC.SelectObject(pOldDC); //CRect r; //r.left=m_nRabbitx;r.top=m_nRabbity;r.right=r.left+m_nRabbitw;r.bottom=r.top+m_nRabbith; //DrawTransparentBitmap(pDC,m_bmRabbit[m_nRabbitDirection],r,RGB(255,255,255)); for(int i=0;i<TORTOISEMAX;i++) { if(m_bTortoiseLive[i]) { memDC[i].CreateCompatibleDC(NULL); pOldDC=memDC[i].SelectObject(&m_bmTortoise[m_nTortoiseDirection[i]]); pDC->BitBlt(m_nTortoisex[i],m_nTortoisey[i],m_nTortoisew,m_nTortoiseh,&memDC[i],0,0,SRCAND); memDC[i].SelectObject(pOldDC); }/*if*/ }/*for*/ //游戏结束 if(StartFlag==2) { pDC->TextOut(50,50,"Game Over!"); if(m_nWinFlag==0) { pDC->TextOut(50,100,"兔子一雪前耻!"); }/*if*/ if(m_nWinFlag==1) { pDC->TextOut(50,100,"乌龟仍是胜者!"); }/*if*/ m_nWinFlag=-1; }/*if*/ } ///////////////////////////////////////////////////////////////////////////// // CZsyYxView printing BOOL CZsyYxView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CZsyYxView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CZsyYxView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CZsyYxView diagnostics #ifdef _DEBUG void CZsyYxView::AssertValid() const { CView::AssertValid(); } void CZsyYxView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CZsyYxDoc* CZsyYxView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CZsyYxDoc))); return (CZsyYxDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CZsyYxView message handlers void CZsyYxView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default if(StartFlag==1) { //游戏开始时兔子才可以移动 InvalidateRect(m_rectRabbit,TRUE); switch(nChar) { case VK_UP: //向上移动 if(m_rectRabbit.top-m_nRabbitSpeed>m_rectClient.top) { m_rectRabbit.top-=m_nRabbitSpeed; m_rectRabbit.bottom-=m_nRabbitSpeed; m_nRabbity-=m_nRabbitSpeed; m_nRabbitDirection=0; }/*if*/ break; case VK_DOWN: //向下移动 if(m_rectRabbit.bottom-m_nRabbitSpeed<m_rectClient.bottom) { m_rectRabbit.top+=m_nRabbitSpeed; m_rectRabbit.bottom+=m_nRabbitSpeed; m_nRabbity+=m_nRabbitSpeed; m_nRabbitDirection=1; }/*if*/ break; case VK_LEFT: //向左移动 if(m_rectRabbit.left-m_nRabbitSpeed>m_rectClient.left) { m_rectRabbit.left-=m_nRabbitSpeed; m_rectRabbit.right-=m_nRabbitSpeed; m_nRabbitx-=m_nRabbitSpeed; m_nRabbitDirection=2; }/*if*/ break; case VK_RIGHT: //向右移动 if(m_rectRabbit.right+m_nRabbitSpeed<m_rectClient.right) { m_rectRabbit.left+=m_nRabbitSpeed; m_rectRabbit.right+=m_nRabbitSpeed; m_nRabbitx+=m_nRabbitSpeed; m_nRabbitDirection=3; }/*if*/ break; }/*switch*/ InvalidateRect(m_rectRabbit,FALSE); //判断兔子的移动后是否抓住乌龟 for(int i=0; i<TORTOISEMAX; i++) { if(m_bTortoiseLive[i] && (abs(m_nTortoisex[i]-m_nRabbitx)<m_nTortoisew) && (abs(m_nTortoisey[i]-m_nRabbity)<m_nTortoiseh)) { m_bTortoiseLive[i]=FALSE; m_nTortoise--; InvalidateRect(m_rectTortoise[i]); InvalidateRect(CRect(410,100,560,160)); }/*if*/ }/*for*/
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...