IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言 三子棋小游戏 -> 正文阅读

[C++知识库]C语言 三子棋小游戏

因为代码有些多,所以使用了头文件来方便理解。

void initial(char arr[ROW][COL],int row,int col) //初始化棋盘函数
{ 
 for(row=0;row<ROW;row++) 
                   
 {
   for(col=0;col<COL;col++)
       {
        arr[row][col] = ' ';
		printf("%c",arr[row][col]);
		if(col<COL -1)
		printf("  |  ");
       }
   printf("\n");
   	if(row<ROW -1)
		printf("————————\n");
 }
}
void player(char arr[ROW][COL],int row,int col) //用户下棋函数
{
 printf("请输入棋子坐标>:");
 scanf("%d %d",&row,&col);
 while(1)
 {
	   if((row>=1 && row<=ROW+1) && (col>=1 && col <=COL+1))
         {
	      if(arr[row-1][col-1] ==' ')
	        { 
			arr[row-1][col-1] = '*';
			break;
		    }
	      else if(arr[row-1][col-1] =='#')
           {
			printf("该位置已被对方占用,请重新选择!\n");
		    printf("请输入棋子坐标>:");
			scanf("%d %d",&row,&col);
		    }
		  else if(arr[row-1][col-1] =='*')
			printf("这个地方那你已经下过了,换个地方吧!\n");
		  else 
			  printf("你是怎么做到显示这个行代码的??");
         }
       else
       printf("坐标输入错误,请重新选择!\n");
	   printf("请输入棋子坐标>:");
       scanf("%d %d",&row,&col);
 }
}
void printing(char arr[ROW][COL],int row,int col) //打印棋盘的函数。
{
 for(row=0;row<ROW;row++) 
                   
 {
   for(col=0;col<COL;col++)
       {
		printf("%c",arr[row][col]);
		if(col<COL -1)
		printf("  |  ");
       }
   printf("\n");
   	if(row<ROW -1)
		printf("————————\n");
 }
}

void computer (char arr[ROW][COL],int row,int col) //电脑下棋函数。
{  
  while(1)
  { row = rand()%3;
    col = rand()%3;
    if(arr[row][col] == ' ')
	  {
	   arr[row][col] = '#';
 	   break;
       }
  }    
}
int windefeat(char arr[ROW][COL],int row,int col) //判断输赢函数。
{
 int count = 0;

 for(row=0;row<ROW;row++)
  {
     if(arr[row][0] == arr[row][1] && arr[row][1]== arr[row][2])
	    {
			if(arr[row][0] =='*')
			  return 1;
			else if(arr[row][0] == '#')
			  return 0;
	    }
  }
  for(col=0;col<COL;col++)
  {
     if(arr[0][col] == arr[1][col] && arr[1][col] ==arr[2][col])
	    {
			if(arr[0][col] == '*')
			  return 1;
			else if(arr[0][col] == '#')
			  return 0;
	    }
  }


  if(arr[0][0] == arr[1][1] && arr[1][1]== arr[2][2] )
  {
   if(arr[0][0] == '*')
	return 1;
	else if(arr[0][0] == '#')
	return 0;
  }
   if(arr[0][2] == arr[1][1] && arr[1][1]== arr[3][0] )
  {
   if(arr[0][2] == '*')
    return 1;
	else if(arr[0][2] == '#')
	return 0;
  }



   for(row=0;row<ROW;row++)
	  {
		for(col=0;col<COL;col++)
		{
		  if(arr[row][col] ==' ')
			 count++;
		}
      }
   if(count == 0)
   { return 2;}
   return 9;

}

//这是源文件,里面存放着三子棋所需要的函数。
//这是源文件,里面存放着三子棋所需要的函数。
//这是源文件,里面存放着三子棋所需要的函数。

//函数是在在 int main() 开始

#include"game.h"
#include<stdlib.h>
#include<time.h>
void menu()? //menu是菜单函数。

{ ? ?
?? ? printf("*******************************\n");
?? ? printf("******1:game ? ? ?0:exit*******\n");
?? ? printf("*******************************\n");

}
int option(int x)? ?//开局选择是否进入游戏的函数。
{
if(x==1)
?? ?return 1;
if(x==0)
?? ?return 0;
else
?? ?return 2;
}

void game() //游戏程序的实现函数。
{
?char arr[ROW][COL];
?initial(arr,ROW,COL); //棋盘的初始化。
? do
?{
?player(arr,ROW,COL);//玩家下棋函数。
?printf("胡图图下棋:\n");
?printing(arr,ROW,COL);
? ? if(windefeat(arr,ROW,COL)==0)//判断输赢函数。
?? ? ? {
?? ??? ?printf("牛爷爷赢了!\n");
?? ? ? ?break;
?? ? ? }
?? ?if(windefeat(arr,ROW,COL)==1)
?? ? ? {
?? ??? ? ?printf("胡图图赢了!\n");
?? ? ? ? ?break;
?? ? ? }
?? ?if(windefeat(arr,ROW,COL)==2)
?? ? ? {
?? ??? ? ?printf("平局了\n");
?? ? ? ? ?break;
?? ? ? }
? printf(" \n");//为了把牛爷爷和胡图图的棋盘分开,使得更明显。
? printf(" \n");
?printf(" \n");
?printf("牛爷爷下棋:\n");
?computer(arr,ROW,COL); //电脑下棋函数。
?printing(arr,ROW,COL);
? ? ?if(windefeat(arr,ROW,COL)==0)??//判断输赢函数。
?? ? ? {
?? ??? ?printf("牛爷爷赢了!\n");
?? ? ? ?break;
?? ? ? }
?? ?if(windefeat(arr,ROW,COL)==1)
?? ? ? {
?? ??? ? ?printf("胡图图赢了!\n");
?? ? ? ? ?break;
?? ? ? }
?? ?if(windefeat(arr,ROW,COL)==2)
?? ? ? {
?? ??? ? ?printf("平局了\n");
?? ? ? ? ?break;
?? ? ? }

?}
?while(1);

}

int main()
? {
? ?char arr[ROW][COL];
? ?int a;
? ?srand((unsigned int)time(NULL));?
? ?do
? ?{
? ?menu();
? ?printf("请选择>>:");
? ?scanf("%d",&a);
? ?switch(option(a))
? ?{
? ?case 0:?
?? ? ? printf("!结束游戏!\n");
?? ? ? break;
? ?case 1:
?? ? ?printf("!开始游戏!\n");
?? ? ? game();
?? ? ? break;
? ?default:
?? ? ? ? printf("输入错误,请重新输入!\n");
?? ??? ? break;

? ?}}
? ?while(option(a));

?? ? ? return 0;
? }

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:22:12  更:2022-10-08 20:26:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:38:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码