C语言实现五子棋人人对战

利用简单的c语言基础实现最简单的功能,界面比较丑陋主要是刚学完c的一个小实践,未使用MFC所以界面没有很好看 ,主要目的加强对c语言的理解与运用,同时增加自己的代码量。

首先要学一些头文件可以看我的博客前面的文章

要用到到的头文件stdio.h stdlib.h windows.h time.h conio.h

思路就是

1.画个棋盘,使用数组来代替初始化出*

2.使用循环使双方轮流下棋,使用数组存放棋子的位置

3.判断是否有一方获胜

首先打印棋盘

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>

char qipan[16][16];
//函数声明
void initQipan();//将*存入16*16的二维数组中
void printQipan();//将二维数组打印出来

void initQipan()
{
 int i,j;
 for(i = 0;i < 16 ;i++)
 for(j = 0;j <16 ;j++)
 qipan[i][j] = '*';
}

void printQipan()
{
 int i,j;
 for(i = 0;i < 16 ;i++)
 {
 for(j = 0;j <16 ;j++)
 printf("%c",qipan[i][j]);
 printf("\n");
 }
}

int main()
{
 initQipan();
 printQipan();
}

打印出来效果图

这里面我发现一个算是c语言的小陷阱

void printQipan()
{
 int i,j;
 for(i = 0;i < 16 ;i++)
 {
 for(j = 0;j <16 ;j++)
 printf("%c",qipan[i][j]);
 printf("\n");
 }
}

这段代码中内层for循环后跟着两个语句但是按正常想法应该两条语句都应随着内层循环而循环也就是打出来的应该是这样

打印出来这样的代码是

int i,j;
 for(i = 0;i < 16 ;i++)
 {
 for(j = 0;j <16 ;j++)
 {
 printf("%c",qipan[i][j]);
 printf("\n");
 }

 }

但是显然他们的效果不等价

这样其实是因为如果内层没有写出{}就会默认将第一条指令给内层,其余所有指令给外层

可以看下面的代码

int i,j;
 for(i = 0;i < 16 ;i++)
 {
 for(j = 0;j <16 ;j++)
 printf("%c",qipan[i][j]);
 printf(",");
 printf("\n");
 }

}

这样很显然得出结论

在这样结构的双重for循环中

for()
{
 for()
 语句1
 语句2
 语句3
 ...
}

只有第一条语句属于内存循环,写成这样更加明了一些

for()
{
 for()
 语句1
 语句2
 语句3
 ...
}

下面实现双方轮流下棋

/*************************************头文件********************************************/
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
/************************************全局变量********************************************/
char qipan[16][16];
int x,y;
/************************************函数声明********************************************/
void initQipan();//将*存入16*16的二维数组中
void printQipan();//将二维数组打印出来
void starGame();//开始游戏
/************************************自定义函数******************************************/
void initQipan()
{
 int i,j;
 for(i = 0;i < 16 ;i++)
 for(j = 0;j <16 ;j++)
 qipan[i][j] = '*';
}
void printQipan()
{
 int i,j;
 for(i = 0;i < 16 ;i++)
 {
 for(j = 0;j <16 ;j++)
 printf("%c",qipan[i][j]);
 printf("\n");
 }

}
void starGame()
{
 initQipan();
 printQipan();
 while(1)
 {
 printf("请白方落子,按下行与列的坐标:");
 scanf("%d%d",&x,&y);
 qipan[x][y]='W';
 system("cls");
 printQipan();
 printf("请黑方落子,按下行与列的坐标:");
 scanf("%d%d",&x,&y);
 qipan[x][y]='B';
 system("cls");
 printQipan();
 }

}
/*****************************************主函数****************************************/
int main()
{
 starGame();
}

现在可以实现双方轮流下棋,接下来就是要实现系统去判定是否有人获胜

