用DDraw实现射击游戏阐发文档要点一:画图自动切割IDirectDrawSurface7::BltFast()方式中不自动切割成果,即当画图元素逾越窗口之外时不会自动切割,DDraw遴选自动漠视不画,组成一旦逾越窗口,画图元素会忽然磨灭。
处置这一下场的方式是手动切割,代码如下://自动切割 RECTscRect; //寄存之后窗口大小地域 ZeroMemory(&scRect,sizeof(scRect)); GetWindowRect(GetActiveWindow(),&scRect); //提防图片左上角逾越窗口左上角 if(xscRect.right?scRect.right:x; y=y>scRect.bottom?scRect.bottom:y; m_rect.right=x+m_rect.right-m_rect.left>scRect.right?scRect.right-x+m_rect.left:m_rect.right; m_rect.bottom=y+m_rect.bottom-m_rect.top>scRect.bottom?scRect.bottom-y+m_rect.top:m_rect.bottom;惟独将上述代码加在CGraphic::BltBBuffer()中的m_bRect=m_rect;前就可。
要点二:配景的滚轴实现 画配景能够分为如下三种情景: 情景一:配景图片与窗口等高 情景二:配景图片高度小于窗口高度 情景三:配景图片高度大于窗口高度上述教学图与代码相对于应地看,有助于约莫知道。
另外,要点一实现之后,由于已经能够自动切割,画配景能够用另外方式。
要点三:精灵图的实普通游戏中,如RPG游戏中的人物图、射击类游戏的飞机、爆炸等,叫做精灵图。
精灵图实际上是将齐全帧的图片放在一个文件中,游戏时靠一个RECT来抑制画图像文件中的哪一部份,进而抑制游戏展现哪一帧图,惟独抑制好RECT的位置就可。
如下图:抑制RECT的四个角的坐标的挪动,有如下代码:if(m_timeEnd–m_timeStart>100) //惟独到了100ms之后才画图 {m_ImageID++; if(m_ImageID-m_beginID>=num) { m_ImageID=m_beginID; //末了一帧的下一帧是第一帧 } m_timeStart=timeGetTime(); } intid=m_ImageID++; SetRect(&m_rect,41*id,0,41*(id+1),41); //飞机精灵图大小是41×41 m_pGraph->BltBBuffer(m_pImageBuffer,true,m_Pos.x,m_Pos.y,m_rect);如许就实现为了精敏捷画的下场。
要点四:拿STL举行枪弹的实现枪弹的实现能够使用STL中的vector,当按下开战键时收回一颗枪弹,就往vector中削减一个结点;
当枪弹飞出窗口或者击中敌机时,再将结点从vector中删除了。
每一帧游戏画面中枪弹翱翔时惟独将vector中的齐全枪弹举行处置、绘画就可。
参考代码如下:1.削减枪弹if(g_ctrlDown) //当ctrl键按下时开炮! { m_BulletEnd=m_Gtime->GetTime(); if((m_BulletEnd-m_BulletStart)*1000>120) //假如络续按着开战键不放,这里抑制不会收回太多枪弹 { m_BulletStart=m_BulletEnd; MBULLETtmpBullet; tmpBullet.pos.x=m_SPos.x-1; //记实开战时的枪弹位置 tmpBullet.pos.y=m_SPos.y-26; tmpBullet.speed=5; //该枪弹的翱翔速率 m_BulletList.push_back(tmpBullet); //将枪弹削减到vector中 } } 2.删除了枪弹vector::iteratoritei; //vector迭代器 for(itei=m_BulletList.begin();itei!=m_BulletList.end();itei++) //遍历齐全枪弹{m_BulletList.erase(itei); //删除了这个枪弹itei=m_BulletList.begin(); //删除了一个结点后,为防止侵蚀下次就重新查验if(m_BulletList.empty()) break; //若删除了结点后枪弹vector已经空则跳出轮回} 3.枪弹遍历处置vector::iteratoritei; //vector迭代器 for(itei=m_BulletList.begin();itei!=m_BulletList.end();itei++) //遍历齐全枪弹{itei->pos.y-=itei->speed; //枪弹翱翔}要点五:碰撞检测使用WindowsAPI函数RectInRegion:vector::iteratoritei; //vector迭代器for(itei=m_EnimyList.begin();itei!=m_EnimyList.end();itei++) //遍历齐全敌机{HRGNhrgn=::CreateRectRgn(m_player->pos.x,m_player->pos.y,m_player->pos.x+41,m_player->pos.y+41); //患上到飞机Region,图宽41高41 SetRect(&m_rect,itej->getPosition().x,itej->getPosition().y,itej->getPosition().x+50,itej->getPosition().y+50) //患上到敌机rect,敌机宽50高50 if(RectInRegion(hrgn,&m_rect)) //两机相撞 { ……………………. //碰撞之后的种种处置 }}让碰撞愈加准确:使用WindowsAPI函数PtInRegion()以及CreatePolygonRgn(),选取配角飞机的三个关键点的坐标放在POINT数组中,并将其作为参数代入CreatePolygonRgn()中天生HRGN,在枪弹与配角飞机做碰撞检测时惟独分辨枪弹的中间点能否在这个Region中就可(PtInRegion())。
留意:CreateRectRgn()与CreatePolygonRgn()等建树Region的函数会占用体系资源,由于游戏的主渲染函数Render()是络续实施的,如许会组成资源糜掷,于是在用完之后未必要释放:DeleteObject(region)要点六:敌机直线翱翔末了想这个下场的时候,感应很好实现,脑子里马上想到以及了。
其实如许实现有下场,当尽头以及尽头的连线斜率不是1或者-1时就会涌现意想不到的责任了,飞机并无直接飞向尽头,而因此斜率相对于值为1的路途飞已经往,再水平或者垂直飞向尽头。
处置这个下场有多少个方式,其中有一个方式是行使盘算机图形学上的Bresenhem直线算法。
该算法用于盘算机画平面上的直线,算法如下:|m|abs(deltaY))//轨迹斜率0)//1 { if(m_bFirstCalculate) { m_Delta=2*abs(deltaX)-abs(deltaY);//d0=2×dx-dy m_bFirstCalculate=false; } //依据轨迹斜率分辨能否要挪动X坐标 if(m_Delta>0)//m_iTempo)break;}//endofwhile(*pStr)
2023/5/1 0:27:02 2.18MB DDraw
1
一、实现的跨平台Python+wxPython界面,法度圭表标准中削减了OpenCV代码举行约莫的图像处置(截图),适宜新手借鉴,行使wxPython库举行Python界面制作,如安在Python中挪用OpenCV举行图像处置。
二、代码能够在Linux以及Windows下运行,编写Windows下OpenCV3.1.0,Linux下3.1.0以及3.2.0都试过,Python2以及Python3情景惟独要改一下print函数。
由于一些依赖库的原因,wxPython我下的是最新版的,详尽装置步骤到我博客看看。
三、这像一个图片浏览器,掀开遴选文件夹,遍历外面的*.jpg以及*.png图片,表普通窗口上,点击按钮能够浏览上、下一张图片,鼠标画矩形,再点击按钮留存矩形图像。
窗口下有一个进度条,展现之后浏览图像的进度,额,另有一个线程函数,适宜借鉴线程参数传值。
四、说一下,Linux下的窗口大小以及Windows下的窗口大小大概不同样,大概要你自己改一改窗口大小,由于Windows下做的有点粗拙,Linux下是残缺实现上述成果的。
2023/4/17 21:02:24 7KB 界面、图像
1
mfc依据窗口大小自动调解齐全控件大小,自己编的,阻滞对于你实用
2023/4/10 17:21:32 6.91MB mfc 自动调整 所有 控件
1
本体系共搜罗11个java源文件以及2文件。
这是个成果比力残缺的拼图游戏,最关键的不用自己手动切割图片,再举行加载。
而是使用类方式在内存中举行图片切割以及加载,便捷了用户的使用。
另外,该法度圭表标准会依据图片的大小自动天生窗口大小,不会组成切割图片差迟以及切割错位。
法度圭表标准末了以*.rc格式的文件来留存游戏记实。
2023/3/27 8:25:57 1.26MB 课程设计
1
这是MFC实现转动字幕的源码,首要波及到患上到窗口大小,配置控件的位置以及大小,按时器,指定窗口的配景致。
2023/3/27 0:09:44 12.53MB MFC
1
使用进程留意事变:1.挪用DLL识别库识别,多线程下不需要加应承证,反对于并发识别.2.挪用DLL识别,识别参数配置召唤SetWmOption必需与你弄字库时候的配置参数同样,不然会导致识别率飞腾详尽参数阐发,请看挪用例子里的[我的函数.txt]文档有对于应参数阐发.3.假如碰见本货物没法识另外验证码,能够找群主(用神经收集识别)定制,价钱廉价公平.[2017-07-27]美满验证码识别体系V3.21.削减DLL识别返回方式2以及3详尽看我的函数.txt里阐发,主若是削减一个可暮年往识别后的总体信托度.这个值你能够给它个阀值,譬如说假如总体信托度小于60,那末你就不提交效率器,直接重新患上到图片识别,直到总体信托度大于60你才提交给效率器,这个阀值详尽若干,自己能够先测试.2.修复导出字库不导出完,直接封锁窗口解体下场3.削减批量下载后定位到批量下载文件夹4.削减能够使用验证码长度举行过滤,削减能够使用总体信托度举行过滤.(这两个成果能够快捷的制作字库,譬如说你验证码是4位的,你能够配置验证码小于4,大于4那这张图片未必是识别差迟的,那末软件就会把这张图片留存下来,同理能够使用总体信托度举行此留存)[2017-07-20]美满验证码识别体系V3.11.修单数组下标越界下场2.字库列表削减能够多选而后右键批量删除了选中项[2017-07-13]美满验证码识别体系V3.01.修复导出字库,重复导出不会拆穿包围原有的BUG,导出的图片会累加之去(留意,暮年导出的字模导入新版中会侵蚀,新版字模导出格式为a_md5.bmp请自行写个软件更注释件名,而后再导入)2.修复削减字库空格均能够削减进去3.修复解体下场.(解体应该绝大大都都是此原因组成的.)4.另外一些调解.[2017-06-25]美满验证码识别体系V2.61.处置输入中间下场.2.批量下载削减能够过滤掉宽度规模,面积规模,高度规模,玄色数规模,能够去掉没实用的干扰图片.3.另外的一些细节调解[2017-06-07]美满验证码识别体系V2.51.修复去除了干扰滤镜在不先二值化图片均能够使用.2.试验处置削减字库解体下场(代码较多,找到1处下场.不知道另有无其余下场)3.编纂字库页面削减个选中框[削减字库后自动下载图片],使用批量下载图片,能够快捷削减字库4.使用截图货物,截取图片后,会自动切换到划线货物.[2017-05-17]美满验证码识别体系V2.31.修复配置滤镜默许都有遴选项.2.修复当使用外舆图像时,不新建名目均能够编纂的下场.3.修复黑白处置滤镜在不先二值化图片均能够使用.4.修复处置许多逻辑差迟解导致法度圭表标准解体.5.削减字库列表削减右键删除了之后选中的字库6.削减抑制重复运行,由于重复运行会导致字库削减失败,以及读取不到已经做过的字库.7.添减速捷键"自动联系(Alt+R)","手动联系(Alt+T)"8.编纂页面削减个批量下载按钮,能够实现批量下载并自动联系图片成果(批量下载的图片留存在之后名目文件夹下的"批量下载"文件夹中)9.主窗口削减一个遴选框_图像已经处置不使用滤镜,由于批量下载后图片都是已经使用过滤镜了,处置批量下载的图片这里必需患上勾选上,不然会重复使用滤镜[2017-05-07]美满验证码识别体系V2.21.新增分说率1024*768方案2.更正注册热键方式为本进程方式(原为全局热键,谢谢群友XGSoft提供源代码)[2017-05-06]美满验证码识别体系V2.1(申请屏幕分说率最低1440*900)1.去掉窗口最大化,去掉自动调解窗口大小代码,修复部份控件展现不全2.削减检测图像能否二值化,没二值化的图片不应承编纂3.试验处置削减字库解体的下场(不用定下场出在哪!!)4.处置滤波数组越界下场.
2023/3/22 5:57:22 13.66MB 完美验证码 验证码识别
1
控件功能强大,却简单易用,所有调用如同JavaScript扩展语句,主要接口函数如下:PRINT_INIT打印初始化SET_PRINT_PAGESIZE设定纸张大小ADD_PRINT_HTM增加超文本项ADD_PRINT_TEXT增加纯文本项ADD_PRINT_TABLE增加表格项ADD_PRINT_SHAPE画图形SET_PRINT_STYLE设置对象风格PREVIEW打印预览PRINT直接打印PRINT_SETUP打印维护PRINT_DESIGN打印设计...样例清单1.如何在页面内嵌入控件见样例一2.如何选材打印当前页面内容见样例二3.如何用代码生成打印页见样例三4.如何打印设计和定位套打见样例四5.如何控制纸张大小和连续打印见样例五6.如何输出多页长文档及双面打印见样例六7.如何定向输出见样例七8.如何打印图片见样例八9.如何用程序加载打印维护背景图见样例九10.如何控制打印样式(STYLE)见样例十11.如何直接打印条形码见样例十一12.如何读写本地文件见样例十二13.如何打印旋转内容见样例十三14.如何按URL打印见样例十四15.如何打印表格的页头页尾见样例十五16.如何设置预览窗口大小见样例十六17.如何发打印机指令或直接读写端口见样例十七18.如何打印幅面高度不固定的票据见样例十八19.如何内嵌显示及预览时包含背景图见样例十九20.如何强制分页并预览多页卡片见样例二十21.如何控制打印维护的功能权限见样例二十一22.如何构建自己的纯WEB打印预览见样例二十二23.如何居中打印超文本见样例二十三24.如何选择界面皮肤见样例二十四25.如何指定输出到哪页或仅预览见样例二十五26.如何提高多页打印的功能见样例二十六27.如何导出数据到Excel文件见样例二十七28.如何快速读取客户端系统信息见样例二十八29.如何使用其它长度单位见样例二十九30.如何分页输出页面内容见样例三十31.如何打印表格的分页小计或合计见样例三十一32.如何实现清晰的图表打印见样例三十二33.如何实现甘特图等的图表打印见样例三十三34.如何使用百分比%和满页打印见样例三十四35.如何获得打印结果和程序代码见样例三十五36.如何在设计过程中用js编辑内容见样例三十六37.如何打印公章效果图见样例三十七38.如何用BASE64编码输出图片见样例三十八39.如何打印田字格、上划线等文本见样例三十九40.如何进行数据格式转换见样例四十41.如何把内容关联后按顺序打印见样例四十一42.如何把整页内容缩放打印见样例四十二43.如何分页打印综合表格见样例四十三44.如何缩放打印单个超文本内容见样例四十四45.如何获得打印状态及最终结果见样例四十五46.如何设置右边距和下边距见样例四十六
1
动态调整器具有可自定义预设和呼应式控制面板的简单窗口大小调整器。
特征在控制面板中,您可以将任何字段保留为空白,以避免在激活预设时更改该属性。
例如,如果您只想更改宽度和高度,请将位置字段留空。
有一个选项可以根据尺寸计算自动居中位置。
打开窗口时,控制面板将自动捕获窗口的当前尺寸。
发展对于这个很小的项目来说,配置绝对是多余的,但是命令最终变得相对简单易用。
npminstall安装必要的依赖项npmstart开始观察变化npmrunbuild生成扩展的zipnpmrunsign生成并上传已签名的Firefoxxpi,您可以安装该pix以供个人使用
2023/2/7 10:43:19 81KB TypeScript
1
使用开源类InfoBox.js结合boorstrap款式开发出一款美观的信息窗口,不限制窗口大小可以扩展tab页。
入口页面为home.html
2023/1/13 21:34:32 41KB web baidumap js bootstrap
1
真正实现全屏满屏最大化的空当接龙Freecell3.50201509093.50版是在向海飞的空档接龙3.30版基础上修改而来,适合需要全屏满屏最大化大窗口大图标大字体的网友使用。
3.30版问题:全屏时手动或自动解答完成后,单击“回放”按钮后的“回放对话框”看不到,不便于操作,只能按ESC键退出。
3.50版进行了改进,全屏时手动或自动解答完成后,单击“回放”按钮后的“回放对话框”定位在主窗口中间,可以看见、也便于操作。
与空档接龙3.00的修改版相比,主要实现了真正的任意窗口大小,真正实现全屏满屏最大化。
并且,当屏幕分辨率较小时(宽小于1213或高小于850),程序会自动最大化显示、以自动顺应屏幕大小 "--------------------------------------------", "空档接龙3.50版", "--------------------------------------------", "作者:向海飞", "E-mail:xianghaifei@sohu.com", "blog:http://blog.csdn.net/xianghaifei/", "Improveed:ybmj@vip.163.com", "--------------------------------------------",Freecell3.50下载地址:可以到http://download.csdn.net/user/shuren8搜索Freecell下载最新版本。
空档接龙-2006-05-30原版下载地址:http://download.csdn.net/detail/xianghaifei/158407厌倦了windows空档接龙的某些限制么?不妨玩一下这个吧。
可以认为它是windows空档接龙的升级版本。
最主要的特色是:1.允许无限次数的撤销。
2.可以存档、读档。
3.可以回放解答过程。
4.可以玩的牌局数目达到20亿个以上。
5.可以让电脑自动解答并演示给你看。
6.可以自编牌局。
目前现有的牌局中95%以上都可以自动解答。
由于可以自编牌局,所以牌局的个数实际上几乎没有限制。
例如在"自编的牌局"文件夹下面的存档文件就是我定义的牌局。
2019/9/7 4:42:44 272KB 空当接龙 Freecell 全屏 满屏
1
共 39 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