C语言写的一个五子棋程序,写的比较简单,电脑走棋用的是随机数,然后电脑会非常菜(囧)。
#include<stdio.h>
#include<windows.h>
#define L 5
#define W 5
char a[L][W]={0};
void set_a()
{
int i,j;
for(i=0;i<L;i++)
{
for(j=0;j<W;j++)
{
a[i][j]=' ';
}
}
}
void print_()
{
system("cls");
int i,j;
printf("\n\n\n\n\n\n\n 电脑(99999段棋手):X\n\n\n");
for(i=0;i<L;i++)
{
if(i==0)printf(" 1 2 3 4 5\n ┏━━┳━━┳━━┳━━┳━━┓\n");
printf(" ");
for(j=0;j<W;j++)
{
if(j==0)printf("%d│",i+1);
printf(" %c │",a[i][j]);
}
if(i==L-1)printf("\n ┗━━┻━━┻━━┻━━┻━━┛\n");
else printf("\n ┣━━╋━━╋━━╋━━╋━━┫\n");
}
printf("\n\n 玩家(9段棋手):O\n\n\n") ;
}
void user()
{
int x,y;
print_();
printf(" 该你下棋了\n 请输入棋盘坐标来将棋子放到相应位置\n");
printf(" 行:");
scanf("%d",&x);
printf(" 列:");
scanf("%d",&y);
x--;
y--;
if(x>L||y>W)
{
printf(" 能好好下棋么?!准备把棋子放棋盘外面么?!重下!\n");
system("pause");
user();
}
else if(a[x][y]!=' ')
{
printf(" 能好好下棋么?!准备把棋子摞起来么?!重下!\n");
system("pause");
user();
}
else a[x][y]='O';
}
void computer()
{
//print_();
int i,j,n,num;
n=0;
for(i=0;i<L;i++)
{
for(j=0;j<W;j++)
{
if(a[i][j]==' ')n++;
}
}
num=rand()%n+1;
for(i=0;i<L;i++)
{
for(j=0;j<W;j++)
{
if(a[i][j]==' ')num--;
if(num==0)break;
}
if(num==0)break;
}
a[i][j]='X';
}
int ifend()
{
int i,j,b=0;
for(i=0,j=0;i<L;i++,j=0)
{
if(a[i][j]=='O'&&a[i][j+1]=='O'&&a[i][j+2]=='O'&&a[i][j+3]=='O'&&a[i][j+4]=='O')b=1;
if(a[i][j]=='X'&&a[i][j+1]=='X'&&a[i][j+2]=='X'&&a[i][j+3]=='X'&&a[i][j+4]=='X')b=1;
}
for(i=0,j=0;j<W;j++,i=0)
{
if(a[i][j]=='O'&&a[i+1][j]=='O'&&a[i+2][j]=='O'&&a[i+3][j]=='O'&&a[i+4][j]=='O')b=1;
if(a[i][j]=='X'&&a[i+1][j]=='X'&&a[i+2][j]=='X'&&a[i+3][j]=='X'&&a[i+4][j]=='X')b=1;
}
i=j=0;
if(a[i][j]=='O'&&a[i+1][j+1]=='O'&&a[i+2][j+2]=='O'&&a[i+3][j+3]=='O'&&a[i+4][j+4]=='O')b=1;
if(a[i][j]=='X'&&a[i+1][j+1]=='X'&&a[i+2][j+2]=='X'&&a[i+3][j+3]=='X'&&a[i+4][j+4]=='X')b=1;
i=0;
j=W-1;
if(a[i][j]=='O'&&a[i+1][j-1]=='O'&&a[i+2][j-2]=='O'&&a[i+3][j-3]=='O'&&a[i+4][j-4]=='O')b=1;
if(a[i][j]=='X'&&a[i+1][j-1]=='X'&&a[i+2][j-2]=='X'&&a[i+3][j-3]=='X'&&a[i+4][j-4]=='X')b=1;
return b;
}
void go()
{
int m,n;
while(1)
{
user();
print_();
if(ifend()==1)
{
printf(" 玩家获胜!(old Fe 666!)\n 按任意键返回主菜单\n");
system("pause");
system("cls");
menu();
break;
}
computer();
print_();
if(ifend()==1)
{
printf(" 电脑获胜!(好xx菜哦- -!)\n 按任意键返回主菜单\n");
system("pause");
menu();
break;
}
}
}
void menu()
{
int n,i;
set_a();
printf("\n\n\n\n\n\n\n\n\n\n");
for(i=0;i<11;i++)
{
if(i==0)printf(" ┏━━━━━━━━━━━━━━┓\n");
else if(i==10)printf(" ┗━━━━━━━━━━━━━━┛\n");
else if(i==1)printf(" ┃ 五子棋 ┃\n");
else if(i==4)printf(" ┃ 1.开始游戏 ┃\n");
else if(i==7)printf(" ┃ 0.退出游戏 ┃\n");
else printf(" ┃ ┃\n");
}
printf(" 请输入选项:\n") ;
n=getch();
switch(n)
{
case '1':{
go();
break;
}
case '0':{
printf("\n 靴靴使用!(鞠躬)\n");
system("pause");
exit(0);
break;
}
default:{
printf("\n 好好输选项!(啪!)\n");
menu();
}
}
}
int main()
{
system("color F0");
system("mode con cols=100 lines=35") ;
srand((unsigned)time(NULL));
menu();
return 0;
}
一些运行截图在下面
-------------------------------------------------------