#include#include

#define INTERVAL 50 //前面的间隔

#define CHESS_GRID_SIZE 70 //格子宽度

#define ROW 10

#define COL 9

enum PIECES//枚举棋子

{

車,馬,象,士,将,砲,卒,

俥,马,相,仕,帥,炮,兵,

SPACE,BEGIN,END

};//红黑方棋子、

int redChess[] ={ 車, 馬, 象, 士, 将, 砲, 卒};int blackChess[] ={ 俥, 马, 相, 仕, 帥, 炮, 兵 };const char*chessName[] = { "車", "馬", "象", "士", "将", "砲", "卒", "俥", "马", "相", "仕", "帥", "炮", "兵"};struct Chess//棋子属性

{intx;inty;int id;//哪个棋子

int type;//是哪一方的棋子 红,黑?

bool river;//判断小兵是否过了河

};struct Chess map[ROW][COL];//结构体数组,用来保存每一个点的信息

POINT begin = { -1, -1 }, end = { -1, -1 };//保存前后两次点击的数组下标

int state =BEGIN;//初始化游戏数据

voidGameInit()

{for (int i = 0; i < ROW; i++)

{for (int k = 0; k < COL; k++)

{int chessname =SPACE;int mcolor =BLACK;//黑棋

if (i <= 4)

{

mcolor=BLACK;//初始化第一行的棋子,

if (i == 0)

{if (k <= 4)

{

chessname=blackChess[k];

}else{

chessname= blackChess[8-k];

}

}//设置炮

if (i == 2 && (k == 1 || k == 7))

{

chessname=blackChess[砲];

}//设置小兵

if (i == 3 && k % 2 == 0)

{

chessname=blackChess[卒];

}

}//紅棋

else{

mcolor=RED;//初始化第一行的棋子,

if (i == 9)

{if (k <= 4)

{

chessname=redChess[k];

}else{

chessname= redChess[8 -k];

}

}//设置炮

if (i == 7 && (k == 1 || k == 7))

{

chessname=redChess[炮];

}//设置小兵

if (i == 6 && k % 2 == 0)

{

chessname=redChess[兵];

}

}

map[i][k].id=chessname;

map[i][k].river= false;

map[i][k].type=mcolor;

map[i][k].x= k*CHESS_GRID_SIZE +INTERVAL;

map[i][k].y= i*CHESS_GRID_SIZE +INTERVAL;

}

}

}//游戏的绘制函数

voidGameDraw()

{//设置背景颜色 red black

setbkcolor(RGB(252, 215, 162));

cleardevice();//绘制棋盘

setlinecolor(BLACK);

setlinestyle(PS_SOLID,2);for (int i = 0; i < 10; i++)

{//画横线

line(INTERVAL, i*CHESS_GRID_SIZE + INTERVAL, 8 * CHESS_GRID_SIZE + INTERVAL, i*CHESS_GRID_SIZE +INTERVAL);//画竖线

if (i < 9)

{

line(i*CHESS_GRID_SIZE + INTERVAL, INTERVAL, i*CHESS_GRID_SIZE + INTERVAL, 9 * CHESS_GRID_SIZE +INTERVAL);

}

}

rectangle(INTERVAL- 5, INTERVAL - 5, 8 * CHESS_GRID_SIZE + INTERVAL+5, 5+9 * CHESS_GRID_SIZE +INTERVAL);//楚河汉界显示

setfillcolor(RGB(252, 215, 162));

fillrectangle(INTERVAL,4 * CHESS_GRID_SIZE + INTERVAL, 8 * CHESS_GRID_SIZE + INTERVAL, 5 * CHESS_GRID_SIZE +INTERVAL);//显示文字

char river[20] = "楚河 汉界";

settextstyle(50, 0, "楷体");

settextcolor(BLACK);

setbkmode(TRANSPARENT);

outtextxy(INTERVAL+100, 4 * CHESS_GRID_SIZE + INTERVAL+10, river);//画九宫格//画上面

line(3 * CHESS_GRID_SIZE + INTERVAL, INTERVAL, 5 * CHESS_GRID_SIZE + INTERVAL, 2 * CHESS_GRID_SIZE +INTERVAL);

line(3 * CHESS_GRID_SIZE + INTERVAL, 2 * CHESS_GRID_SIZE + INTERVAL, 5 * CHESS_GRID_SIZE +INTERVAL, INTERVAL);//画下面

line(3 * CHESS_GRID_SIZE + INTERVAL, 7 * CHESS_GRID_SIZE + INTERVAL, 5 * CHESS_GRID_SIZE + INTERVAL, 9 * CHESS_GRID_SIZE +INTERVAL);

line(3 * CHESS_GRID_SIZE + INTERVAL, 9 * CHESS_GRID_SIZE+INTERVAL,5*CHESS_GRID_SIZE+INTERVAL,7*CHESS_GRID_SIZE+INTERVAL);//画棋子

settextstyle(30, 0, "楷体");for (int i = 0; i < ROW; i++)

{for (int k = 0; k < COL; k++)

{if (map[i][k].id !=SPACE)

{

setlinecolor(map[i][k].type);

fillcircle(map[i][k].x, map[i][k].y,30);

fillcircle(map[i][k].x, map[i][k].y,25);

settextcolor(map[i][k].type);

outtextxy(map[i][k].x-10, map[i][k].y-10, chessName[map[i][k].id]);

}

}

}

}voidMouseControl()

