走迷宫算法mvc++6.0win32应用程序

  • K1_854962
    了解作者
  • 3.8MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-19 06:14
    上传日期
走迷宫算法,microsoft visual c++6.0 下win32窗口应用程序演示,实现走迷宫算的窗口界面化显示。
对你着迷.zip
  • 对你着迷
  • Debug
  • GameApp.obj
    14.4KB
  • Game.res
    32B
  • 对你着迷.pdb
    2.6MB
  • 对你着迷.ilk
    1.7MB
  • GameWnd.sbr
    0B
  • GameWnd.obj
    38.7KB
  • GameApp.sbr
    0B
  • vc60.idb
    129KB
  • 对你着迷.exe
    1.3MB
  • 对你着迷.pch
    3.6MB
  • vc60.pdb
    60KB
  • 对你着迷.bsc
    2.5MB
  • 3.3.bmp
    27.4KB
  • 1.4.bmp
    27.4KB
  • 2.4.bmp
    27.4KB
  • Game.rc
    1.4KB
  • 4.3.bmp
    27.4KB
  • 对你着迷.plg
    516B
  • GameWnd.h
    1.4KB
  • Game.clw
    415B
  • GameApp.h
    552B
  • 4.1.bmp
    27.4KB
  • 对你着迷.opt
    54.5KB
  • 3.2.bmp
    27.4KB
  • GameWnd.cpp
    11.8KB
  • 对你着迷.dsp
    4KB
  • 3.1.bmp
    27.4KB
  • 2.3.bmp
    27.4KB
  • 4.4.bmp
    27.4KB
  • 对你着迷.dsw
    541B
  • Game.aps
    16.1KB
  • resource.h
    408B
  • wall.bmp
    27.4KB
  • 2.2.bmp
    27.4KB
  • 2.1.bmp
    27.4KB
  • GameApp.cpp
    816B
  • 3.4.bmp
    27.4KB
  • 1.1.bmp
    27.4KB
  • 对你着迷.ncb
    49KB
  • 4.2.bmp
    27.4KB
  • 1.3.bmp
    27.4KB
  • Game.h
    19B
  • 1.2.bmp
    27.4KB
