如何编写C语言实现五子棋小游戏的代码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1323个文字,预计阅读时间需要6分钟。
本例分享了一个用C语言实现的五子棋小游戏的整体代码,供大家参考。具体内容如下:
c#include #include
#define ROW 15#define COL 15
int board[ROW][COL]; // 胜利条件int player; // 当前玩家int x, y; // 落子坐标
void initBoard() { for (int i=0; i void printBoard() { printf( ); for (int i=0; i for (int i=0; i int checkWin(int x, int y) { int i, j; int win=0; // 横向检查 for (i=1; i =0; i++) { if (board[x][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && y + i // 纵向检查 for (i=1; i =0; i++) { if (board[x - i][y]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i // 斜向检查 for (i=1; i =0 && y - i >=0; i++) { if (board[x - i][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i for (i=1; i =0 && y + i return 0;} void playGame() { initBoard(); player=1; int gameover=0; while (!gameover) { printBoard(); printf(Player %d, enter your move (row col): , player); scanf(%d %d, &x, &y); if (x ROW || y COL || board[x - 1][y - 1] !=0) { printf(Invalid move!\n); continue; } board[x - 1][y - 1]=player; if (checkWin(x - 1, y - 1)) { printBoard(); printf(Player %d wins!\n, player); gameover=1; } else { player=3 - player; } }} int main() { playGame(); return 0;} 本文实例为大家分享了C语言实现五子棋小游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h>
#include<windows.h>
#define ROW 14
#define COL 14
void gotoxy(int x,int y)//形参
{
HANDLE hOut;
COORD pos= {x,y};
// 光标的起始位(第1列,第3行) 0是第1列 2是第3行
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
//printf("定位光标位置搜索(%d,%d)\n",pos.X,pos.Y);
}
/*
函数名:paintGameUI()
函数功能:绘制棋盘
函数参数:无
函数返回值:无
*/
void paintGameUI() //打印游戏棋盘 使用ROW COL在上面宏定义可以改变//棋盘大小
{
int i=0;
int j=0;
printf("┌ "); //顶部
for(i=0;i<COL;i++)
{
printf("┬ ");
}
printf("┐\n");
//中间
for(j=0;j<ROW;j++)
{
printf("├ ");
for(i=0;i<COL;i++)
{
printf("┼ ");
}
printf("┤\n");
}
//底部
printf("└ ");
for(i=0;i<COL;i++)
{
printf("┴ ");
}
printf("┘\n");
}
void playgame()
{
int arr[ROW][COL]={0}; // 初始化 0-没有棋子 1用户下棋黑 2电脑下棋白
int x,y; //用户输入的行 列
int row,col; //落子的位置
int i,j; // 规则 判断输赢 遍历二维数组
paintGameUI(); // 绘制棋盘
while(1)//确保多次 确保用户电脑有效落子多次
{
while(1) // 保证用户能够有效落子一次 用户下棋
{
gotoxy(0,16);//打印文字 0距离左边 16距离顶部
printf(" "); //覆盖掉用户之前所输,//让用户可以再输
gotoxy(0,16); //打印文字 0距离左边 16距离顶部
printf("请输入下棋的位置,例如:(2 3):");
scanf("%d %d",&x,&y);
row = x-1; //行 距离顶部的长度 数组是0开始的
col =y-1; //列 距离左边的长度 下棋的位置
if(arr[row][col]==0) //下棋位置是否是棋子
{
gotoxy(col*2,row);
printf("●");//用户下棋
//修改二维数组的值
arr[row][col]=1; //用户下棋
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
//横着五个都是1 列变
if( arr[i][j]==arr[i][j+1]&&arr[i][j]==arr[i][j+2]&&
arr[i][j]==arr[i][j+3]&&arr[i][j]==arr[i][j+4]&&j+4<=COL&&arr [i][j]==1)
{
gotoxy(0,18);
printf("用户赢了\n");
return ;
}//竖着五个都是1 行变
else if(arr[i][j]==arr[i+1][j]&&arr[i][j]==arr[i+2][j]&&
arr[i][j]==arr[i+3][j]&&arr[i][j]==arr[i+4][j]&&i+4<=ROW&&arr [i][j]==1)
{
gotoxy(0,18);
printf("用户赢了\n");
return ;
}
}
}
break; //轮到对方下棋
}
else if(arr[row][col]==1||arr[row][col]==2) //用户下棋1 电脑下棋2
{
gotoxy(0,17);
printf("请重新输入坐标");
}
}
while(1) // 确保电脑有效落子一次 电脑下棋
{
//电脑下棋 电脑随机落子
row= rand()%14+0; //二维数组索引0-13
col= rand()%14+0; //电脑随机落子
//行距离顶部row 列距离左边col
if(arr[row][col]==0) //下棋位置是否是棋子 空 电脑可以下棋
{
gotoxy(col*2,row);
printf("○");//下棋
//修改二维数组的值
arr[row][col]=2; //电脑下棋
for(i=0;i<ROW;i++) //电脑赢 最好用算法
{
for(j=0;j<COL;j++)
{
//横着五个都是1 列变
if( arr[i][j]==arr[i][j+1]&&arr[i][j]==arr[i][j+2]&&
arr[i][j]==arr[i][j+3]&&arr[i][j]==arr[i][j+4]&&j+4<=COL&&arr [i][j]==2)
{
gotoxy(0,18);
printf("电脑赢了\n");
return;
}//竖着五个都是1
else if(arr[i][j]==arr[i+1][j]&&arr[i][j]==arr[i+2][j]&&
arr[i][j]==arr[i+3][j]&&arr[i][j]==arr[i+4][j]&&i+4<=ROW&&arr [i][j]==2)
{
gotoxy(0,18);
printf("电脑赢了\n");
return;
}
}
}
break;
}
}
}
}
int main()
{
playgame();
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计1323个文字,预计阅读时间需要6分钟。
本例分享了一个用C语言实现的五子棋小游戏的整体代码,供大家参考。具体内容如下:
c#include #include
#define ROW 15#define COL 15
int board[ROW][COL]; // 胜利条件int player; // 当前玩家int x, y; // 落子坐标
void initBoard() { for (int i=0; i void printBoard() { printf( ); for (int i=0; i for (int i=0; i int checkWin(int x, int y) { int i, j; int win=0; // 横向检查 for (i=1; i =0; i++) { if (board[x][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && y + i // 纵向检查 for (i=1; i =0; i++) { if (board[x - i][y]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i // 斜向检查 for (i=1; i =0 && y - i >=0; i++) { if (board[x - i][y - i]==player) { win++; } else { break; } } for (i=1; i <=4 && x + i for (i=1; i =0 && y + i return 0;} void playGame() { initBoard(); player=1; int gameover=0; while (!gameover) { printBoard(); printf(Player %d, enter your move (row col): , player); scanf(%d %d, &x, &y); if (x ROW || y COL || board[x - 1][y - 1] !=0) { printf(Invalid move!\n); continue; } board[x - 1][y - 1]=player; if (checkWin(x - 1, y - 1)) { printBoard(); printf(Player %d wins!\n, player); gameover=1; } else { player=3 - player; } }} int main() { playGame(); return 0;} 本文实例为大家分享了C语言实现五子棋小游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h>
#include<windows.h>
#define ROW 14
#define COL 14
void gotoxy(int x,int y)//形参
{
HANDLE hOut;
COORD pos= {x,y};
// 光标的起始位(第1列,第3行) 0是第1列 2是第3行
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
//printf("定位光标位置搜索(%d,%d)\n",pos.X,pos.Y);
}
/*
函数名:paintGameUI()
函数功能:绘制棋盘
函数参数:无
函数返回值:无
*/
void paintGameUI() //打印游戏棋盘 使用ROW COL在上面宏定义可以改变//棋盘大小
{
int i=0;
int j=0;
printf("┌ "); //顶部
for(i=0;i<COL;i++)
{
printf("┬ ");
}
printf("┐\n");
//中间
for(j=0;j<ROW;j++)
{
printf("├ ");
for(i=0;i<COL;i++)
{
printf("┼ ");
}
printf("┤\n");
}
//底部
printf("└ ");
for(i=0;i<COL;i++)
{
printf("┴ ");
}
printf("┘\n");
}
void playgame()
{
int arr[ROW][COL]={0}; // 初始化 0-没有棋子 1用户下棋黑 2电脑下棋白
int x,y; //用户输入的行 列
int row,col; //落子的位置
int i,j; // 规则 判断输赢 遍历二维数组
paintGameUI(); // 绘制棋盘
while(1)//确保多次 确保用户电脑有效落子多次
{
while(1) // 保证用户能够有效落子一次 用户下棋
{
gotoxy(0,16);//打印文字 0距离左边 16距离顶部
printf(" "); //覆盖掉用户之前所输,//让用户可以再输
gotoxy(0,16); //打印文字 0距离左边 16距离顶部
printf("请输入下棋的位置,例如:(2 3):");
scanf("%d %d",&x,&y);
row = x-1; //行 距离顶部的长度 数组是0开始的
col =y-1; //列 距离左边的长度 下棋的位置
if(arr[row][col]==0) //下棋位置是否是棋子
{
gotoxy(col*2,row);
printf("●");//用户下棋
//修改二维数组的值
arr[row][col]=1; //用户下棋
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
//横着五个都是1 列变
if( arr[i][j]==arr[i][j+1]&&arr[i][j]==arr[i][j+2]&&
arr[i][j]==arr[i][j+3]&&arr[i][j]==arr[i][j+4]&&j+4<=COL&&arr [i][j]==1)
{
gotoxy(0,18);
printf("用户赢了\n");
return ;
}//竖着五个都是1 行变
else if(arr[i][j]==arr[i+1][j]&&arr[i][j]==arr[i+2][j]&&
arr[i][j]==arr[i+3][j]&&arr[i][j]==arr[i+4][j]&&i+4<=ROW&&arr [i][j]==1)
{
gotoxy(0,18);
printf("用户赢了\n");
return ;
}
}
}
break; //轮到对方下棋
}
else if(arr[row][col]==1||arr[row][col]==2) //用户下棋1 电脑下棋2
{
gotoxy(0,17);
printf("请重新输入坐标");
}
}
while(1) // 确保电脑有效落子一次 电脑下棋
{
//电脑下棋 电脑随机落子
row= rand()%14+0; //二维数组索引0-13
col= rand()%14+0; //电脑随机落子
//行距离顶部row 列距离左边col
if(arr[row][col]==0) //下棋位置是否是棋子 空 电脑可以下棋
{
gotoxy(col*2,row);
printf("○");//下棋
//修改二维数组的值
arr[row][col]=2; //电脑下棋
for(i=0;i<ROW;i++) //电脑赢 最好用算法
{
for(j=0;j<COL;j++)
{
//横着五个都是1 列变
if( arr[i][j]==arr[i][j+1]&&arr[i][j]==arr[i][j+2]&&
arr[i][j]==arr[i][j+3]&&arr[i][j]==arr[i][j+4]&&j+4<=COL&&arr [i][j]==2)
{
gotoxy(0,18);
printf("电脑赢了\n");
return;
}//竖着五个都是1
else if(arr[i][j]==arr[i+1][j]&&arr[i][j]==arr[i+2][j]&&
arr[i][j]==arr[i+3][j]&&arr[i][j]==arr[i+4][j]&&i+4<=ROW&&arr [i][j]==2)
{
gotoxy(0,18);
printf("电脑赢了\n");
return;
}
}
}
break;
}
}
}
}
int main()
{
playgame();
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