{if(MouseHit())

{

MOUSEMSG msg=GetMouseMsg();if (msg.uMsg ==WM_LBUTTONDOWN)

{//获取鼠标点击的数组的下标

int row = (msg.y-INTERVAL)/CHESS_GRID_SIZE;int col = (msg.x-INTERVAL)/CHESS_GRID_SIZE;if (state ==BEGIN)

{

state=END;

begin.x=row;

begin.y=col;

}else if (state ==END)

{

state=BEGIN;

begin.x=row;

begin.y=col;

}

printf("%d,%d %d\n", row, col, state);

}

}

}voidchessMove()

{if (begin.x != -1 && end.x != -1 && !(begin.x == end.x &&begin.y ==end.y))

{

map[end.x][end.y].id=map[begin.x][begin.y].id;

map[end.x][end.y].type=map[begin.x][begin.y].type;

map[end.x][end.y].river=map[begin.x][begin.y].river;

map[begin.x][begin.y].id=SPACE;

}

}intmain555()

{//创建一个图形窗口

initgraph(800,800,SHOWCONSOLE);

GameInit();

printf("欢迎来到顽石老师课堂,中国象棋");

BeginBatchDraw();while (1)

{

GameDraw();

FlushBatchDraw();

MouseControl();

chessMove();

}return 0;

}