内容介绍
// GameWnd.cpp : implementation file // //#include "stdafx.h" #include "game.h" #include "GameWnd.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // GameWnd IMPLEMENT_DYNCREATE(GameWnd, CFrameWnd) int dir,index; int x,y; int maze[8][8]={ 1,1,1,1,1,1,2,1, 3,0,0,1,0,0,0,1, 1,1,0,1,0,1,1,1, 1,1,0,0,0,1,1,1, 1,1,1,1,0,1,1,1, 1,0,0,0,0,0,0,1, 1,0,1,1,1,1,0,1, 1,1,1,1,1,1,1,1 }; BOOL onstart=true; //int k,p; int m,n; struct list //存储迷宫寻路过程的链表 { int m; int n; int x; int y; struct list *next; struct list *back; CBitmap*bitmap; }; list*ptr,*preptr,*first; BOOL ongo=false; int number=0; GameWnd::GameWnd() //窗口构造函数 { Create(NULL,"暗里着迷",WS_OVERLAPPEDWINDOW,CRect(0,0,744,800)); //创建窗口函数 char ch[8]; for (int i=0;i<4;i++) { for (int j=0;j<4;j++) { sprintf(ch,"%d.%d.bmp",i+1,j+1); bitmap[i][j]=new CBitmap; bitmap[i][j]->m_hObject=LoadImage(NULL,ch,IMAGE_BITMAP,93,100,LR_LOADFROMFILE); } } mdc=new CDC; CClientDC dc(this); mdc->CreateCompatibleDC(&dc); mdc->SelectObject(bitmap[0][0]); for ( i=0;i<8;i++) { for (int j=0;j<8;j++) { if (maze[i][j]==2) { m=i; n=j; break; } } } wall=new CBitmap; wall->m_hObject=LoadImage(NULL,"wall.bmp",IMAGE_BITMAP,93,100,LR_LOADFROMFILE); x=n; y=m; ptr=(list*)malloc(sizeof(list)); ptr->m=m; ptr->n=n; ptr->x=x; ptr->y=y; ptr->bitmap=bitmap[0][0]; ptr->next=NULL; ptr->back=NULL; first=ptr; } GameWnd::~GameWnd() { } BEGIN_MESSAGE_MAP(GameWnd, CFrameWnd) //{{AFX_MSG_MAP(GameWnd) ON_WM_PAINT() ON_WM_CREATE() ON_WM_TIMER() ON_WM_KEYDOWN() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // GameWnd message handlers void GameWnd::OnPaint() //窗口重绘消息响应函数 { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CFrameWnd::OnPaint() for painting messages } int GameWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) //创建窗口显示之前的消息响应处理函数 { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here SetTimer(1,100,NULL); return 0; } void GameWnd::start() //迷宫主窗口界面的显示设计 { CClientDC dc(this); mdc->SelectObject(wall); for (int i=0;i<8;i++) { for (int j=0;j<8;j++) { if (maze[i][j]==1) { dc.BitBlt(j*93,i*100,93,100,mdc,0,0,SRCCOPY); } } } mdc->SelectObject(bitmap[0][0]); dc.BitBlt(x*93,y*100,93,100,mdc,0,0,SRCCOPY); onstart=false; } void GameWnd::OnTimer(UINT nIDEvent) //响应SetTimer(1,100,NULL); { // TODO: Add your message handler code here and/or call default if (onstart) { start(); //调用start()创建主窗口 } else { if(ongo) { go(); //调用go()显示寻找到的路径 } } CFrameWnd::OnTimer(nIDEvent); } void GameWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) //键盘虚键消息响应函数 { // TODO: Add your message handler code here and/or call default CClientDC dc(this); dc.BitBlt(x*93,y*100,93,100,mdc,0,0,WHITENESS); if(nChar==VK_RETURN) //当键盘按下 Enter 键 { //走迷宫 if(maze[y][x]==3) //当前节点是否是出口 { dc.TextOut(93,100,"找到出口"); //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; preptr=ptr; ptr->next->next=NULL; ptr=ptr->next; ptr->back=preptr; ongo=true; //找到出口,调用go()函数重走所寻找到的路线 return; } else { //下一个是否是出口 maze[y][x]=-4; //防止重走旧路 if(maze[y][x+1]==3) //向右走 { x=x+1; if (dir==2) { index++; if (index==4) { index=0; } } else { index=0; dir=2; } //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; preptr=ptr; ptr->next->next=NULL; ptr=ptr->next; ptr->back=preptr; } else if(maze[y+1][x]==3) //向下走 { y=y+1; if (dir==0) { index++; if (index==4) { index=0; } } else { index=0; dir=0; } //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; preptr=ptr; ptr->next->next=NULL; ptr=ptr->next; ptr->back=preptr; } else if(maze[y][x-1]==3) //向左走 { x=x-1; if (dir==1) { index++; if (index==4) { index=0; } } else { index=0; dir=1; } } else if(maze[y-1][x]==3) //向上走 { y=y-1; if (dir==3) { index++; if (index==4) { index=0; } } else { index=0; dir=3; } //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; preptr=ptr; ptr->next->next=NULL; ptr=ptr->next; ptr->back=preptr; } else { //寻找迷宫通路 maze[y][x]=-1; //防止重走旧路 if(maze[y][x+1]==0) //向右走 { x=x+1; if (dir==2) { index++; if (index==4) { index=0; } } else { index=0; dir=2; } //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; preptr=ptr; ptr->next->next=NULL; ptr=ptr->next; ptr->back=preptr; } else if(maze[y+1][x]==0) //向下走 { y=y+1; if (dir==0) { index++; if (index==4) { index=0; } } else { index=0; dir=0; } //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; preptr=ptr; ptr->next->next=NULL; ptr=ptr->next; ptr->back=preptr; } else if(maze[y][x-1]==0) //向左走 { x=x-1; if (dir==1) { index++; if (index==4) { index=0; } } else { index=0; dir=1; } //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; preptr=ptr; ptr->next->next=NULL; ptr=ptr->next; ptr->back=preptr; } else if(maze[y-1][x]==0) //向上走 { y=y-1; if (dir==3) { index++; if (index==4) { index=0; } } else { index=0; dir=3; } //新节点进入链表 ptr->next=(list*)malloc(sizeof(list)); ptr->next->m=m; ptr->next->n=n; ptr->next->x=x; ptr->next->y=y; ptr->next->bitmap=bitmap[dir][index]; pre
评论
    相关推荐
    • 微软MVC组件及源码
      微软MVC组件及源码-----微软MVC组件及源码
    • MVCSample
      简单的一个模板程序,可以看看.
    • Microsoft.Web.Mvc.FixedDisplayModes.dll
      Microsoft.Web.Mvc.FixedDisplayModes.dll Microsoft.Web.Mvc.FixedDisplayModes.dll
    • MVC Music Store
      mvc学习类源代码,仔细研究,对于程序开发入门非常有好处。有一定的参考价值。
    • 微软MVC4 课程PPT
      非常好的关于MVC4的介绍,微软把它与之前的技术进行了横向的比较。
    • MVC3.0相关核心DLL集合
      解决以下错误:“未能加载文件或程序集...该下载文件,包含了缺失引用的MVC3.0所有相关核心DLL集合:System.Web.Routing、System.Web.Extensions、System.Web.Mvc、System.Web.Abstractions、Microsoft.Web.Mvc 等等。
    • mvc1.0开放源码---microsoft
      Microsoft下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en
    • MVC相册
      自定义组件类库是一个典型的MVC实例
    • MvcApplication
      MvcApplication Demo 已转成 2010版本
    • Microsoft ASP.NET MVC 4
      Microsoft ASP.NET MVC 4安装包,下载后直接安装即可。 Microsoft ASP.NET MVC 4