本小游戏是在Linux下实现的(因为我不会Windows网络编程),这次实现的仅仅是服务器与客户端之间进行互动,彼此只要互相发送下点的坐标就ok,用结构体存放坐标,各自收到坐标后进行下子,以及判断结果。
本篇文章里只涉及部分代码,更多是步骤介绍,实现方法以及思路
源码在这里()->https://github.com/Xiaoyejun/learngit/commit/44caec515cb7194eb8119ba4c4b3d75473e729d1(绿色部分)
小游戏介绍
五子棋大家肯定都玩过,无非就是你下子来我来赌,能赢全靠运气(这里说的是本人)。要想实现一个简易的五子棋小游戏,需要的也就是三点 : 1、棋盘 2、黑子/白子(这里我们用两个不同的字符区分黑白方) 3、游戏规则
游戏实现
- 首先我们打印一张棋盘,范围自己控制,我这里是10*10的棋盘,打印前进行初始化
void InitBoard(char board[ROWS][COLS],int row, int col)
{
//每个坐标的初始值我用空格代替
memset(board,' ',row*col*sizeof(char));
}
//打印棋盘
void PrintBoard(char board[ROWS][COLS],int row,int col)
{
int i = 0;
printf(" 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10\n");
for(; i < row;i++)
{
printf("%2d ",i+1);
int j = 0;
for(; j < col;j++)
{
if( j == col-1 )
{
printf(" %c \n",board[i][j]);
if(i != row-1)
printf(" ---|---|---|---|---|---|---|---|---|---\n");
break;
}
printf(" %c ",board[i][j]);
printf("|");
}
}
}
结果
- 游戏规则:
- 不能下到边界外
- 不能下到已有子处
- 有一方赢游戏就结束,或者双方平局
看起来是不是很简单,实际上它就是很简单,因为这只是1.0版本的,以后我会努力推出高级版本,大家拭目以待。
玩家移动代码:
//移动
void CommonMove(char board[ROWS][COLS],Point* point,char ch)
{
if(point == NULL)
{
return;
}
int x = point->row;
int y = point->col;
//如果棋盘满了的话就退出循环,也就是不能再下子了
while(1)