C语言学习1——n子棋的实现

C语言学习1——n子棋的实现,第1张

C语言学习1——n子棋的实现

C语言学习1——n子棋的实现
  • 一 、前言
  • 二、三子棋
    • 2.1 大体构想过程
      • 1.进入游戏
      • 2.选择开始游戏
      • 3.选择退出游戏
    • 2.2具体代码实现
      • 1.棋盘初始化函数
      • 2.棋盘打印函数
      • 3.棋盘检查函数
      • 4.玩家下棋函数
      • 5.电脑端下棋函数
      • 6.判断输赢函数
  • 三、有感
  • 四、代码链接

一 、前言

本次的游戏基于二维数组,使用二维数组实现棋盘内棋子信息的存储。游戏界面如下:
游戏实现代码附在文末~

二、三子棋 2.1 大体构想过程 1.进入游戏

首先在测试文档中构想出大体框架:

int cho  = 0;					//记录用户的选择
	do{
		menu();
		scanf("%d",&cho);
		switch (cho){
		case 0:break;  			//退出游戏
		case 1:game();break;	//开始游戏
		default:printf("wrong! please scanf again");break;
		}
	}while(cho);

首先打印游戏菜单,然后根据玩家的选择进入相应函数

2.选择开始游戏

选择开始游戏后的流程构想我是一步一步完善的:

  1. 首先想到要在游戏开始前为玩家打印一下棋盘,于是编写了pri_chess() 棋盘打印函数
  2. 后来在打印的时候发现需要对棋盘数组进行初始化,于是编写了init_chess() 棋盘初始化函数
  3. 打印完棋盘后就开始下棋啦,在这里设置的是玩家先手,所以首先编写了peo_do() 玩家下棋函数。随后编写了com_do() 电脑端下棋函数。
  4. 在下棋的过程中要判断棋盘是否下满了,所以编写了check_chess() 棋盘检查函数
  5. 最后,下棋的时候肯定要判断输赢啦,所以编写了win_chess() 判断输赢函数
3.选择退出游戏

直接break 结束函数运行。

2.2具体代码实现

以上就是整个项目实现的流程了,下面看具体的函数实现叭~

1.棋盘初始化函数
void init_chess(char arr[ROW][COL],char c,int row,int col)
{
//在这个函数中传入字符c,可以在调用时自己选择初始化数组内容
	int i = 0,j = 0;
	for(i=0;i 
2.棋盘打印函数 
void pri_chess(char arr[ROW][COL],int row,int col)
{
	int i = 0,j = 0,k = 0;
	for(i=0;i 
3.棋盘检查函数 
int check_chess(char arr[ROW][COL],int row,int col)
{//检查是否下满
	int i = 0,j = 0;
	for(i=0;i 
4.玩家下棋函数 
void peo_do(char arr[ROW][COL],int row,int col)
{
	int i = 0,j = 0;
	do{
		printf("请输入落子行列->");
		scanf("%d %d",&i,&j);
		if(i > row | j > col|arr[i-1][j-1] != ' ')
			printf("wrong!n");
	}while(i > row | j > col);
	
	arr[i-1][j-1] = '*';
}
5.电脑端下棋函数
void com_do(char arr[ROW][COL],int row,int col)
{
	int i = rand()%row;
	int j = rand()%col;
	while(arr[i][j] != ' ')
	{
		i = rand()%row;
		j = rand()%col;					
	}
	arr[i][j] = '#';
}
6.判断输赢函数
int win_chess(char arr[ROW][COL],int row,int col)
{
	int i = 0,j = 0;

	//判断每行是否相等
	for(i=0;i0;i++,j--)
	{
		if(arr[i][j] != arr[i+1][j-1])
			break;
		if(arr[i][j] != ' '&i==row-2)
			return (int)arr[i][j];
	}
	return 0;
}
三、有感

今天尝试编写了三子棋(井字棋),后来又对其进行了扩展,实现了n子棋。
在这次练习中进一步了解了

  1. #define 用法的印象~
  2. 随机函数 srand() 的使用
  3. 二维数组的使用

该游戏的实现还存在以下不足:

  1. 游戏界面简陋
  2. 电脑端下棋的算法粗糙,有待改进
四、代码链接

码云仓库链接~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5097578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存