ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:93.55KB ,
资源ID:2257812      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2257812.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MFC课程设计拼图游戏.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MFC课程设计拼图游戏.docx

1、MFC课程设计拼图游戏课程设计Visual C+ 指导老师:孔令德班级 1020542学号 03姓名 李伯涵 1 设计描述 1.1项目简介 1 1.2设计目的 1 2 设计分析 2.1设计特点 1 2.2主要头文件、源文件 1 3 项目代码 3.1头文件 2 3.2源文件 3 4 游戏截图 11设计描述1.1项目简介设计主要为MFC对位图的处理,包括窗口背景、位图透明处理、双缓冲处理动画等。内容为一张分成若干块的图片,当鼠标点击其中一部分,被点击部分自动移动到空白部分,其中默认有两张图,也可以自己导入图片,游戏可选择难度,即图片被分成的块数。界面右边有实例图,并统计移动次数。1.2设计目的设计

2、是对于mfc处理位图的巩固,及鼠标消息的应用,学习双缓冲处理技术、对话框的设计、在菜单栏工具栏添加功能按钮,获得系统资源,对mfc技术进行小规模综合应用。2设计分析2.1设计特点程序默认窗口大小显示,动画自然,可以导入自己喜欢的图片,选择适当难度。 2.2主要头文件、源文件1 头文件:pintu.h pintuDlg.h picture.h spell.h2 源文件:pintu.cpp pintuDlg.cpp picture.cpp spell.cpp3 项目代码3.1头文件#include resource.h/ CMyApp:class CMyApp : public CWinApppu

3、blic: CMyApp(); DECLARE_MESSAGE_MAP()#include picture.hclass CMyDlg : public CDialogpublic: CMyDlg(CWnd* pParent = NULL);protected: HICON m_hIcon; int step; / 移动的步数 BOOL begin; / 游戏是否完成 CPicture pic; int size; / 方块数 BOOL border; / 边框 void Show(CDC * dc); DECLARE_MESSAGE_MAP();#include class CPicture

4、 public: CPicture(); CPicture(); BOOL Load(UINT nIDRes); BOOL Load(LPCTSTR pszPathName); BOOL Load(CFile& file); BOOL Load(CArchive& ar); BOOL Load(IStream* pstm); BOOL Render(CDC* pDC, CRect rc=CRect(0,0,0,0), LPCRECT prcMFBounds=NULL) const; CSize GetImageSize(CDC* pDC=NULL) const; operator IPictu

5、re*() return m_spIPicture; void GetHIMETRICSize(OLE_XSIZE_HIMETRIC& cx, OLE_YSIZE_HIMETRIC& cy) const cx = cy = 0; const_cast(this)-m_hr = m_spIPicture-get_Width(&cx); ASSERT(SUCCEEDED(m_hr); const_cast(this)-m_hr = m_spIPicture-get_Height(&cy); ASSERT(SUCCEEDED(m_hr); void Free() if (m_spIPicture)

6、m_spIPicture.Release(); protected:CComQIPtrm_spIPicture;HRESULT m_hr;class CSpellprotected: int * map; int width, height; / 长宽 int blank; / 空白块的位置#define LENGTH width*height / 总长度public: CSpell(int w = 3, int h = 3, int bx = 0, int by = 0); / 构造函数,传入长宽和空白块位置 CSpell(); int GetPic(int w, int h); / 获取个

7、某个位置的图片 int Move(int w, int h); / 移动某个位置的图片 void Init(); / 初始化(生成随机位置) void ReCreate(int w, int h, int bx = 0, int by = 0); / 重新构建大小;3.2源文件#include stdafx.h#include pintu.h#include pintuDlg.hBOOL CMyApp:InitInstance() AfxEnableControlContainer();#ifdef _AFXDLL Enable3dControls();#else Enable3dContro

8、lsStatic();#endif CMyDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse = IDOK) / TODO: Place code here to handle when the dialog is else if (nResponse = IDCANCEL) / TODO: Place code here to handle when the dialog is Return FALSE;#include stdafx.h#include pintu.h#include pintuD

9、lg.h#include spell.hCSpell spell(3, 3, 2, 2);void ShowTranBmp(CDC * dc, CBitmap * bmp, COLORREF bgcolor, int x, int y, int w, int h, int bx, int by, int bw, int bh) CDC mdc; CDC tdc; / 图像 CDC ddc; / 遮罩 CBitmap tbmp; CBitmap dbmp; CBitmap *ob; CBitmap *tob; CBitmap *dob; mdc.CreateCompatibleDC(dc); t

10、dc.CreateCompatibleDC(dc); ddc.CreateCompatibleDC(dc); tbmp.CreateBitmap(bw, bh, 1, 32, NULL); dbmp.CreateBitmap(bw, bh, 1, 1, NULL); ob = mdc.SelectObject(bmp); tob = tdc.SelectObject(&tbmp); dob = ddc.SelectObject(&dbmp); tdc.BitBlt(-bx, -by, bw+bx, bh+by, &mdc, 0, 0, SRCCOPY); tdc.SetBkColor(bgco

11、lor); ddc.BitBlt(0, 0, bw, bh, &tdc, 0, 0, SRCCOPY); dc-BitBlt(x, y, w, h, &tdc, 0, 0, SRCINVERT); dc-BitBlt(x, y, w, h, &ddc, 0, 0, SRCAND); dc-BitBlt(x, y, w, h, &tdc, 0, 0, SRCINVERT); mdc.SelectObject(ob); tdc.SelectObject(tob); ddc.SelectObject(dob);class CAboutDlg : public CDialogpublic: CAbou

12、tDlg(); DECLARE_MESSAGE_MAP();void CAboutDlg:OnPaint() CPaintDC dc(this); / device context for painting CBitmap lygame; lygame.LoadBitmap(IDB_ABOUTIM); ShowTranBmp(&dc, &lygame, RGB(0,0,0), 8, 8, 307, 92);CMyDlg:CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg:IDD, pParent) m_hIcon = AfxGetApp()-Loa

13、dIcon(IDR_MAINFRAME); begin = TRUE; step = 0; pic.Load(IDR_IMAGEB); size = 3; border = TRUE; BOOL CMyDlg:OnInitDialog() CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX GetMenu(); pMenu-CheckMenuItem(ID_MENU_3, MF_CHECKED); pMenu-CheckMenuItem(ID_MENU_BORDER,

14、 MF_CHECKED); return TRUE; void CMyDlg:OnPaint() CPaintDC dc(this);if (IsIconic() SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; dc.DrawIcon(x, y, m_hIcon); else CDialog:OnPaint(); Show(&dc);HCUR

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1