/*********************************************************************头文件*************************************************************************************/
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
/********************************************************************全局变量************************************************************************************/
char qipan[16][16];
int x,y;
/********************************************************************函数声明************************************************************************************/
void initQipan();//将*存入16*16的二维数组中
void printQipan();//将二维数组打印出来
void starGame();//开始游戏
int panduan(int x,int y);//判断是否有人获胜
void win(int winner);//有人获胜后显示那方胜利
/********************************************************************自定义函数**********************************************************************************/
void initQipan()
{
 int i,j;
 for(i = 0;i < 16 ;i++)
 for(j = 0;j <16 ;j++)
 qipan[i][j] = '*';
}
void printQipan()
{
 int i,j;
 for(i = 0;i < 16 ;i++)
 {
 for(j = 0;j <16 ;j++)
 printf("%c",qipan[i][j]);
 printf("\n");
 }

}
void starGame()
{
 int temp;
 initQipan();
 printQipan();
 while(1)
 {
 printf("请白方落子,按下行与列的坐标:");
 scanf("%d%d",&x,&y);
 qipan[x][y]='W';
 system("cls");
 printQipan();
 temp = panduan(x,y);
 if(temp==1)
 {
 printf("白方获胜");
 system("pause");
 }
 printf("请黑方落子,按下行与列的坐标:");
 scanf("%d%d",&x,&y);
 qipan[x][y]='B';
 system("cls");
 printQipan();
 temp = panduan(x,y);
 if(temp==2)
 {
 printf("黑方获胜");
 system("pause");
 }
 }
}
int panduan(int x,int y)
{
 char temp;//保存棋子的颜色
 int winner;//1代表白方,2代表黑方
 int i;//距离落子位置水平方向的差
 int j;//距离落子位置竖直方向的差
 int count;//记下有多少个连续的棋子
 count = 1;
 i = 1;
 j = 1;
 winner = 0;
 temp = qipan[x][y];
 //***************************************************************************水平方向**************************************************************************
 //水平左边
 while(temp = qipan[x-i][y]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 i++;
 count++;
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 //水平右边
 i = 1;//因为要重新从一格开始移动,初始化i变量
 while(temp = qipan[x+i][y]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 i++;
 count++;//此时count是接着水平左边继续累加
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 //**************************************************************************竖直方向***************************************************************************
 //竖直上方
 i = 1;//初始化变量
 count = 1;//初始化变量
 while(temp = qipan[x][y+j]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 j++;
 count++;
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 //竖直下方
 i = 1;//因为要重新从一格开始移动,初始化i变量
 while(temp = qipan[x][y-j]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 j++;
 count++;//此时count是接着水平左边继续累加
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 //**************************************************************************从左向右倾斜***********************************************************************
 //左上方
 i = 1;//初始化变量
 count = 1;//初始化变量
 while(temp = qipan[x-i][y-j]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 i++;
 j++;
 count++;
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 //右下方
 i = 1;//因为要重新从一格开始移动,初始化i变量
 while(temp = qipan[x+i][y+j]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 i++;
 j++;
 count++;//此时count是接着水平左边继续累加
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 //**************************************************************************从右向左倾斜***********************************************************************
 //右上方
 i = 1;//初始化变量
 count = 1;//初始化变量
 while(temp = qipan[x-i][y+j]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 i++;
 j++;
 count++;
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 //左下方
 i = 1;//因为要重新从一格开始移动,初始化i变量
 while(temp = qipan[x+i][y-j]&&x >= 0&&x <= 15&&y >= 0&&y <= 15&&count < 5)
 {
 i++;
 j++;
 count++;//此时count是接着水平左边继续累加
 if(count==5)//如果连成五子出现胜利的一方,否则继续判断
 {
 if(temp=='W')
 winner = 1;
 else
 winner = 2;
 }
 }
 return winner;
}
/*******************************************************************主函数**************************************************************************************/
int main()
{
 starGame();
 return 0;
}

此时有一个问题就是程序会卡死如图

在写程序时出现这种错误可能的原因是:

①除以零

②数组越界:int a[3]; a[10000000]=10;

③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;

④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;

⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000]

ok发现问题是在如图位置没有初始化这几个变量现在已经将上面的代码修正了

下面来看最后优化完的代码

/***************************************头文件******************************************/
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
/****************************************宏*********************************************/
#define N 16 //可以更改棋盘大小
/***************************************全局变量*****************************************/
char qipan[N][N];//全局变量,整个文件的都可以用
int x,y;//代表的是棋盘(数组)下标为x的行 和 下标为y列的一个交点
/***************************************函数声明*****************************************/
void initQipan();//棋盘的初始化
void printQipan();//打印棋盘
void Pos(int x, int y);//设置光标位置
void startGame();//游戏开始
int panduan(int x,int y);//判断是否有人连成五子
int showWhoWin();//输出谁赢了
void whitePlay();//白方下子
void blackPlay();//黑方下子
void printShuzi();//打印数字模板

/*****************************************自定义函数*************************************/
void Pos(int x, int y)//设置光标位置,从哪里开始输出
{
 COORD pos;//表示一个字符在控制台屏幕上的坐标,左上角(0,0)
 HANDLE hOutput;
 pos.X = x;
 pos.Y = y;
 hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄
 SetConsoleCursorPosition(hOutput, pos);
}

void printShuzi()
{
 int i;
 Pos(2,0);
 for(i=0;i<N;i++)
 printf("%2d",i);
 for(i=0;i<16;i++)
 {
 Pos(0,1+i);
 printf("%2d",i);
 }
}
void initQipan()
{
 int i,j;
 for(i=0;i<N;i++)
 for(j=0;j<N;j++)
 qipan[i][j]='*';
}
void printQipan()
{
 int i,j;
 printShuzi();
 for(i=0;i<N;i++)
 {
 Pos(2,1+i);//自动换行的输出的功能,代替printf("\n");
 for(j=0;j<N;j++)
 printf(" %c",qipan[i][j]);
 }
}

int panduan(int x,int y)
{
 char temp;//保存下棋方的颜色,w b
 int count=1;//统计个数,针对的同一个线(水平线)
 int i=1;//走一格
 int j=1;//和i同时用来代表走斜的
 int whoWin=0;//1代表白方,2代表黑方
 temp=qipan[x][y];
 //水平的左边
 while(temp==qipan[x][y-i]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }
 //水平的右边
 i=1;
 while(temp==qipan[x][y+i]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }

 //解决垂直的方向
 //垂直上方
 i=1;
 count=1;//清理掉之前的数据
 while(temp==qipan[x-i][y]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }
 //垂直下方
 i=1;
 while(temp==qipan[x+i][y]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }
 //解决左上的斜线 上方
 i=1;
 j=1;
 count=1;
 while(temp==qipan[x-i][y-j]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 j++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }
 //解决左上的斜线 下方
 i=1;
 j=1;
 while(temp==qipan[x+i][y+j]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 j++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }
 //解决右上的斜线 上方
 i=1;
 j=1;
 count=1;
 while(temp==qipan[x-i][y+j]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 j++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }
 //解决右上的斜线 下方
 i=1;
 j=1;
 while(temp==qipan[x+i][y-j]&&x>=0&&x<N&&y>=0&&y<N&&count<5)
 {
 i++;
 j++;
 count++;
 if(count==5)//首先count是5才能来判断谁赢了
 {
 if(temp=='W')
 whoWin=1;

 else
 whoWin=2;
 }
 }
 return whoWin;
}

int showWhoWin()
{
 int overLeap=0;//1代表结束
 int leap;//用来接收谁赢了
 leap=panduan(x,y);
 if(leap==1)
 {
 overLeap=1;
 system("cls");
 printQipan();
 printf("\n白方胜利\n");
 system("pause");
 }
 if(leap==2)
 {
 overLeap=1;
 system("cls");
 printQipan();
 printf("\n黑方胜利\n");
 system("pause");
 }
 return overLeap;
}

void whitePlay()
{
 printf("\n请白方落子,按下行与列的坐标:");
 scanf("%d%d",&x,&y);//坐标的值
 while(1)//解决一直下错子的问题
 {
 if(qipan[x][y]=='*')//下子的地方没有其他子
 {
 qipan[x][y]='W';
 //解决while(1)
 break;
 }
 else
 {
 printf("您下子错误\n");
 printf("请白方落子,按下行与列的坐标:");
 scanf("%d%d",&x,&y);//坐标的值
 }

 }
 printQipan(); 

}
void blackPlay()
{

 printQipan();
 printf("\n请黑方落子,按下行与列的坐标:");
 scanf("%d%d",&x,&y);//坐标的值
 while(1)//解决一直下错子的问题
 {
 if(qipan[x][y]=='*')//下子的地方没有其他子
 {
 qipan[x][y]='B';
 //解决while(1)
 break;
 }
 else
 {
 printf("您下子错误\n");
 printf("请黑方落子,按下行与列的坐标:");
 }
 scanf("%d%d",&x,&y);//坐标的值

 }
 printQipan();

}
void startGame()
{
 initQipan();
 printQipan();
 while(1)
 {
 whitePlay();
 if(showWhoWin()==1)//system("pause");
 break;
 system("cls");//清理屏幕,是屏幕上的字不重复
 blackPlay();
 if(showWhoWin()==1)//system("pause");
 break;
 system("cls");
 printQipan();
 }
 printf("您是否重新游戏:y or n");
 if(getch()=='n')
 {
 system("cls");
 printf("游戏结束\n");
 exit(0);//因为程序终止
 }
 if(getch()=='y')
 {
 system("cls");
 startGame();
 }

}

/*********************************************主函数************************************/
int main()
{
 startGame();
 return 0;
}

下面测试一下功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现简单五子棋小游戏

    五子棋简单功能实现,供大家参考,具体内容如下 游戏功能演示 代码如下: #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <getch.h> // 棋盘 char board[15][15]; // 棋子坐标 char kx = 7 , ky = 7; // 角色 char role = '@'; // 显示棋盘 void show_board(void) { syste

  • C语言编写五子棋游戏

    本文实例为大家分享了C语言编写五子棋游戏的具体代码,供大家参考,具体内容如下 一.构建棋盘 首先可以用一个二维数组来构建棋盘,下标表示位置,内容表示黑子白子或者空位.当数组内容为1时,该位置为白字,当数组为0时,该位置为白子,空位输出+ int w[11][11], flag = 0; int a, b; for (int k = 0; k < 11; k++) printf("第%d列\t", k); printf("\n"); for (int i = 0

  • C语言实现简易五子棋

    本文实例为大家分享了C语言实现简易五子棋的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> #define ROW 5 #define COL 5 char g_broad[ROW][COL]; void menu(); void menu() { printf("--------------------

  • 基于C语言实现五子棋游戏

    采用二维数组制作五子棋,用坐标下棋. 请看代码. include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> #include<conio.h> #include<time.h> void menu()//目录 { char xuanze = 0,xuanze2; printf("\n"); printf("\n&q

  • 纯C语言实现五子棋

    正在考虑增加一个MFC界面.不是人机对战的. 五子棋.c //date 2014年7月7日09:53:24 //willows //五子棋 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <assert.h> //棋盘初始化函数 //Chessboard棋盘数组,ln=棋盘大小,成功返回Chessboard,不成功NULL void init_Chessboa

  • 基于C语言实现五子棋游戏完整实例代码

    本文实例讲述了基于C语言实现五子棋游戏的方法,代码备有比较完整的注释,可以帮助读者更好的加以理解. 五子棋游戏代码如下: /* * 使用键盘的上下左右键移动棋盘,空格键表示下棋,ESC键退出程序 */ #include <stdio.h> #include <stdlib.h> #include <bios.h> #include <graphics.h> #include<malloc.h> /* * 对应键盘键的十六进制数字 */ #defi

  • C语言实现五子棋游戏

    本文实例为大家分享了C语言实现五子棋的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <bios.h> #include <ctype.h> #include <conio.h> #include <dos.h> #define CROSSRU 0xbf /*右上角点*/ #define CROSSLU 0xda /*左上角点*/ #define CROSSLD 0xc0 /*左下角点*/ #defin

  • C语言实现五子棋小游戏

    首先我们先来看一个稍微简单些的实现方式: #include <stdio.h> #include <stdlib.h> #define N 15 int chessboard[N + 1][N + 1] = { 0 }; int whoseTurn = 0; void initGame(void); void printChessboard(void); void playChess(void); int judge(int, int); int main(void) { init

  • C语言实现五子棋人人对战

    利用简单的c语言基础实现最简单的功能,界面比较丑陋主要是刚学完c的一个小实践,未使用MFC所以界面没有很好看 ,主要目的加强对c语言的理解与运用,同时增加自己的代码量. 首先要学一些头文件可以看我的博客前面的文章 要用到到的头文件stdio.h stdlib.h windows.h time.h conio.h 思路就是 1.画个棋盘,使用数组来代替初始化出* 2.使用循环使双方轮流下棋,使用数组存放棋子的位置 3.判断是否有一方获胜 首先打印棋盘 #include<stdio.h> #inc

  • Java编程实现五子棋人人对战代码示例

    利用Java,在控制台操作下,编写的五子棋,作为复习二维数组,面向对象等基础知识.w表示白棋,b表示黑棋 import java.util.Scanner; public class MainMethod { public static char[][] c = new char[10][10]; public static void main(String[] args) { MainMethod mainMethod = new MainMethod(); mainMethod.init()

  • python实现人人对战的五子棋游戏

    python五子棋之人人对战,供大家参考,具体内容如下 checkerboard.py from collections import namedtuple Chessman = namedtuple('Chessman', 'Name Value Color') Point = namedtuple('Point', 'X Y') BLACK_CHESSMAN = Chessman('黑子', 1, (45, 45, 45)) WHITE_CHESSMAN = Chessman('白子', 2

  • C语言实现五子棋对战系统

    本文实例为大家分享了C语言实现五子棋对战的具体代码,供大家参考,具体内容如下 一直以来,有不少热爱并希望学习五子棋的人,或者仅为了娱乐来下五子棋的人,他们一般通过下棋对战来增加自己的对战经验,而在现实生活由于五子棋布板麻烦,经常缺少能下棋的环境,并且下棋时效率较低,记录步数也较为麻烦.利用计算机来模拟下五子棋环境,只要有计算机,就可以很方便的随时随地进行下棋,并且对战过程中对步数和下子过程进行记录,方便了喜欢下五子棋的人,让他们的五子棋学习更加高效或者娱乐起来更加方便. #include <st

  • Python实现五子棋人机对战 和人人对战

    目录 人人对战 动态演示 源码分享 人人对战.py 人机对战 动态演示 前言: 过完520,咱们来玩玩五子棋陶冶情操.快拿这个和你女朋友去对线.多的不说直接进入正题 人人对战 游戏规则:p1为黑子,p2为白子,黑子先手,一方达到五子相连即为获胜. 动态演示 源码分享 定义黑白子,落子位置以及获胜规则. from collections import namedtuple Chessman = namedtuple('Chessman', 'Name Value Color') Point = n

  • 利用C语言实现五子棋游戏

    本文实例为大家分享了C语言实现五子棋游戏的具体代码,供大家参考,具体内容如下 一.前言 本文将先介绍五子棋运行所需要的函数,最后串联成完整代码. 我们需要实现的功能有:1.菜单menu函数 2.初始化棋盘Initboard函数 3.显示棋盘Displayboard函数 4.实现人机.人人模式的选择 5.落子函数 playermove  computermove 6.判断输赢ifwin函数 先来看看运行效果吧! 二.头文件 #define _CRT_SECURE_NO_WARNINGS #incl

  • 使用C语言实现五子棋游戏

    目录 一.实现的目的和意义 二.实现内容描述 三.实现原理 四.实现模块五子棋实现分为三大模块 五.模块代码分析 六.实现结果 七.总结 本文实例为大家分享了C语言实现五子棋游戏的具体代码,供大家参考,具体内容如下 一.实现的目的和意义 1.巩固和加深对c语言知识的理解2.学会使用编译器的各种调试3.提高解决实际问题的能力 二.实现内容描述 实现简单的人人对战五子棋,此设计用的是C语言去实现 三.实现原理 采用二位数组保存棋盘信息,棋盘上面的任何一个位置,里头可以放三个信息: 1.空2.用户1的

  • 用C语言实现五子棋游戏

    C语言写五子棋,使用多文件形式,使用代码看起来更好看:在这里我实现的功能是双人博弈,如果要实现人机对战,那么代码就会很复杂: 一.main.c 在主调函数中首先要提供一个给用户选择的界面,在这里我们假定选择1为开始游戏,2为退出游戏,代码如下: #include "gobang.h" void Mean(){ printf("-----------------------\n"); printf(" 1.play 2.drop up\n"); p

  • 基于Python实现五子棋-(人机对战)

    目录 前言 人人对战 动态演示 源码分享 人机对战 前言 快520了,咱们来玩玩五子棋陶冶情操.快拿这个和你女朋友去对线.(分了别来找我哇).多的不说直接进入正题 人人对战 游戏规则:p1为黑子,p2为白子,黑子先手,一方达到五子相连即为获胜. 动态演示 源码分享 cheackboard.py 定义黑白子,落子位置以及获胜规则. from collections import namedtuple Chessman = namedtuple('Chessman', 'Name Value Col

随机推荐