c 语言图形编程自制象棋
用 C 语言做个象棋是不容易的, 涉及到的知识点有很多方面, C 语言里面的基本数据类型、运算符、顺序,分支,循环结构。还有运用到数组,函数,指针,以及我们的位运算等。做出来的象棋程序,自然的话代码也不少的,下面的
话我就发一部分吧,把棋盘的话,棋子的代码写出来,自然
的话,各位都需要自己找好素材,以及我们的编译器要用到
图形库的,记得安装好。下面我就把棋盘的代码发出来在下
面
/**************************************************/
* 函数 :/* 功能 :/* 参数 :/* 返
回:/************************************************ */#include 'stdio.h'#include 'stdlib.h'#include 'graphics.h'#include 'conio.h'void qipan();void baizi();void mouse();void baiqi(int x,int y,char *q);huazi(int x,int
y,char*s);panduanzouqi(int a,int b); // 判断是否可走子,a,b 代
表棋盘 90 个位置的之前点的和后点的位置的标记 IMAGE t[14]; // 存棋子(图片)地址的数组 ,t[0]~t[6] 依次是黑卒到黑将,t[7]~t[13] 依次是红兵到红帥 IMAGE tt[3];IMAGE jt[90]; //
存棋盘各个位置截图的数组struct zuobiao // 棋盘所有位置的
信息 {int x;int y;char zt[5]; //当前位置的状态是什么棋子,或
者为空 int id; //1 为黑子, 2 为红子 int bj;}zb[90];int r;struct
huiqi // 悔棋 {int x;int y;char zt[5];int id;int b;}hq[270];int
h=0;int oo=3;int main(){initgraph(640,
480);loadimage(&t[0],_T('img//卒.jpg'));// 读取图片文件
loadimage(&t[1],_T('img//黑
炮.jpg'));loadimage(&t[2],_T('img// 黑
車.jpg'));loadimage(&t[3],_T('img// 黑马.jpg'));loadimage(&t[4],_T('img// 黑象.jpg'));loadimage(&t[5],_T('img//
士.jpg'));loadimage(&t[6],_T('img//
将.jpg'));loadimage(&t[7],_T('img//
兵.jpg'));loadimage(&t[8],_T('img//
炮.jpg'));loadimage(&t[9],_T('img//
車.jpg'));loadimage(&t[10],_T('img//
马.jpg'));loadimage(&t[11],_T('img//
相.jpg'));loadimage(&t[12],_T('img//
仕.jpg'));loadimage(&t[13],_T('img//
帥.jpg'));loadimage(&tt[0],_T('img// 开始游戏.jpg'));loadimage(&tt[1],_T('img// 悔
棋.jpg'));loadimage(&tt[2],_T('img// 退出游
戏.jpg'));qipan();baizi();mouse();//setbkcolor(BLACK);getch();c
losegraph();return 0;}void baiqi(int x,int y,char *q)//悔棋重绘
{if(strcmp(q,' 卒')==0){putimage(x,y,&t[0]);}if(strcmp(q,'
黑炮
')==0){putimage(x,y,&t[1]);}if(strcmp(q,'
黑車
')==0){putimage(x,y,&t[2]);}if(strcmp(q,'
黑马
')==0){putimage(x,y,&t[3]);}if(strcmp(q,'
黑象
')==0){putimage(x,y,&t[4]);}if(strcmp(q,'
士
')==0){putimage(x,y,&t[5]);}if(strcmp(q,'
将
')==0){putimage(x,y,&t[6]);}if(strcmp(q,'
兵