五子棋C语言程序教学内容

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 */

相关文档
最新文档