C语言编写的黑白棋游戏源代码

温柔似野鬼°
900次浏览
2021年01月18日 14:44
最佳经验
本文由作者推荐

粮票收藏价格-政审材料范文

2021年1月18日发(作者:谢少文)

课程设计说明书

No.
1

C
语言编写的黑白棋游戏源代码

/*3.3.4
源程序
*/
#include
图形系统头文件
*/
#define LEFT 0x4b00 /*
光标左键值
*/
#define RIGHT 0x4d00 /*
光标右键值
*/
#define DOWN 0x5000 /*
光标下键值
*/
#define UP 0x4800 /*
光标上键值
*/
#define ESC 0x011b /* ESC
键值
*/
#define ENTER 0x1c0d /*
回车键值
*/
int a[8][8]={0},key,score1,scor e2;/*
具体分数以及按键与存放棋子的变量
*/
char playone[3],playtwo[3];/*
两个人的得分转换成字符串输出
*/
void playtoplay(void);/*
人人对战函数
*/
void DrawQp(void);/*
画棋盘函数
*/
void SetPlayColor(int x);/*
设置棋子第一次的颜色
*/
void MoveColor(int x,int y);/*
恢复原来棋盘状态
*/
int QpChange(int x,int y,int z);/*
判断棋盘的变化
*/
void DoScore(void);/*
处理分数
*/
void PrintScore(int n);/*
输出成绩
*/
void playWin(void);/*
输出胜利者信息
*/
/******
主函数
*********/
void main(void)
{
int gd=DETECT,gr;
initgraph(&gd,&gr,
初始化图形系统
*/
DrawQp();/*
画棋盘
*/
playtoplay();/*
人人对战
*/
getch();
closegraph();/*
关闭图形系统
*/
}
void DrawQp()/*
画棋盘
*/
{
int i,j;
score1=score2=0;/*
棋手一开始得分都为
0*/
setbkcolor(BLUE);
for(i=100;i<=420;i+=40)
{
line(100,i,420,i);/*
画水平线
*/
line(i,100,i,420); /*
画垂直线
*/
}
setcolor(0);/*
取消圆周围的一圈东西
*/


##





课程设计说明书

No.
2

setfillstyle(SOLID_FILL,15);/*
白色实体填充模式
*/
fillellipse(500,200,15,15); /*
在显示得分的位置画棋
*/
setfillstyle(SOLID_FILL,8); /*
黑色实体填充模式
*/
fillellipse(500,300,15,15);
a[3][3]=a[4][4]=1;/*
初始两个黑棋
*/
a[3][4]=a[4][3]=2;/*
初始两个白棋
*/
setfillstyle(SOLID_FILL,WHITE);
fillellipse(120+3*40,120+3*40,15,15);
fillellipse(120+4*40,120+4*40,15,15);
setfillstyle(SOLID_FILL,8);
fillellipse(120+3*40,120+4*40,15,15);
fillellipse(120+4*40,120+3*40,15,15);
score1=score2=2; /*
有棋后改变分数
*/
DoScore();/*
输出开始分数
*/
}
void playtoplay()/*
人人对战
*/
{
int x,y,t=1,i,j,cc=0;
while(1)/*
换棋手走棋
*/
{
x=120,y=80;/*
每次棋子一开始出来的坐标,x
为行坐标
,y
为列坐标
*/
while(1) /*
具体一个棋手走棋的过程
*/
{

PrintScore(1);/*
输出棋手
1
的成绩
*/

PrintScore(2);/*
输出棋手
2
的成绩
*/

SetPlayColor(t);/*t
变量是用来判断棋手所执棋子的颜色
*/

fillellipse(x,y,15,15);

key=bioskey(0);/*
接收按键
*/

if(key==ESC)/*
跳出游戏
*/

break;

else

if(key==ENTER)/*
如果按键确定就可以跳出循环
*/

{

if(y!=80&&a[(x-120)/40][(y-120)/40]!=1
&&a[(x- 120)/40][(y-120)/40]!=2)/*
如果落子位置没有棋子
*/

{

if(t%2==1)/*
如果是棋手
1
移动
*/


a[(x-120)/40][(y-120)/40]=1;

else/*
否则棋手
2
移动
*/


a[(x-120)/40][(y-120)/40]=2;


##





课程设计说明书

No.
3


if(!QpChange(x,y,t))/*
落子后判断棋盘的变化
*/

{

a[(x-120)/40][(y-120)/40]=0;/*
恢复空格状态
*/

cc++;/*
开始统计尝试次数
*/

if(cc>=64-score1-score2) /*
如果尝试超过空格数则停步
*/

{


MoveColor(x,y);


fillellipse(x,y,15,15);


break;

}

else


continue;/*
如果按键无效
*/

}

DoScore();/*
分数的改变
*/

break;/*
棋盘变化了,则轮对方走棋
*/

}

else/*
已经有棋子就继续按键
*/

continue;
}
else /*
四个方向按键的判断
*/

if(key==LEFT&&x>120)/*
左方向键
*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x-=40;

fillellipse(x,y,15,15);

}
else

if(key==RIGHT&&x<400&&y>80)/*
右方向键
*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x+=40;

fillellipse(x,y,15,15);

}
else

if(key==UP&&y>120)/*
上方向键
*/

{


##





课程设计说明书

No.
4


MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y-=40;

fillellipse(x,y,15,15);

}
else

if(key==DOWN&&y<400)/*
下方向键
*/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y+=40;

fillellipse(x,y,15,15);

}
}
if(key==ESC)/*
结束游戏
*/

break;
if((score1+score2)==64||score1==0 ||score2==0)/*
格子已经占满或一方棋子

0
判断胜负
*/
{

playWin();/*
输出最后结果
*/

break;
}
t=t%2+1; /*
一方走后,改变棋子颜色即轮对方走
*/
cc=0; /*
计数值恢复为
0*/
} /*endwhile*/
}
void SetPlayColor(int t)/*
设置棋子颜色
*/
{
if(t%2==1)
setfillstyle(SOLID_FILL,15);/*
白色
*/
else
setfillstyle(SOLID_FILL,8);/*
灰色
*/
}
void MoveColor(int x,int y)/*
走了一步后恢复原来格子的状态
*/
{
if(y<100)/*
如果是从起点出发就恢复蓝色
*/
setfillstyle(SOLID_FILL,BLUE);
else/*
其他 情况如果是
1
就恢复白色棋子
,2
恢复黑色棋子
,
或恢复蓝 色棋盘
*/


##



粮票收藏价格-政审材料范文


粮票收藏价格-政审材料范文


粮票收藏价格-政审材料范文


粮票收藏价格-政审材料范文


粮票收藏价格-政审材料范文


粮票收藏价格-政审材料范文


粮票收藏价格-政审材料范文


粮票收藏价格-政审材料范文