五子棋C语言程序教学内容
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五子棋C语言程序
# include
# include
# include
# define SPA 0
# define MAN 1
# define COM 2 /* 空位置设为0 ,玩家下的位置设为1 ,电脑下的位置设为2 */
int qipan[15][15]; /* 15*15的棋盘 */
int a,b,c,d,x; /* a b为玩家下子坐标,c d为电脑下子坐标 x为剩余空位置*/ void start(); /* 程序的主要控制函数 */
void draw(); /* 画棋盘 */
int win(int p,int q); /* 判断胜利 p q为判断点坐标 */
void AI(int *p,int *q); /* 电脑下子 p q返回下子坐标 */
int value(int p,int q); /* 计算空点p q的价值 */
int qixing(int n,int p,int q); /* 返回空点p q在n方向上的棋型 n为1-8方向从右顺时针开始数 */
void yiwei(int n,int *i,int *j); /* 在n方向上对坐标 i j 移位 n为1-8方向从右顺时针开始数 */
void main()
{
char k;
do{
x=225;
start();
printf("还要再来一把吗?输入y或n:"); getchar(); scanf("%c",&k);
while(k!='y'&&k!='n'){ printf("输入错误,请重新输入\n");
scanf("%c",&k); }
system("cls");
}while(k=='y');
printf("谢谢使用!\n");
}
void start()
{
int i,j,a1,b1,c1,d1,choice; /* a1 b1储存玩家上手坐标 c1 d1储存电脑上手坐标 */
char ch;
printf("\t╔═══════════════════════════════╗\n");
printf("\t║ ║\n");
printf("\t║ 欢迎使用五子棋对战程序祝您玩的愉快挑战无极限
║\n");
printf("\t║ ║\n");
printf("\t║ ._______________________. ║\n");
printf("\t║ | _____________________ | ║\n");
printf("\t║ | I I | ║\n");
printf("\t║ | I 五子棋I | ║\n");
printf("\t║ | I I | ║\n");
printf("\t║ | I made by 晓之蓬I | ║\n");
printf("\t║ | I___________________I | ║\n");
printf("\t║ !_______________________! ║\n");
printf("\t║ ._[__________]_. ║\n");
printf("\t║ .___|_______________|___. ║\n");
printf("\t║ |::: ____ | ║\n");
printf("\t║ | ~~~~ [CD-ROM] | ║\n");
printf("\t║ !_____________________! ║\n");
printf("\t║ ║\n");
printf("\t║ ║\n");
printf("\t║ 寒星溪月疏星首,花残二月并白莲。║\n");
printf("\t║ 雨月金星追黑玉,松丘新宵瑞山腥。║\n");
printf("\t║ 星月长峡恒水流,白莲垂俏云浦岚。║\n");
printf("\t║ 黑玉银月倚明星,斜月明月堪称朋。║\n");
printf("\t║ 二十六局先弃二,直指游星斜彗星。║\n");
printf("\t║ ║\n");
printf("\t║ ║\n");
printf("\t║ 1.人机对战 2.人人对战║\n");
printf("\t║ ║\n");
printf("\t╚═══════════════════════════════╝\n");
printf("\t\t\t请输入1或2:");
scanf("%d",&choice); /* 选择模式:人机或人人 */
while(choice!=1&&choice!=2) { printf("输入错误,请重新输入:"); scanf("%d",&choice); }
if(choice==1){ /* 人机模式 */
system("cls");
printf("欢迎使用五子棋人机对战!下子请输入坐标(如13 6)。悔棋请输入15 15。\n\n\n");
for(j=0;j<15;j++)
for(i=0;i<15;i++)
qipan[j][i]=SPA; /* 置棋盘全为空 */
draw();
printf("先下请按1,后下请按2:");
scanf("%d",&i);
while(i!=1&&i!=2) { printf("输入错误,请重新输入:");
scanf("%d",&i); }
if(i==1) { /* 如果玩家先手下子 */
printf("请下子:"); scanf("%d%d",&a,&b);
while((a<0||a>14)||(b<0||b>14)) { printf("坐标错误!请重新输入:"); scanf("%d%d",&a,&b); }
a1=a; b1=b; x--; qipan[b][a]=MAN; system("cls"); draw();
}
while(x!=0){
if(x==225) { c=7; d=7; qipan[d][c]=COM; x--; system("cls"); draw(); } /* 电脑先下就下在7 7 */