找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1080|回复: 10

[研讨] ObjectARX的贪吃蛇

[复制链接]
发表于 2018-5-16 15:21:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 xiaomao2018 于 2018-5-17 12:10 编辑

想仿写一个Objectarx的贪吃蛇,使用了AcDbPolyline,
目前已知的问题有两个:
1、程序运行崩溃,主要在GameCircle的While处,程序本意实现按↑↓→←来实现控制方法,按ESC结束游戏,目前程序一运行就卡死
2、蛇不会删除(AcDbPolyline通过AcDbObjectId无法删除,会留在蛇走的路上


源码文件见上面
在acrxEntryPoint.cpp中定义命令:
static void arxSnake(void)
{
      CSnake snake;
      snake.Play();
}
希望高手能优化完善此代码,谢谢指导!

通过不断尝试,我将解决的方法说一下:对于问题1,主要是要使用
// 刷新显示屏幕
  actrTransactionManager->flushGraphics();
  acedUpdateDisplay();
而不是
//acDocManager->sendStringToExecute(curDoc(),_T("regen "),true,false,false);
来刷新屏幕,正如newer 所述,这个刷新太慢,造成屏幕上一直不显示任何内容,主要就是刷新问题

问题2纯粹是不细心造成的

目前程序可正常使用了
2018-05-17_093720_副本.png
下面编译好的可正常运行的程序,有兴趣的可以尝试一下,CAD2006测试正常
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:贪吃蛇Snake.rar 
下载次数:9  文件大小:114.78 KB 
下载权限: 不限 以上  [免费赚D豆]



压缩包中为编译好的arx文件,想要源码的,程序里面有联系方式


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-16 15:36:27 | 显示全部楼层
本帖最后由 newer 于 2018-5-16 15:37 编辑

你设了 循环结束条件 i<1000,
你改小点,比如 i<10, 看看程序能结束循环吗?

另外,你循环里面用REGEN,会很慢的吧,“卡死”也许这个地方,一个REGEN还没完事,下次循环REGEN又来了,为什么要REGEN呢?

acDocManager->sendStringToExecute(curDoc(),_T("regen "),true,false,false);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-16 16:47:30 | 显示全部楼层
newer 发表于 2018-5-16 15:36
你设了 循环结束条件 i

注释掉//acDocManager->sendStringToExecute(curDoc(),_T("regen "),true,false,false);
改为i<10也是一样的,输入命令后CAD就一直卡在那里,过几十秒之后才会显示,此时while循环已经走完了,中间不能执行任何操作

设置regen的本意是将每一次生成的蛇显示出来,
设置焦点的是期望CAD能获得焦点,使用户可通过按键盘上的方向键来控制方向
//将焦点放在当前视图
  acedGetAcadDwgView()->SetFocus();

目前来看arx的while循环根本不给用户任何操作的时间,打开命令就卡住,直接while结束,此时游戏也结束了,用户没有任何参与

点评

你中间没任何交互,循环肯定一直跑到结束了 你通过 acedGetString ,输入点监视器、acedGrRead等交互,让循环停下来,来获取用户的输入,试试。  详情 回复 发表于 2018-5-16 16:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-16 16:56:56 | 显示全部楼层
xiaomao2018 发表于 2018-5-16 16:47
注释掉//acDocManager->sendStringToExecute(curDoc(),_T("regen "),true,false,false);
改为iSetFocus( ...

你中间没任何交互,循环肯定一直跑到结束了

你通过 acedGetString ,输入点监视器、acedGrRead等交互,让循环停下来,来获取用户的输入,试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-16 17:26:41 | 显示全部楼层
444.png
计划的交互是监视是否按下了键盘上的指定键
而且我也尝试了将while的判断换成acedGetpoint这样了函数,但会提示“非标准点”之类的错误
while(acedGetPoint(Null,Null,pt)==RTNORM)这样来判断的

点评

试下这个 acedGrRead ,这个肯定行,监视键盘输入  详情 回复 发表于 2018-5-16 17:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-5-16 17:50:16 | 显示全部楼层
xiaomao2018 发表于 2018-5-16 17:26
计划的交互是监视是否按下了键盘上的指定键
而且我也尝试了将while的判断换成acedGetpoint这样了函数, ...

试下这个  acedGrRead ,这个肯定行,监视键盘输入
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 333个

财富等级: 日进斗金

发表于 2018-5-17 10:39:01 | 显示全部楼层
想学arx,楼主可以分享下源码吗
另外楼主是如何编译出这些多个版本arx的呀

点评

源码昨天楼主贴了,解决问题后,今天删除了。 学ARX,你的问题这个论坛都有,看看以前的帖子。  详情 回复 发表于 2018-5-17 11:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-5-17 11:20:24 | 显示全部楼层
zyclyl 发表于 2018-5-17 10:39
想学arx,楼主可以分享下源码吗
另外楼主是如何编译出这些多个版本arx的呀

源码昨天楼主贴了,解决问题后,今天删除了。

学ARX,你的问题这个论坛都有,看看以前的帖子。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-17 11:24:24 | 显示全部楼层
没注意,楼主解决了。
既然是研讨,解决后,建议楼主还是把解决后的源码一起打包到RAR里面。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-17 12:14:48 | 显示全部楼层
newer 发表于 2018-5-17 11:24
没注意,楼主解决了。
既然是研讨,解决后,建议楼主还是把解决后的源码一起打包到RAR里面。

解决方法一楼说了,试玩过的就会知道联系方式了,谢谢你昨天的指导了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

发表于 2018-5-20 21:35:48 来自手机 | 显示全部楼层
厉害了!牛逼
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 06:16 , Processed in 0.460861 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表