绘制中国象棋棋盘(c语言)

绘制中国象棋棋盘(c语言)
绘制中国象棋棋盘(c语言)

//编译运行环境vs2013

//作者:E蓑烟雨

//QQ:1194758555,一起交流学习。

//修改时间按:2015-05-13

#include

#include

int main()

{

initgraph(600,800);//初始化绘图环境

setorigin(300, 400);//设置原点

setbkcolor(RGB(225,160,115));//设置绘图背景色

cleardevice();//用上面背景色清空屏幕

setlinecolor(RED);//设置线条颜色

setlinestyle(PS_SOLID | PS_ENDCAP_FLAT, 4);//设置线条格式

for (int i = -280; i <= 280; i = i + 70)//画y轴负半轴平行于y轴线{

line(i, -360, i, -78);

}

for (int i = -360; i <= -70; i = i + 70)//画y轴负半轴平行于x轴线{

line(-280, i, 280, i);

}

for (int i = 0; i <= 280; i = i + 70)//画y轴正半轴平行于y轴线

{

line(-280, i, 280, i);

}

for (int i = -280; i <= 280; i = i + 70)//画y轴正半轴平行于x轴线{

line(i, 280, i, 0);

}

line(-71, -360, 70, -219);//画y轴负半轴帅的位置

line(-70, -219, 70, -360);

line(-70, 280, 70, 140);//画y轴正半轴将的位置

line(-70, 140, 70, 280);

line(-274, -153, -274, -170);//画y轴负半轴车的位置line(-276, -155, -276 + 15, -155);

line(-274, -147, -274, -129);

line(-276, -145, -276 + 15, -145);

for (int i = -135; i <= 275;i+=140)

{

line(i, -153, i, -170);

line(i, -147, i, -129);

line(i, -155, i + 15, -155);

line(i, -145, i + 15, -145);

}

line(274, -153, 274, -170);

line(276, -155, 276 - 15, -155);

line(274, -147, 274, -129);

line(276, -145, 276 - 15, -145);

for (int i = -145; i <= 272; i += 140)

{

line(i, -153, i, -170);

line(i, -147, i, -129);

line(i, -155, i-15, -155);

line(i, -145, i - 15, -145);

}

line(-215, -223, -215, -240);

line(-215, -225, -215 - 15, -225);

line(-215, -217, -215, -200);

line(-215, -215, -215 - 15, -215);

line(-205, -223, -205, -240);

line(-205, -225, -205 + 15, -225);

line(-205, -217, -205, -200);

line(-205, -215, -205 + 15, -215);

line(215, -223, 215, -240);

line(215, -225, 215 + 15, -225);

line(215, -217, 215, -200);

line(215, -215, 215 + 15, -215);//

line(205, -223, 205, -240);

line(205, -225, 205 - 15, -225);

line(205, -217, 205, -200);

line(205, -215, 205 - 15, -215);

line(-274, 67, -274, 50);//画y轴正半轴车的位置

line(-274, 65, -274 + 15, 65);

line(-274, 73, -274, 90);

line(-274, 75, -274 + 15, 75);

for (int i = -135; i <= 275; i += 140)

{

line(i, 67, i, 50);

line(i, 73, i, 90);

line(i, 65, i + 15, 65);

line(i, 75, i + 15,75 );

}

line(274, 67, 274, 50);

line(274, 65, 274 - 15, 65);

line(274, 73, 274, 90);

line(274, 75, 274 - 15, 75);

for (int i = -145; i <= 272; i += 140)

{

line(i, 67, i, 50);

line(i, 73, i, 90);

line(i, 65, i - 15, 65);

line(i, 75, i - 15, 75);

}

line(-215, 135, -215, 118);//画y轴负半轴半炮的位置

line(-213, 135, -213 - 15, 135);

line(-215, 145, -215, 162);

line(-213, 145, -213 - 15, 145);

line(-205, 137, -205, 118);

line(-205, 135, -205 + 15, 135);

line(-205, 143, -205, 162);

line(-205, 145, -205 + 15, 145);//画y轴负正半轴炮的位置line(215, 135, 215, 118);

line(213, 135, 213 + 15, 135);

line(215, 145, 215, 162);

line(213, 145, 213 + 15, 145);

line(205, 137, 205, 118);

line(205, 135, 205 - 15, 135);

line(205, 143, 205, 162);

line(205, 145, 205 - 15, 145);

setlinecolor(RED);//设置线条颜色

setlinestyle(PS_SOLID | PS_ENDCAP_FLAT, 5);//设置线条格式

line(-280, -362, -280, 282); //画边框

line(-280, -360, 280, -360);

line(280, -362, 280, 282);

line(-280, 280, 280, 280);

settextcolor(RED);//设置字体颜色

settextstyle(30, 25, _T("楷体"), 0, -900, 100, false, false, false);//设置字体高度,宽度,字体样式,旋转角度

outtextxy(-190, -35, _T("河楚"));//在指定位置输出字体

settextstyle(30, 25, _T("楷体"), 0, 900, 100, false, false, false);//设置字体高度,宽度,字体样式,旋转角度

outtextxy(120, -35, _T("汗界"));//在指定位置输出字体

getch();//按任意键退出

closegraph();//关闭图形界面

return 0;

}

//运行效果:

实验报告 马踏棋盘