安卓android中国象棋chess程序项目源码源代码,C/C++编程笔记:C语言打造中国象棋游戏,项目源代码分享!,c语言笔记大全...相关推荐

  1. 安卓Android收银系统手机app源码在线演示实景分享

    1,综述:安卓Android收银系统手机app源码版,部分在线实景页面介绍. 1.1,基于安卓8.0原生开发 1.2,完整源码,可独立部署 1.3,商家,店长,收银员,分权限使用 1.4,与桌面收银, ...

  2. 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名

    前言 本文给大家分享的是如何通过利用Python制作艺术签名生成器,废话不多直接开整~ 开发工具 Python版本: 3.6 相关模块: requests模块 PIL模块 PyQt5模块 环境搭建 安 ...

  3. java计算机毕业设计基于安卓Android的城市公交查询app(源码+系统+mysql数据库+Lw文档)

    项目介绍 本课题城市公交线路查询,采用安卓平台,所完成的可扩展性.可靠性以及可重用性的城市公交线路查询系统,以满足现实生活的需要.数据库选用MySQL. 前端为移动端,采用安卓框架uniapp,开发软 ...

  4. java计算机毕业设计基于安卓Android的桃源婚恋交友APP(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着信息技术的发展,带动了各种管理系统和应用软件的产生,其中婚恋交友系统就是其中之一.每一个人都会经历过学习.恋爱.婚姻的过程,大龄青年也越来越多,大家都忙于学习或者工作,失去了许多机会.而 ...

  5. 计算机毕业设计安卓Android的家教平台软件app(源码+系统+mysql数据库+Lw文档)

    介绍 许多大学生都利用做兼职来充实课外生活或者补贴家用,还有一些老师利用课余时间或者假期时间做家教来赚一些外快,所以家教行业当下很流行,而许多家长在寻找家教时往往像大海捞针而且信息渠道不足,而许多大学 ...

  6. java计算机毕业设计基于安卓Android的人在旅途旅行出行APP(源码+系统+mysql数据库+Lw文档)

    项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容.其次,剖析系统需求分析,弄明白"做什么",分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求.然后在明白 ...

  7. java计算机毕业设计基于安卓Android的仓库货物管理app(源码+系统+mysql数据库+Lw文档)

    项目介绍 本文介绍了仓库货物管理APP软件开发建设的意义和国内外发展现状,然后详细描述了所开发手机APP的可行性分析,并分析了手机APP所要实现的功能.因为仓库货物管理设施较多,而且人口密集,不能更好 ...

  8. android 播放器封装,Android视频播放最全总结:MediaPlayer+TextureView封装一个完美实现全屏、小窗视频播放器,附项目源码...

    原标题:Android视频播放最全总结:MediaPlayer+TextureView封装一个完美实现全屏.小窗视频播放器,附项目源码 作者:xiaoyanger 来源:http://www.jian ...

  9. java毕业生设计中国古诗词学习平台计算机源码+系统+mysql+调试部署+lw

    java毕业生设计中国古诗词学习平台计算机源码+系统+mysql+调试部署+lw java毕业生设计中国古诗词学习平台计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 ...

  10. MongoDB的使用学习之(七)MongoDB的聚合查询(spring-data-mongodb两种方式)附项目源码

    虽然只看了这一篇文章,但应该这个系列的文件应该都不错. http://www.cnblogs.com/ontheroad_lee/p/3756247.html 铛铛铛--项目源码下载地址:http:/ ...

最新文章

  1. RxJava 过滤操作符skip 与 skipLast
  2. SWIG和PInvoke学习(1)
  3. Scala中Case Class使用详细解析
  4. Linux下更好用的帮助命令—cheat
  5. 我的第一个Android程序
  6. 软件的安装(包括yum仓库与源码包的安装)
  7. java filechannel 空_Java NIO FileChanel
  8. 旷视申请赴港IPO:阿里蚂蚁金服持股近30%
  9. html input type=quot;filequot;,input[type='file']默认样式
  10. [转帖]我们是OIer、
  11. Java aop中参数传递
  12. 如何从官网下载Hibernate源码与jar包
  13. 爬虫手册03 Selenium的使用
  14. html5时钟在图片上画指针,HTML5使用canvas元素绘制指针式动画时钟_网页代码站(www.webdm.cn)...
  15. 如何测试光纤系统中的插入损耗
  16. 光学字符识别引擎 tesseract-ocr 简介
  17. 记一次Maximo移动端app报错的原因
  18. 【软件开发】Java语言的简单介绍
  19. GitHub 标星 2.9w+,我发现了一个宝藏项目,作为编程新手有福了!
  20. 语音情感识别常见的声学特征

热门文章

  1. 20151024-1025-威海-第5届全国高校软件工程专业教育年会参会总结
  2. 年薪最低十万签订协议
  3. Windows下将txt导入MySQL及远程连接设置
  4. 记一次艰辛的vsftpd搭建,排错过程
  5. 关于if嵌套性能的问题
  6. [HDU 2096] 小明A+B
  7. 第16 17章节-Python3.5-Django知识点整理 15
  8. redis的基础配置
  9. JS打开摄像头并截图上传
  10. foreman架构的引入3-安装Foreman1.5.3架构(all-in-one)