资源描述:
《vc论文中国象棋系统双人对下游戏程序设计正文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、程序设计高级实验C大型作业报告题目:中国象棋系统双人对下游戏程序。一.系统功能说明本游戏程序为中国象棋双人对下,只要有一方的将(帅)被对方吃掉后系统自动判断输赢,并显示Blackiswinningthegame或(Rediswinningthegame)。在走棋过程中,系统自动提示红(黑)方走。如果有一方想放弃本局,就可以点击象棋框右边的退出框。如果一局结束后想继续走,则只要用鼠标点击右边的开始框,则进行新一局游戏(具体游戏界面见附录二)。二.使用说明(1)本程序所使用库函数说明includestdio.h中的基本
2、函数;includeprocess.h中的exit(0)函数;includedos.h中相关鼠标操作设置;includemath.h中的fabs()函数;includeincludegraphics.h中的setcolor(),setfillstyle(),line(),moveto(),floodfill(),circle(),rectange()等函数;中国象棋游戏实验报告第31页共31页(2)程序使用说明鼠标点击棋子一下(棋子外圈变红
3、色),则可以移动当前的棋子;鼠标点击两下(棋子外圈变白色),则取消当前所选的棋子。一.程序结构1.程序结构说明见中国象棋流程图(附录一)。2.重要数据的说明见附录二棋子半径R=17,棋盘框窗口(60,50,380,410),操作者框窗口(460,40,570,90),开始框窗口(460,110,570,160),退出框窗口(460,180,570,230),游戏说明框窗口(460,240,570,410)。3.程序函数清单(1)自己所编的小型汉字库voidget_hz(inthanzi,unsignedcharbur[]);(2)显
4、示汉字voidprint_hz(unsignedchar*mat,intcolor,intx,inty);(3)画棋子voiddrawQizi(structmouse*mouse1,intcolor);(4)初始化游戏(显示游戏棋盘包括操作、开始、退出、游戏说明框,棋子)voidshowQiPan();(5)鼠标初始化voidinitmouse();(6)初始鼠标位置voidcursttoxy(intx,inty);(7)显示开始框showKSK(intcolor);(8)显示退出框showTCK(intcolor);(9)显示说明
5、框showSMK(intcolor);(10)显示操作框showCZK(intcolor);(11)取消当前鼠标位置voidcancelMouse(intx,inty);(12)显示鼠标位置voidshowMouse(intx,inty);(13)读取当前鼠标位置voidreadmouse(int*bottom,int*mousex,int*mousey);(14)判断各个棋子的步法中国象棋游戏实验报告第31页共31页intjudgestepright(structmouse*mouse0,structmouse*mouse1,in
6、ta[10][9]);(1)是否退出游戏intisoutgame(intmousex,intmousey);(2)是否存在棋子intisexistQi(structmouse*mouse,inta[10][9],intnumber);(3)是否开始游戏intbegingame(intmousex,intmousey);(4)判断输赢intcheckwin(inttemp);(5)是否要取消当前要移动的起子intiscancelQizi(structmouse*mouse0,structmouse*mouse1)(6)改变棋子void
7、changeQizi(structmouse*mouse0,structmouse*mouse1);(7)改变棋子边框颜色voidchangecolor(structmouse*mouse0);(8)游戏界面初始化voidnewGame();(9)结束游戏voidGameOver();一.系统设计难点及其解决方法(1)由于本游戏是在TC下运行的,而TC不能直接输出汉字,则在游戏界面上的汉字输出有一定的问题。在本程序中,故我们采用自行设计16×16的点阵的汉字模型,采用汉字显示原理在TC中进行输出。(2)由于本程序采用鼠标操作,则在鼠
8、标移动的同时,必须同时消隐原位置的鼠标图案,并且重新附上鼠标处原游戏界面图案。由于鼠标移动的不确定性,从而使鼠标位置的原游戏界面图案较复杂。本程序中采用的解决方法是:为鼠标静态申请相应大小的空间用以存储鼠标位置的原背景图案,当鼠标移动