// 地图编辑器Dlg.cpp : implementation file
/*********************************
[学VC编游戏]
编著、程序设计:唐明理 2004.7
E-mail: cqtml@163.com
**********************************/
#include "stdafx.h"
#include "地图编辑器.h"
#include "地图编辑器Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CString new_scr0;//选择地图大小
extern int new_js; //选择角色
extern CString new_map; //选择地面
/////////////////////////////////////////////////////////////////////////////
// CMyDlg dialog
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyDlg)
DDX_Control(pDX, IDC_SCROLLBAR1, m_hscroll);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_TIMER()
ON_WM_LBUTTONDOWN()
ON_WM_HSCROLL()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_WM_RBUTTONDOWN()
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyDlg message handlers
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
MoveWindow(0,0,SCRWI,SCRHE); //窗口定位
CenterWindow(); //居中窗口
//---------------------------------------------------------------
m_game.initedit(); //初始化类
m_game.loaddata(); //调资源包............................
fidtim=0; //寻路时间
down=0;dowx=0;dowy=0; //左键按键清0
//编辑用----------------------------------------------------------
no=-1; //物品区选择清0
dorj=0; //1动物或0景物
m_game.edi=0;
//................................................
int sw=m_game.mapw,sh=m_game.maph;
SetDlgItemText(IDC_STATIC8,m_game.dir);
GetDlgItem(IDC_STATIC0)->MoveWindow(0,8,WIDTH+4,HEIGHT+4,TRUE); //显示框
GetDlgItem(IDC_STATIC1)->MoveWindow(WIDTH+6-2,8,sw+4,sh+4,TRUE); //小地图框
GetDlgItem(IDC_STATIC6)->MoveWindow(WIDTH+6,sh+15,sw,30,TRUE); //标志
GetDlgItem(IDC_STATIC3)->MoveWindow(2,SCRHE-26,280,18,TRUE); //提示
GetDlgItem(IDC_STATIC4)->MoveWindow(2+280,SCRHE-26,280,18,TRUE); //时间
GetDlgItem(IDC_STATIC5)->MoveWindow(2+280*2,SCRHE-26,250,18,TRUE); //坐标
//编辑用----------------------------------------------------------
GetDlgItem(IDOK) ->MoveWindow(WIDTH+6,sh+50,sw,20,TRUE); //编辑、测试
GetDlgItem(IDC_BUTTON3)->MoveWindow(WIDTH+6,sh+75,sw,20,TRUE); //保存
GetDlgItem(IDC_BUTTON1)->MoveWindow(WIDTH+6,sh+100,sw,20,TRUE); //新建地图
GetDlgItem(IDC_BUTTON4)->MoveWindow(WIDTH+65,SCRHE-104, 80,25,TRUE);//景物
GetDlgItem(IDC_BUTTON5)->MoveWindow(WIDTH+65,SCRHE-104+28,80,25,TRUE);//动物
GetDlgItem(IDC_STATIC2)->MoveWindow(0,SCRHE-104,WIDTH+4,70,TRUE); //选择框
GetDlgItem(IDC_SCROLLBAR1)->MoveWindow(2,SCRHE-52,WIDTH,16,TRUE); //滚动条
GetDlgItem(IDC_STATIC7)->MoveWindow(WIDTH+6, SCRHE-104,55,54,TRUE); //被选物框
GetDlgItem(IDC_STATIC8)->MoveWindow(WIDTH+6,sh+157,sw,sh,TRUE); //提示信息1
GetDlgItem(IDC_STATIC9)->MoveWindow(WIDTH+6,2*sh+162,sw,sh,TRUE); //提示信息2
GetDlgItem(IDC_SCROLLBAR1)->EnableWindow(FALSE);//滚动条
GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE); //新建地图
GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE); //保存
GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE); //景物
GetDlgItem(IDC_BUTTON5)->EnableWindow(FALSE); //动物
m_hscroll.SetScrollRange(0,85); //纵向范围
m_hscroll.SetScrollPos(m_game.tml); //纵向初始点
//编辑用----------------------------------------------------------
//在状态栏隐藏对话框==============================
DWORD dwExStyle=GetExStyle();
dwExStyle =(~WS_EX_APPWINDOW & dwExStyle) | WS_EX_TOOLWINDOW;
SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,dwExStyle);
//================================================
srand((unsigned)time(NULL)); //随机数种子
SetTimer(3,100,NULL); //启动延时
return TRUE; // return TRUE unless you set the focus to a control
}
void CMyDlg::OnPaint()
{ CDialog::OnPaint();
}
HCURSOR CMyDlg::OnQueryDragIcon()
{ return (HCURSOR) m_hIcon;
}
void CMyDlg::OnCancel()//退出,[类向导中定义生成]
{ KillTimer(1);KillTimer(2);
if( ::MessageBox(GetSafeHwnd(), "退出程序吗?","请您确定!",
MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 ) == IDYES )
{m_game.exitedit(); //退出类
CDialog::OnCancel();
}
else {SetTimer(1,TIMER,NULL);SetTimer(2,TIMER*2,NULL);}
}
void CMyDlg::OnTimer(UINT nIDEvent) //时钟函数,[类向导中定义生成]
{ if(nIDEvent==1)//动画刷屏
{tim=timeGetTime(); //开始时间
CClientDC dc(this);
int i;
m_game.mlmap(); //地图块移动拼接
for(i=0;i<m_game.rs;i++)
m_game.Alphasetobj(i,0); //对象显示
for(i=0;i<m_game.rs;i++)
{m_game.Alphasetobj(i,1); //对象显示
m_game.lookit(i); //角色碰撞
}
/* for(i=0;i<m_game.rs;i++)
{m_game.setobj(i); //对象显示
m_game.lookit(i); //角色碰撞
}*/
if(m_game.edi==1) m_game.showline();//显示编辑方格
if(m_game.rs>1) m_game.smlmap(dc.m_hDC); //显示小地图
BitBlt(dc.m_hDC,2,10,WIDTH,HEIGHT,m_game.BkDC1,0,0,SRCCOPY);//用Bk1刷新窗口
tim=timeGetTime()-tim; //显示时间=结束时间-开始时间
}
//----------------------------------------------------------------------------
if(nIDEvent==2)//显示信息
{char cc[255],c1[255];
int q=m_game.mann;
sprintf(cc,"地图[X:%4d Y:%4d] 人[x:%4d y:%4d]",
m_game.scrx,m_game.scry,m_game.man[q].xix,m_game.man[q].xiy);
SetDlgItemText(IDC_STATIC5, cc);
sprintf(cc,"[显示区对象数:%3d] [%3dms/屏] [CPU占用%3d%]",m_game.mans,tim,tim*100/TIMER);
SetDlgItemText(IDC_STATIC4, cc);
switch(fidtim)
{case -1: {strcpy(c1,"障碍点"); break;}
case -2: {strcpy(c1,"起始点"); break;}
case -3: {strcpy(c1,"无路"); break;}
case -4: {strcpy(c1,"搜索忙"); break;}
case -5: {strcpy(c1,"太远了"); break;}
case -10: {strcpy(c1,"左上边界"); break;}
case -20: {strcpy(c1,"右下边界"); break;}
default: {sprintf(c1,"搜索时间:%dms",fidtim);}
}
sprintf(cc,"地图%dX%d 障碍%dX%d %s,%d",
WIDTH*m_game.SCRP0,HEIGHT*m_game.SCRP0,
WIDTH*m_game.SCRP0/GX,HEIGHT*m_game.SCRP0/GY,c1,m_game.man[q].pk);
SetDlgItemText(IDC_STATIC3, cc);
m_game.randxy();//随机产生兽的移动目标
int r=0,s=0,j=0,k=0;
for(int i=0;i<m_game.rs;i++)
{if(m_game.man[i].lb==0) r++;
if(m_game.man[i].lb==1) s++;
if(m_game.man[i].lb==2) j++;
if(m_game.man[i].zd==1) k++;
}
sprintf(cc,"对象数[%d]\r\n人[%d]\r\n兽[%d]\r\n景[%d]\r\n",m_game.rs,r,s,j);
if(k<1) k=1;
if(k>1) sprintf(c1,"%s\r\n有 %d 只动物向你进攻",cc,k-1);
else strcpy(c1,cc);
SetDlgItemText(IDC_STATIC9, c1);
if(MCIWndGetPosition(hMCI) >=MCIWndGetLength(hMCI)) MCIWndPlay(hMCI);
}
if(nIDEvent==3)//启动延时
{KillTimer(3);
//调入文件对话框------------------------------------------------------
CString name;
CString filt="dat (*.dat)|*.dat";
CFileDialog fileDlg(TRUE,"*.dat","*.dat",NULL,filt,this);
fileDlg.m_ofn.Flags|=OFN_FILEMUSTEXIST;
fileDlg.m_ofn.lpstrTitle="调入地图文件";
if(fileDlg.DoModal()!=IDOK) goto aa;
name=fileDlg.GetPathName();
//--------------------------------------------------------------------
m_game.loadmap(name); //调入地图
m_game.loadza (name); //调入障碍表
m_game.getsmap(); //生成小地图
filt=fileDlg.GetFileName();
name=fileDlg.GetPathName();
name=name.Left(lstrlen(name)-lstrlen(filt));
char cc[255];
sprintf(cc,"%sMusic1.mid",name);
hMCI = MCIWndCreate(NULL, NULL,WS_POPUP|WS_VISIBLE|
没有合适的资源?快使用搜索试试~ 我知道了~
学VC编游戏-13.地图编辑器
共23个文件
h:5个
cpp:4个
cur:4个
4星 · 超过85%的资源 需积分: 9 156 下载量 162 浏览量
2008-11-24
10:37:48
上传
评论
收藏 38KB RAR 举报
温馨提示
[学vc编游戏]光盘使用说明 一、目录结构说明 01.游戏演示 演示CAI的源程序 02.我来了 第2章我来了源程序 03.让我动吧 第3章让我动吧源程序 04.别给我框框 第4章别给我框框源程序 05.走四方 第5章走四方源程序 06.穿越丛林 第6章穿越丛林源程序 07.广阔天地 第7章广阔天地源程序 08.脚踏实地 第8章脚踏实地源程序 08-1.求解最短路径 求解最短路径源程序 09.狩猎谋生 第9章狩猎谋生源程序 10.快一点 第10章快一点源程序 10-1.资源打包 资源打包源程序 11.再快一点 第11章再快一点源程序 12.真的打呀 第12章真的打呀源程序 13.地图编辑器 第13章地图编辑器源程序 游戏类库 共用GDI游戏类库 运行程序 所有运行程序 使用说明.txt 本说明文件 学vc编游戏.exe 本光盘所有文件的自解压包 二、使用方法 1、进入运行程序目录,进行“01.游戏演示.exe”。在这里,你可以任选章节运行演示程序或编译源程序。 2、在运行目录中,任选程序运行。 3、对程序章节的源程序进行编译运行。 三、注意: 1、你的机器上应装有VC6.0才能编译源程序。 2、不要在光盘上编译源程序(因为光盘是只读的)。 3、要编译[学vc编游戏]源程序一定要运行“学vc编游戏.exe”将程序解包到硬盘上。不要直接用拷贝光盘的办法(直接拷贝的文件是只读属性的)。
资源推荐
资源详情
资源评论
收起资源包目录
13.地图编辑器.rar (23个子文件)
13.地图编辑器
RES
CURSOR3.CUR 2KB
BITMAP2.BMP 16KB
地图编辑器.ico 3KB
CURSOR0.CUR 766B
CURSOR2.CUR 2KB
BITMAP3.BMP 7KB
CURSOR1.CUR 2KB
地图编辑器.rc2 402B
BITMAP1.BMP 1KB
TEST.DSW 545B
StdAfx.cpp 212B
NEWMAP.CPP 2KB
地图编辑器.dsp 6KB
地图编辑器Dlg.cpp 14KB
地图编辑器Dlg.h 2KB
地图编辑器.dsw 545B
StdAfx.h 1KB
地图编辑器.cpp 2KB
地图编辑器.rc 9KB
地图编辑器.h 1KB
NEWMAP.H 1KB
地图编辑器.clw 2KB
RESOURCE.H 2KB
共 23 条
- 1
资源评论
- yunyangwenti2013-10-28可以运行,很不错的
- youxicehuawangyang2012-04-26很好,我试了几次,报了些错误,我再试试
- Wisdom_star2012-04-29这是用vc6写的,用vs2008打开可以运行
- access201301012013-10-08很好,我试了几次,报了些错误,我再试试
- TCL665721562012-11-17同楼上,也是还没有成功。再试试去。
mickgrant
- 粉丝: 2
- 资源: 48
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功