2.4题马踏棋盘 题目:设计一个国际象棋的马踏棋盘的演示程序 班级:姓名:学号:完成日期: 一.需求分析 (1)输入的形式和输入值的范围:输入马的初始行坐标X和列坐标Y, X和Y的范围都是[1,8]。 (2)输出形式: 以数组下表的形式输入,i为行标,j为列标,用空格符号隔开。以棋盘形式输出,每一格打印马走的步数,这种方式比较直观 (3)程序所能达到的功能:让马从任意起点出发都能够遍历整个8*8的 棋盘。 (4)测试数据,包括正确输入及输出结果和含有错误的输入及其输出结 果。数据可以任定,只要1<=x,y<=8就可以了。 正确的输出结果为一个二维数组,每个元素的值表示马行走的第几步,若输入有错,则程序会显示:“输入有误!请重新输入……”并且要求用户重新输入数据,直至输入正确为止。 二.概要设计 (1)、位置的存储表示方式 (2) typedef struct { int x; int y; int from; }Point; (2)、栈的存储方式 #define STACKSIZE 70 #define STACKINCREASE 10 typedef struct Stack { Point *top; Point *base; int stacksize; }; (1)、设定栈的抽象数据类型定义: ADT Stack { 数据对象:D={ai | ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系:R1={|ai-1, ai∈D,i=2,…,n} 约定an端为栈顶,ai端为栈顶。 基本操作: InitStack(&s) 操作结果:构造一个空栈s, DestroyStack(&s) 初始条件:栈s已存在。 操作结果:栈s被销毁。 ClearStack(&s) 初始条件:栈s已存在。

绘制象棋棋盘

沈阳航空航天大学 课程设计 学号2009040603046 班级94060302 姓名崔凯宏 指导教师刘学平 2011年7月6 日

沈阳航空航天大学 课程设计任务书 学院:机电工程学院专业:车辆工程班级:94060302 学号:2009040603046 题目:绘制象棋棋盘 一、课程设计时间 2011年6月27日~2011年7月1日(第17周),共计1周。 二、课程设计内容 在窗体上或者PictureBox控件上绘制象棋棋盘(不必表示棋子)。 要求,程序运行后,如果改变了窗体的大小,棋盘将作同比例的改变。 三、课程设计要求 程序质量: ?贯彻事件驱动的程序设计思想。 ?用户界面美观、醒目,操作方便;可以加以其它功能或修饰。 ?代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: ?课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提 供的模板。 四、指导教师和学生签字 指导教师:________ 学生签名:________ 五、成绩 六、教师评语

目录 一、需求分析 (4) 二、设计分析 (5) 三、关键技术 (7) 四、总结 (9) 五、完整的源程序 (10) 六、参考文献 (11)

一、需求分析 此程序要求绘制象棋棋盘,同时使界面清晰、美观,操作简单,程序运行后,如果改变了窗体的大小,棋盘将作同比例的改变。 要求: ① 贯彻事件驱动的程序设计思想。 ② 用户界面美观、醒目,操作方便;可以加以其它功 能或修饰。 ③ 代码应适当缩进,并给出必要的注释,以增强程序 的可读性。

二、设计分析 (1)基本原理:利用VB 提供的丰富的图形功能,通过图形 控件进行图形和绘图操作,然后通过图形方法在窗体上输出图形和文字,主要运用VB 图形方法的Cls 功能使棋盘可以随着窗体大小的变化而成比例变化。 图1 总体设计 呈现棋盘 利用坐标绘制 图形 定义窗 体坐标系

马踏棋盘实验报告

西安郵電學院 数据结构 课内实验报告书 院系名称:计算机学院 实验题目:马踏棋盘 学生姓名: 专业名称:计算机科学与技术班级: 学号: 时间: 2011年10月10日指导教师:曾艳

一、实验题目:马踏棋盘 二、实验目的: 通过本次实验,熟练掌握抽象数据类型栈和队列的实现,学会使用栈和队列解决具体应用问题,从而体会栈和队列的特点。 三、实验要求: 设计一个国际象棋的马踏遍棋盘的演示程序。 要求:将马随机放在国际象棋的8×8棋盘Board[8][8]的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,输出之 四、设计与实现过程 (1)栈或队列的定义及其主要操作的实现 struct Chess { int x; int y; int h;/*h记录下一次需要试探的马字格式的下标值*/ }Chess1[65]; (2)主要算法的描述 void Handlechess(int m,int n) { int flag=1,i; double j=0.0;/*增加了j用于统计while循环的执行次数,很好奇循环到底执行了多少次*/ int chessx[8]={-2,-2,-1,-1,1,1,2,2};/*马字的格式的8个位置,按下标序依次试探*/ int chessy[8]={-1,1,-2,2,-2,2,-1,1}; for(i=1;i<=64;i++) Chess1[i].h=0;/*赋初值*/ chess[m][n]=flag; Chess1[flag].x=m; Chess1[flag].y=n; while(flag<64) { j+=1.0; for(i=Chess1[flag].h;i<8;i++)/*i的初值由Chess1[flag].h确定*/ { m=Chess1[flag].x+chessx[i]; n=Chess1[flag].y+chessy[i]; if((m>=0&&m<=7&&n>=0&&n<=7)&&(chess[m][n]==0))/*去掉了函数,改为直接用关系表达式判断,提高运行速度*/ { Chess1[flag].h=i+1;/*h记录下一次需试探马字格式位置的下标*/ flag++;

html5做的中国象棋棋盘

中国象棋棋盘