vc++象棋程序设计正文.docvc++象棋程序设计正文.doc

收藏 分享

资源预览需要最新版本的Flash Player支持。
您尚未安装或版本过低,建议您

中国象棋游戏实验报告第1页共30页计算机学院20034级程序设计高级实验C大型作业报告题目中国象棋系统双人对下游戏程序。人员谢剑(学号3035211133班级计算机20034班)俞雪永(学号3035211138班级计算机20034班)谭书舟(学号3035211128班级计算机20034班)金必培(学号3035211119班级计算机20034班)贺军(学号3035211118班级计算机20034班)联系电话1377787623113634111565EMAILXIAOHUI5551SINACOMYUXUEYONG2004163COM任课教师王云武报告递交日期2004年12月16日中国象棋游戏实验报告第2页共30页一.系统功能说明本游戏程序为中国象棋双人对下,只要有一方的将(帅)被对方吃掉后系统自动判断输赢,并显示BLACKISWINNINGTHEGAME或(REDISWINNINGTHEGAME)。在走棋过程中,系统自动提示红(黑)方走。如果有一方想放弃本局,就可以点击象棋框右边的退出框。如果一局结束后想继续走,则只要用鼠标点击右边的开始框,则进行新一局游戏(具体游戏界面见附录二)。二.使用说明(1)本程序所使用库函数说明INCLUDESTDIOHSTDIOH中的基本函数;INCLUDEPROCESSHPROCESSH中的EXIT(0)函数;INCLUDEDOSHDOSH中相关鼠标操作设置;INCLUDEMATHHMATHH中的FABS()函数;INCLUDECONIOHINCLUDEGRAPHICSHGRAPHICSH中的SETCOLOR(),SETFILLSTYLE(),LINE(),MOVETO(),FLOODFILL(),CIRCLE(),RECTANGE()等函数;(2)程序使用说明鼠标点击棋子一下(棋子外圈变红色),则可以移动当前的棋子;鼠标点击两下(棋子外圈变白色),则取消当前所选的棋子。三.程序结构1.程序结构说明见中国象棋流程图(附录一)。2.重要数据的说明见附录二棋子半径R17,棋盘框窗口(60,50,380,410),操作者框窗口(460,40,570,90),开始框窗口(460,110,570,160),退出框窗口(460,180,570,230),游戏说明框窗口(460,240,570,410)。3.程序函数清单(1)自己所编的小型汉字库VOIDGET_HZINTHANZI,UNSIGNEDCHARBUR;(2)显示汉字VOIDPRINT_HZUNSIGNEDCHARMAT,INTCOLOR,INTX,INTY;(3)画棋子VOIDDRAWQIZISTRUCTMOUSEMOUSE1,INTCOLOR;(4)初始化游戏(显示游戏棋盘包括操作、开始、退出、游戏说明框,中国象棋游戏实验报告第3页共30页棋子)VOIDSHOWQIPAN;(5)鼠标初始化VOIDINITMOUSE;(6)初始鼠标位置VOIDCURSTTOXYINTX,INTY;(7)显示开始框SHOWKSKINTCOLOR;(8)显示退出框SHOWTCKINTCOLOR;(9)显示说明框SHOWSMKINTCOLOR;(10)显示操作框SHOWCZKINTCOLOR;(11)取消当前鼠标位置VOIDCANCELMOUSEINTX,INTY;(12)显示鼠标位置VOIDSHOWMOUSEINTX,INTY;(13)读取当前鼠标位置VOIDREADMOUSEINTBOTTOM,INTMOUSEX,INTMOUSEY;(14)判断各个棋子的步法INTJUDGESTEPRIGHTSTRUCTMOUSEMOUSE0,STRUCTMOUSEMOUSE1,INTA109;(15)是否退出游戏INTISOUTGAMEINTMOUSEX,INTMOUSEY;(16)是否存在棋子INTISEXISTQISTRUCTMOUSEMOUSE,INTA109,INTNUMBER;(17)是否开始游戏INTBEGINGAMEINTMOUSEX,INTMOUSEY;(18)判断输赢INTCHECKWININTTEMP;(19)是否要取消当前要移动的起子INTISCANCELQIZISTRUCTMOUSEMOUSE0,STRUCTMOUSEMOUSE1(20)改变棋子VOIDCHANGEQIZISTRUCTMOUSEMOUSE0,STRUCTMOUSEMOUSE1;(21)改变棋子边框颜色VOIDCHANGECOLORSTRUCTMOUSEMOUSE0;(22)游戏界面初始化VOIDNEWGAME;(23)结束游戏VOIDGAMEOVER;中国象棋游戏实验报告第4页共30页四.系统设计难点及其解决方法(1)由于本游戏是在TC下运行的,而TC不能直接输出汉字,则在游戏界面上的汉字输出有一定的问题。在本程序中,故我们采用自行设计1616的点阵的汉字模型,采用汉字显示原理在TC中进行输出。(2)由于本程序采用鼠标操作,则在鼠标移动的同时,必须同时消隐原位置的鼠标图案,并且重新附上鼠标处原游戏界面图案。由于鼠标移动的不确定性,从而使鼠标位置的原游戏界面图案较复杂。本程序中采用的解决方法是为鼠标静态申请相应大小的空间用以存储鼠标位置的原背景图案,当鼠标移动时,先在鼠标原位置附上所保存的图案,接着在新位置显示鼠标,从而使鼠标实现移动。(3)由于棋子是动态移动,则同鼠标一样必须实现棋子的显示与消隐,但棋盘的边框线条较复杂。若采用(2)中鼠标消隐原理,则将要消耗很多空间。例如为每个棋子申请相应大小的空间用以保存背景图案,则空间大小为323434273984(B)7225(KB),从而可以看出所需空间较大。考虑到该方法与本程序的不兼容性及消耗空间较大,本程序采用每次移动棋子时,棋盘画面刷新一次的方法来实现棋子的消隐,但这也导致了棋盘画面由于刷新而不稳定的后果。(4)象棋游戏程序中的步法正确性的判断是较复杂的,因为各个棋子的规则较复杂,考虑的情况较多。本游戏采用A109数组与棋盘的10行9列棋格一一相对应的方法来判断棋子从MOUSE0移到MOUSE1处的正确性(MOUSE0与MOUSE1是存储棋子相应的行列坐标的结构)。五.不足之处(1)正如上面(3)所述由于采用刷新方法来实现棋子的消隐,而导致了棋盘界面的不稳定,这是本游戏程序较大的不足,若采用棋盘棋子分块描绘的方法,则在移动棋子时,只能改变局部棋盘或棋子,从而能实现棋盘的稳定显示,但此方法与我们所编的程序的实现在本质上的区别,故我们未采用。六.人员分工说明谢剑(组长)流程图的设计,大部分的程序都是谢剑编的,包括最后程序的连接与调试。最后实验报告有俞雪永与谢剑所完成。俞雪永设计了游戏界面(附录二)及界面程序,画鼠标及程序。谭书舟、金必培、贺军汉字模型的设计、描绘及数据统计和部分鼠标相关函数。七.源程序见附录三
编号:201311181310500934    类型:共享资源    大小:216.00KB    格式:DOC    上传时间:2013-11-18
  
5
关 键 词:
专业文献 学术论文 精品文档 vc++象棋
  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:vc++象棋程序设计正文.doc
链接地址:http://www.renrendoc.com/p-100934.html

当前资源信息

4.0
 
(2人评价)
浏览:18次
网游小王子上传于2013-11-18

官方联系方式

客服手机:17625900360   
2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   

精品推荐

相关阅读

人人文库
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

网站客服QQ:2846424093    人人文库上传用户QQ群:460291265   

[email protected] 2016-2018  renrendoc.com 网站版权所有   南天在线技术支持

经营许可证编号:苏ICP备12009002号-5