设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>计算机毕业设计 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
VC中国象棋双人对下169
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

一. 系统功能说明
    本游戏程序为中国象棋双人对下,只要有一方的将(帅)被对方吃掉后系统自动判断输赢,并显示Black is winning the game或(Red is winning the game)。在走棋过程中,系统自动提示红(黑)方走。如果有一方想放弃本,就可以点击象棋框右边的退出框。如果一局结束后想继续走,则只要用鼠标点击右边的开始框,则进行新一局游戏(具体游戏界面见附录二)。

二. 使用说明

(1)本程序所使用库函数说明
include<stdio.h>     http://www.16sheji8.cn/
stdio.h中的基本函数;
include<process.h>  
  process.h中的exit(0)函数;
include<dos.h>    
dos.h中相关鼠标操作设置;
include<math.h>    
math.h中的fabs()函数;
include<conio.h>
include<graphics.h>
    graphics.h中的 setcolor(),setfillstyle(),line(),moveto(),
    floodfill(),circle(),rectange()等函数;

(2)程序使用说明
     鼠标点击棋子一下(棋外圈变红色),则可以移动当前的棋子;鼠标点击两下(棋子外圈变白色),则取消当前所选的棋子。

三. 程序结构
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) 自己所编的小型汉字库
void get_hz(int hanzi,unsigned char bur[]);
(2) 显示汉字http://www.16sheji8.cn/
void print_hz(unsigned char  *mat,int color,int x,int y);
(3) 画棋子
void drawQizi(struct mouse* mouse1,int color);
(4) 初始化游戏(显示游戏棋盘包括操作、开始、退出、游戏说明框,棋子)
void showQiPan();
(5) 鼠标初始化
void  initmouse();
(6) 初始鼠标位置
void cursttoxy(int x,int y);
(7) 显示开始框
showKSK(int color);
(8) 显示退出框
showTCK(int color);
(9) 显示说明框
showSMK(int color);
(10) 显示操作框
showCZK(int color);
(11) 取消当前鼠标位置
void cancelMouse(int x,int y);
(12) 显示鼠标位置
void showMouse(int x,int y);
(13) 读取当前鼠标位置
void readmouse(int* bottom,int* mousex,int* mousey);
(14) 判断各个棋子的步法
int judgestepright(struct mouse* mouse0,
struct mouse* mouse1,int a[10][9]);
(15) 是否退出游戏
int isoutgame(int mousex,int mousey);
(16) 是否存棋子
int isexistQi(struct mouse *mouse,int a[10][9],int number);
(17) 是否开始游戏
int begingame(int mousex,int mousey);
(18) 判断输赢http://www.16sheji8.cn/
int checkwin(int temp);
(19) 是否要取消当前要移动的起子
int iscancelQizi(struct mouse* mouse0,struct mouse* mouse1)
(20) 改变棋子
void changeQizi(struct mouse* mouse0,struct mouse* mouse1);
(21) 改变棋子边框颜色
void changecolor(struct mouse* mouse0);
(22) 游戏界面初始化
void newGame();
(23) 结束游戏
void GameOver();

 

四. 系统设计难点及其解决方法

(1)     由于本游戏是在TC下运行的,而TC不能直接输出汉字,则在游戏界面上的汉字输出有一定的问题。在本程序中,故我们采用自行设计16×16 的点阵的汉字模型,采用汉字显示原理在TC中进行输出。
(2)     由于本程序采用鼠标操作,则在鼠标移动的同时,必须同时消隐原位置的鼠标图案,并且重新附上鼠标处原游戏界面图案。由于鼠标移动的不确定性,从而使鼠标位置的原游戏界面图案较复杂。
          本程序中采用的解决方法是:为鼠标静态申请相应大小的空间用以存储鼠标位置的原背景图案,当鼠标移动时,先在鼠标原位置附上所保存的图案,接着在新位置显示鼠标,从而使鼠标实现移动。
(3)     由于棋子是动态移动,则同鼠标一样必须实现棋子的显示与消隐,但棋盘的边框线条较复杂。若采用(2)中鼠标消隐原理,则将要消耗很多空间。例如:为每个棋子申请相应大小的空间用以保存背景图案,则空间大小为:32×34×34×2=73984(B)=72.25(KB),从而可以看出所需空间较大。http://www.16sheji8.cn/
考虑到该方法与本程序的不兼容性及消耗空间较大,本程序采用每次移动棋子时,棋盘画面刷新一次的方法来实现棋子的消隐,但这也导致了棋盘画面由于刷新而不稳定的后果。
(4)     象棋游戏程序中的步法确性的判断是较复杂的,因为各个棋子的规则较复杂,考虑的情况较多。本游戏采用a[10][9]数组与棋盘的10行9列棋格一一相对应的方法来判断棋子从mouse[0]移到mouse[1]处的正确性(mouse[0]与mouse[1]是存储棋子相应的行列坐标的结构)。

五. 不足之处
(1)    正如上面(3)所述:由于采用刷新方法来实现棋子的消隐,而导致了棋盘界面的不稳定,这是本游戏程序较大的不足,若采用棋盘棋子分块描绘的方法,则在移动棋子时,只能改变局部棋盘或棋子,从而能实现棋盘的稳定显示,但此方法与我们所编的程序的实现在本质上的区别,故我们未采用。

六. 人员分工说明

   

七. 源程序
见附录三

 

 

附录一:
中国象棋流程图
 

http://www.16sheji8.cn/

 


附录二:
游戏界面

  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
基于Python的在线自主考试系 基于腾讯云的个人知识库管理系统 基于Android的酒店预定系统
基于matlab变频器控制交流电 基于微信小程序的家校联动平台管理 基于时频分析与自适应滤波技术的多
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!