三子棋java_【新年第一个程序】三子棋小游戏(C语言数组实现)

一、游戏效果

二、游戏规则

❶ 输入1进入游戏

❷ 输入0退出游戏

❸ 玩家先走

❹ 玩家落子是选择棋盘的坐标位置

❺ 电脑是随机落子

❻ 如果电脑连了三子则提示电脑赢了,选择要不要继续游戏

三、实现游戏的代码思路

✪ 先构架游戏整体思路

voidgame()

{char ret = 0;//数组存放棋盘信息

char board[ROW][COL] = { 0 };//二维数组的初始化并没有这么简单

int row =ROW;int col =COL;//1.初始化棋盘//一定要初始化

InitBoard(board, ROW, COL);//2.打印棋盘

DisplayBoard(board, ROW, COL);//3.玩游戏,开始下棋了

while (1)

{//玩家下棋

PlayerMove(board, ROW, COL);

DisplayBoard(board, ROW, COL);//判断玩家是否赢了

ret=Iswin(board, ROW, COL);//如果不是游戏继续,那么就直接跳出循环

if (ret != 'D')

{break;

}//电脑下棋

ComputerMove(board, ROW, COL);

DisplayBoard(board, ROW, COL);//判断电脑是否赢了

ret=Iswin(board, ROW, COL);//如果不是游戏继续,那么就直接跳出循环

if (ret != 'D')

{break;

}

}if (ret == 'X')

printf("玩家赢了\n");else if (ret == 'O')

printf("电脑赢了\n");elseprintf("平局\n");

}

————————

✪ 再分步写出相应所需函数

1、菜单函数

voidmnue()

{

printf("-------------------------------\n");

printf("-------------------------------\n");

printf("----1.play 0.exit--------\n");

printf("-------------------------------\n");

printf("-------------------------------\n");

}

————————

2、初始化棋盘函数

//函数的初始化//将棋盘所有元素都初始化为空格//空格为不在屏幕上显示其字符的字符(0也是)

void InitBoard(char board[ROW][COL], int row, intcol)

{int i = 0;for (i = 0; i < row; i++)

{int j = 0;for (j = 0; j < col; j++)

{

board[i][j]= ' ';

}

}

}

————————

3、打印棋盘函数

//打印棋盘

void DisplayBoard(char board[ROW][COL], int row, intcol)

{int i = 0;for (i = 0; i < row; i++)

{int j = 0;for (j = 0; j < col; j++)

{

printf("%c", board[i][j]);if (j < col - 1)

printf("|");

}

printf("\n");if (i < row - 1)

{for (j = 0; j < col; j++)

{

printf("---");if (j < col - 1)

printf("|");

}

printf("\n");

}

}

}

————————

4、用来存储玩家下棋信息的函数

//玩家下棋

void PlayerMove(char board[ROW][COL], int row, intcol)

{int x = 0;int y = 0;

printf("玩家走\n");while (1)

{

printf("请输入要下的坐标:");

scanf("%d%d", &x, &y);if (x >= 1 && y >= 1 && x <= row && y <=col)

{if (board[x - 1][y - 1] == ' ')

{

board[x- 1][y - 1] = 'X';break;

}elseprintf("该坐标被占用,请重新输入\n");

}elseprintf("该坐标不存在,请重新输入\n");

}

}

————————

5、电脑随机下棋的函数

//电脑随机下棋

void ComputerMove(char board[ROW][COL], int row, intcol)

{

printf("电脑走\n");//三子棋中电脑只要下在空棋盘上即可

int x = 0;int y = 0;while (1)

{

x= rand() % row;//将电脑走的随机值控制在棋盘中

y= rand() %col;if (x >= 1 && y >= 1 && x <= row && y <=col)

{if (board[x - 1][y - 1] == ' ')

{

board[x- 1][y - 1] = 'O';break;

}

}

}

}

————————

6、判断棋盘是否满了的函数

//返回1,表示棋盘满了//返回0,表示棋盘还没满

int IsFull(char board[ROW][COL], int row, intcol)

{int i = 0;for (i = 0; i < row; i++)

{int j = 0;for (j = 0; j < col; j++)

{if (board[i][j] == ' ')return 0;//没满

}

}return 1;//满了

}

————————

7、判断输赢和游戏是否继续的函数

//判断输赢和游戏是否继续//判断输赢//4种状态//1.玩家赢了---'X'//2.电脑赢了---'O'//3.平局----'C'//4.游戏继续---'D'

char Iswin(char board[ROW][COL], int row, intcol)

{int i = 0;//横3行

for (i = 0; i < row; i++)

{if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ')

{return board[i][0];//Iswin直接结束

}

}//列3行

for (i = 0; i < col; i++)

{if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ')

{return board[0][i];

}

}//两个对角线

if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')return board[1][1];if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')return board[1][1];//判断是否平局

if (1 ==IsFull(board, ROW, COL))return 'C';//继续游戏

return 'D';

}

————————

8、主函数控制游戏的进程

intmain()

{int input = 0;

srand((unsignedint)time(NULL));//扩大电脑走的随机值范围

do{

mnue();

printf("请输入(0/1):");

scanf("%d", &input);switch(input)

{case 1:

printf("三子棋游戏开始\n");

game();break;case 0:

printf("退出游戏\n");break;

defout:

printf("输入错误,请重新输入\n");break;

}

}while(input);return 0;

}

最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

【值得关注】我的

问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值