C語言+圖形程式設計——自制象棋
用C語言做個象棋是不容易的,涉及到的知識點有很多方面,C語言裡面的基本資料型別、運算子、順序,分支,迴圈結構。還有運用到陣列,函式,指標,以及我們的位運算等。
做出來的象棋程式,自然的話程式碼也不少的,下面的話我就發一部分吧,把棋盤的話,棋子的程式碼寫出來,自然的話,各位都需要自己找好素材,以及我們的編譯器要用到圖形庫的,記得安裝好。下面我就把棋盤的程式碼發出來在下面
小編給大家推薦一個學習氛圍超好的地方,C/C++交流企鵝裙:870963251!適合在校大學生,小白,想轉行,想通過這個找工作的加入。裙裡有大量學習資料,有大神解答交流問題,每晚都有免費的直播課程
/**************************************************
/*函式:
/*功能:
/*引數:
/*返回:
/*************************************************/
#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();
closegraph();
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,”兵”)==0)
{
putimage(x,y,&t[7]);
}
if(strcmp(q,”炮”)==0)
{
putimage(x,y,&t[8]);
}
if(strcmp(q,”車”)==0)
{
putimage(x,y,&t[9]);
}
if(strcmp(q,”馬”)==0)
{
putimage(x,y,&t[10]);
}
if(strcmp(q,”相”)==0)
{
putimage(x,y,&t[11]);
}
if(strcmp(q,”仕”)==0)
{
putimage(x,y,&t[12]);
}
if(strcmp(q,”帥”)==0)
{
putimage(x,y,&t[13]);
}
}
void qipan()
{
C語言學習群:462127424
點選連結加入群聊【C語言】:C語言
//圖型初始化
int gdriver, gmode;
int x,y;
int fillstyle;
gdriver=DETECT;
initgraph(&gdriver, &gmode, “”);
setfillstyle(WHITE,2);
bar(0,0,640,480);
setcolor(RED);
for(x=20;x<=380;x+=45){line(x,20,x,200);line(x,245,x,425);}/*上半和下半【豎】*/
for(x=20;x<=45;x+=45){line(x,20,x,380);}/*【左】旁邊*/
for(x=380;x<=380;x+=45){line(x,200,x,425);}/*【右】旁邊*/
for(y=20;y<=200;y+=45){line(20,y,380,y);}/*上半【行】*/
for(y=20;y<=460;y+=45){line(20,y,380,y);}/*下半【行】*/
for(y=105;y<=111;y+=95){line(45,y,60,y);line(85,y,70,y);}/*畫星號【行】*/
for(x=60;x<=100;x+=100){line(x,105,x,90);line(x,130,x,116);}
for(y=115;y<=130;y+=95){line(45,y,60,y);line(85,y,70,y);}/*行*/
for(x=70;x<=100;x+=100){line(x,105,x,90);line(x,130,x,116);}/*畫星號【豎】*/
/*第二個星號右上*/
for(y=105;y<=105;y+=105){line(355,y,340,y);line(330,y,315,y);}/*行*/
for(x=340;x<=340;x+=340){line(x,130,x,115);line(x,90,x,105);}/*畫星號【豎】*/
for(y=115;y<=115;y+=115){line(340,y,355,y);line(315,y,330,y);}/*行*/
for(x=330;x<=340;x+=340){line(x,130,x,116);line(x,105,x,90);}/*豎*/
/*第三個星號*/
for(y=330;y<=340;y+=340){line(355,y,340,y);line(330,y,315,y);}/*行*/
for(x=330;x<=340;x+=340){line(x,340,x,355);line(x,315,x,330);}/*畫星號【豎】*/
for(y=340;y<=340;y+=340){line(355,y,340,y);line(315,y,330,y);}/*行*/
for(x=340;x<=444;x+=340){line(x,315,x,330);line(x,340,x,355);}/*豎*/
/*第四個星號*/
for(x=60;x<=60;x+=60){line(x,340,x,355);line(x,315,x,330);}/*左下星號【豎】*/
for(y=340;y<=340;y+=340){line(45,y,60,y);line(70,y,85,y);}/*行*/
for(y=330;y<=330;y+=330){line(45,y,60,y);line(70,y,85,y);}/*畫星號【行】*/
for(x=70;x<=70;x+=70){line(x,340,x,355);line(x,315,x,330);}/*豎*/
/*上【將位】*/
line(245,20,155,110);
line(155,20,245,110);
/*帥位*/
line(155,425,245,335);
line(155,335,245,425);
fillstyle=SOLID_FILL;/*把填充模式設計為SOLID_FILL顏色設定為青色*/
setfillstyle(fillstyle,CYAN);
bar(22,202,378,243);/*棋盤中間*/
setbkmode(TRANSPARENT);
setcolor(BLACK);
setfont(30, 0,”隸書”);
outtextxy(80, 210,”楚河 漢界”); /*字型座標*/
setfont(100, 40,”隸書”);
outtextxy(440,5,”中國”);
outtextxy(440,90,”象棋”);
setcolor(BLUE);
putimage(450,200,&tt[0]);
putimage(450,275,&tt[1]);
putimage(450,350,&tt[2]);
r=0;
for(int u=20;u<=380;u=u+45)//給棋盤x座標賦值
for(int uu=20;uu<=425;uu=uu+45)//給棋盤y座標賦值
{
getimage(&jt[r],u-20,uu-20,45,45);
zb[r].x=u-20;
zb[r].y=uu-20;
zb[r].id=0;
strcpy(zb[r].zt,”空”);
zb[r].bj=r;
r++;}
}
然後的話,自然是接著擺棋子了,下面的話各位自己去摸索一下吧,程式碼是真心太多,我最後把最終的效果圖發出來一下:
相關文章
- 關於C語言的圖形程式設計薦C語言程式設計
- C語言圖形設計 劉振安pdfC語言
- 圖形化語言Scratch之父談程式設計程式設計
- C語言程式設計C語言程式設計
- 《自制程式語言》封面設計方案徵集意見
- C語言程式設計原理C語言程式設計
- c語言程式設計題C語言程式設計
- C語言MySQL程式設計示例C語言MySql程式設計
- C 語言程式設計(unix) (轉)程式設計
- 結對程式設計(c語言)程式設計C語言
- 奇怪的C語言——C51程式設計C語言注意事項C語言程式設計
- 2012年2月程式語言排行榜:用圖形程式設計的LOGO語言程式設計Go
- C 語言程式設計利器之 CLion程式設計
- C#函數語言程式設計C#函數程式設計
- C語言程式設計基本規範C語言程式設計
- MySQL的C語言程式設計(一)MySqlC語言程式設計
- 【自制程式語言】1 - 基本語句(1)
- 計算機圖形學原理及實踐——C語言描述pdf計算機C語言
- 偽隨機數C語言程式設計隨機C語言程式設計
- C語言程式設計-漢字點陣C語言程式設計
- C++的函數語言程式設計C++函數程式設計
- C 語言程式設計習慣總結程式設計
- C語言程式設計B作業04C語言程式設計
- 初步瞭解C語言Windows程式設計C語言Windows程式設計
- Linux下C語言程式設計(轉)LinuxC語言程式設計
- 傻瓜程式設計入門(C語言版)程式設計C語言
- C語言程式設計題T1C語言程式設計
- C語言指標應用程式設計C語言指標程式設計
- 學習筆記之程式設計達到一個高的境界就是自制指令碼語言(圖)筆記程式設計指令碼
- C 語言高效程式設計與程式碼優化程式設計優化
- 《C程式設計語言》 練習3-5C程式程式設計
- C語言如何實現泛型程式設計?C語言泛型程式設計
- C語言程式設計之《資料輸出》C語言程式設計
- C語言趣味程式設計100例pdfC語言程式設計
- 大一C語言程式設計練習題C語言程式設計
- C語言 之 多執行緒程式設計C語言執行緒程式設計
- C語言程式設計——9,預處理命令C語言程式設計
- C語言高效程式設計的幾招(轉)C語言程式設計