Debug Assertion Failed!

ailenwood ailenwood 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Debug Assertion Failed!
Program: F:\~
File:wingdi.cpp
Line 109
请教一下是什么问题啊

出问题的地方好像在这里面
void CMyLLKView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//1.计算鼠标点击方块的的位置
int x=point.x/FRONTWIDTH+(point.x%FRONTWIDTH?1:0)-1;
int y=point.y/FRONTHEIGHT+(point.y%FRONTHEIGHT?1:0)-1;

//2.在游戏区域内并且该区域还有该区域不是空的区域
if(x<m_nCol&&y<m_nRow&&m_map[y*m_nCol+x]!= BLANK_STATE)
{


//3.假设尚未记录第一个方块
if(m_nX1==BLANK_STATE)
{
//4.记录第一个方块的位置
m_nX1=x;
m_nY1=y;

//获取程序框架的设备环境
CDC *pWinDC = GetDC();

//临时绘制点中的方块外框
//只绘屏幕不载入内存位图

myPen.CreatePen(PS_SOLID, 4, RGB(255,0,0));
pOldPen = pWinDC->SelectObject(&myPen);
//方块外框绘制,线条环绕绘制框架
pWinDC->MoveTo(x*FRONTWIDTH,y*FRONTHEIGHT);
pWinDC->LineTo(x*FRONTWIDTH,(y+1)*FRONTHEIGHT);
pWinDC->LineTo((x+1)*FRONTWIDTH,(y+1)*FRONTHEIGHT);
pWinDC->LineTo((x+1)*FRONTWIDTH,y*FRONTHEIGHT);
pWinDC->LineTo(x*FRONTWIDTH,y*FRONTHEIGHT);
//现场恢复
pWinDC->SelectObject(pOldPen);
}
else
{
//5.判断是否点击的方块非本身, 是否点击同一种动物
if((m_nX1!=x||m_nY1!=y)&&
m_map[m_nY1*m_nCol+m_nX1]==m_map[y*m_nCol+x]
)
{
//6.检测是否可以消除
if(IsLink(m_nX1,m_nY1,x,y))
{
//7.数据清理
m_map[m_nY1*m_nCol+m_nX1]=BLANK_STATE;
m_map[y*m_nCol+x]=BLANK_STATE;
}
}
//8.清空记录方块的值
m_nX1=BLANK_STATE;
m_nY1=BLANK_STATE;

//通知重绘
Invalidate(FALSE);
}
}

//察看是否已经胜利
if(IsWin())
{
MessageBox("恭喜您胜利闯关,即将开始新局");
StartNewGame();
}
CView::OnLButtonDown(nFlags, point);
}

谢谢

...全文

相关推荐

Debug Assertion Failed!问题怎么解决?

Debug Assertion Failed!

qq853385517

Debug Assertion Failed!问题解决方法

下载代码方式:https://pan.quark.cn/s/d41d8e77c9e2 在信息技术领域,特别是在软件工程实践中,“Debug Assertion Failed!”是一个频繁出现的警示信息,它通常在调试过程中显现,当程序运行至特定位置时,预设的断言标准未能实现,进而导致了断言的失效。这一情况所关联的知识要点涵盖了断言的基本定义、断言的功能、断言失效的成因探究以及如何处理“Debug Assertion Failed!”的难题。### 断言的基本定义断言是软件工程中的一个核心概念,用于在程序代码中嵌入条件验证,旨在确保程序执行期间的状况与预期相符。当断言标准为真时,程序会继续常规运行;然而,一旦标准为假,断言便会失效,程序将中止执行,并抛出异常或警示信息,例如“Debug Assertion Failed!”。断言主要应用于调试阶段,辅助开发人员迅速识别代码中的逻辑偏差。### 断言的功能断言在软件工程中有以下几个关键用途:1. **错误识别**:通过在重要节点设置断言,可以在程序运行时即时识别不符合预期的情况,从而迅速定位故障。2. **假设验证**:断言可用于验证代码中的假设是否成立,例如确保函数调用前后的状态满足特定规范。3. **测试增强**:在单元测试和集成测试中,合理运用断言能够提升测试的覆盖面和效率,保障代码的可靠性。### 断言失效的成因探究“Debug Assertion Failed!”警示的发生,通常暗示以下几种情形之一:1. **逻辑偏差**:代码中存在逻辑上的缺陷,导致断言标准不成立。2. **数据偏差**:输入的数据或变量的值超出预期范围,引发断言失效。3. **并发冲突**:在多线程环境中,由于线程同步的难题,可能在某一...

dns_boom

MAPGIS二次开发常见问题汇总.doc

MAPGIS二次开发常见问题汇总.doc

matlab大师

MAPGIS二次开发常见问题及解答

MAPGIS二次开发常见问题及解答,例如:1、问:如何用Delphi生成MAPGIS明码文件? 答:先利用手册看懂明码格式文件的格式,知道数据的组织方式,利用delphi的文件函数创建一个文本型文件,吧数据库中的数 据按照格式输出就是了。 2、问:ATT_STRU 和CATT_STRU的区别和联系? 答: ATT_STRU是以前老版本的东东,换成CATT_STRU试试.CATT_STRU中包含了属性结构的详细信息,具体用法可参见二次开发帮助 文档中第三章数据结构中关于属性字段描述结构,属性字段描述头和属性信息头的介绍,里面有该结构的详细内容。 等等问题和解答。

小明学编程

win7+vs2010+opencv3.0.0+安装

win7,vs2010下怎么配置opencv3.0库,并能正确输出图片实例。其中,也例出了一些在配置过程中出现的问题。

Jasmine_shine
评论 5
收藏 已收藏
分享
返回顶部
ailenwood
图形处理/算法 19,463 成员 50,678 内容