内容发布更新时间 : 2025/1/1 19:52:14星期一 下面是文章的全部内容请认真阅读。
C语言实现五子棋小游戏
# include
# include
# include
# include
# define SPA 0//在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。 “define”为宏定义命令。 # define MAN 1 # define COM 2
/* 空位置设为0 ,玩家下的位置设为1 ,电脑下的位置设为2 */ #define ORDEX 15
int qipan[ORDEX][ORDEX]; //自己定义的预处理函数,以二维数组形式构建棋盘 /* 15*15的棋盘 */
typedef struct//typedef的作用是在C中定义一个结构体类型 { int iFlag; int iX, iY;
}ScmPiece; int g_iPieceLen;
ScmPiece g_ScmGame1, g_ScmGame2;
void start(); /* 程序的主要控制函数 */ void draw(); /* 画棋盘 */
int Victory( ScmPiece * pScmPiece ); /* 判断胜利 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 InitGame(){ int i;
g_iPieceLen = ORDEX * ORDEX; g_ScmGame1.iX = 0; g_ScmGame1.iY = 0; g_ScmGame1.iFlag = COM; g_ScmGame2.iX = 7; g_ScmGame2.iY = 7;
g_ScmGame2.iFlag = MAN; for( i=0; i < ORDEX*ORDEX; ++i ) *( (int*)qipan + i ) = SPA; }
void main() { char k; do{ InitGame(); start();
printf(\还要再来一把吗?输入y或n:\ while(k!='y'&&k!='n'){ printf(\输入错误,请重新输入\\n\ system(\ }while(k=='y'); printf(\谢谢使用!\\n\}
void MakePiece( ScmPiece * pScmPiece, int iGameFlag ){ if( iGameFlag ) {
printf(\请下子:\
while( scanf( \