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

 更新时间:2020年11月03日 16:34:37   作者:文件传渝助手  
这篇文章主要为大家详细介绍了基于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");
 printf("       #############################################\n");
 printf("           *五子棋小游戏*\n");
 printf("           *1.双人游戏*\n");
 printf("           *2.人机对战(暂未开放)\n");
 printf("           *3.游戏须知\n");
 printf("       #############################################\n");
 printf("          请选择选项,目前仅有 1 选项\n");
 printf("\n");
 printf("           ");
 xuanze = _getch();
 switch (xuanze)
 {
 case 1:
 break;
 case 3:
 printf("本游戏是键盘输入坐标来落子的,白棋先落,第二次落子为黑色,依次落子。\n");
 printf("若落子坐标非法则需重新落子。\n");
 printf("键盘输入1直接进入游戏\n");
 
 }
}
int t = 2;
int pan[20][20] =
{
 {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6},
 {7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9}
};
void qp()//棋盘
{
 int i, j, k = 0;
 printf(" ");
 for (i = 0; i < 10; i++)
 printf(" %d", i + 1);
 for (i = 10; i < 20; i++)
 printf("%d", i + 1);
 printf("\n");
 printf("1 ");
 //printf("┌ ┬ ┐├ ┼ ┤└ ┴ ┘│ ");©○●┼
 for (i = 0; i < 20; i++)
 for (j = 0; j < 20; j++)
 {
 switch (pan[i][j])
 {
 case 1:
 printf("┌ ");
 k++;
 if (k % 20 == 0)
 {
  printf("\n");
 }  
 break;
 case 2:
 printf("┬ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 3:
 printf("┐ ");
 k++;
 if (k % 20 == 0)
 {
  printf("%d", i+1);
  printf("\n");
  printf("%d ", i + 1);
 }
 break;
 case 4:
 printf("├ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 5:
 printf("┼ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 6:
 printf("┤ ");
 k++;
 if (k % 20 == 0)
 {
  printf("%d", i+1);
  printf("\n");
  if(i<8)
  printf("%d ", i + 2);
  if(i>7)
  printf("%d", i + 2);
 }  
 break;
 case 7:
 printf("└ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 8:
 printf("┴ ");
 k++;
 if (k % 20 == 0)
  printf("\n");
 break;
 case 9:
 printf("┘ ");
 k++;
 if (k % 20 == 0)
 {
  printf("%d", i + 1);
  printf("\n");  
 }  
 break;
 case 10:
 printf("○");
 k++;
 if (k % 20 == 0)
 {
  printf("%d", i+1);
  printf("\n");
 } 
 break;
 case 11:
 printf("●");
 k++;
 if (k % 20 == 0)
 {
  printf("%d", i+1);
  printf("\n");
 } 
 break;
 }
 }
 printf(" ");
 for (i = 0; i < 10; i++)
 printf(" %d", i + 1);
 for (i = 10; i < 20; i++)
 printf("%d", i + 1);
 printf("\n");
 printf("\n");
}
void play()
{
 int i, j;
 while (1)
 {
 printf("*请选择落子坐标(x,y): ");
 scanf_s("%d %d", &j, &i);
 printf("\n");
 if(i>0&&i<21&&j>0&&j<21)
 {
 if (pan[i - 1][j - 1] != 10 && pan[i - 1][j - 1] != 11)
 {
  if (t % 2 == 1)
  {
  t++;
  pan[i - 1][j - 1] = 11;
  break;
  }
  else if (t % 2 == 0)
  {
  t++;
  pan[i - 1][j - 1] = 10;  
  break;
  }
 }
 else if (pan[i-1][j-1] == 10 || pan[i-1][j-1] == 11)
 {
  printf("此处已经有棋子,请重新输入\n");
  continue;
 }
 } 
 else if (i < 1 || i > 21 || j < 1 || j > 21)
 {
 printf("坐标不合法,请重新输入\n");
 continue;
 }
 } 
}
void test()
{
 int i, j;
 for(i=0;i<20;i++)
 for (j = 0; j < 20; j++)
 {
 if (pan[i][j] != 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9)
 {
 if (pan[i][j] == pan[i][j + 1]&&pan[i][j] == pan[i][j + 2]&&pan[i][j] == pan[i][j + 3]&&pan[i][j] == pan[i][j + 4])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋获胜\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋获胜\n");  
  }  
 }
 if (pan[i][j] == pan[i + 1][j]&&pan[i][j] == pan[i + 2][j]&&pan[i][j] == pan[i + 3][j]&&pan[i][j] == pan[i + 4][j])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋获胜\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋获胜\n");  
  }  
 }
 if (pan[i][j] == pan[i + 1][j + 1]&&pan[i][j] == pan[i + 2][j + 2]&&pan[i][j] == pan[i + 3][j + 3] &&pan[i][j]== pan[i + 4][j + 4])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋获胜\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋获胜\n");  
  }  
 }
 if (pan[i][j] == pan[i - 1][j + 1]&&pan[i][j] == pan[i - 2][j + 2] &&pan[i][j]== pan[i - 3][j + 3]&&pan[i][j] == pan[i - 4][j + 4])
 {
  if (pan[i][j] == 11)
  {
  printf("白棋获胜\n");  
  }  
  if (pan[i][j] == 10)
  {
  printf("黑棋获胜\n");  
  } 
 }
 }
 }
}
int main()
{
 system("mode con cols=98 lines=48");
 SetConsoleTitleA("五子棋小游戏"); //设置窗口
 menu();
 system("cls");
 while (1)
 {
 qp();
 test(); 
 play();
 system("cls");
 }
 system("pause");
 return 0;
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

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

相关文章

  • 动态数组C++实现方法(分享)

    动态数组C++实现方法(分享)

    下面小编就为大家带来一篇动态数组C++实现方法(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Qt向ini文件写入中文出现乱码问题的解决方法详解

    Qt向ini文件写入中文出现乱码问题的解决方法详解

    这篇文章主要为大家详细介绍了当Qt向ini文件写入中文出现乱码问题时的解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • C++学生信息管理系统

    C++学生信息管理系统

    这篇文章主要为大家想详细介绍了C++学生信息管理系统的实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • C语言计算连续无序数组中缺省数字方法详解

    C语言计算连续无序数组中缺省数字方法详解

    这篇文章主要介绍了C语言计算连续无序数组中缺省数字方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • C++数据结构二叉搜索树的实现应用与分析

    C++数据结构二叉搜索树的实现应用与分析

    从这篇博客开始,我就要和大家介绍有关二叉搜索树的知识,它还衍生出了两棵树——AVL树和红黑树,在后面两篇博客我都会介绍。今天先从二叉搜索树开始引入
    2022-02-02
  • 详解C++中typedef 和 #define 的区别

    详解C++中typedef 和 #define 的区别

    这篇文章主要介绍了C++中typedef 与 #define 的区别,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • C语言中计算二叉树的宽度的两种方式

    C语言中计算二叉树的宽度的两种方式

    这篇文章主要介绍了C语言中计算二叉树的宽度的两种方式的相关资料,需要的朋友可以参考下
    2017-04-04
  • C语言实现无头单链表详解

    C语言实现无头单链表详解

    大家好,本篇文章主要讲的是C语言实现无头单链表详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法

    Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法

    这篇文章主要介绍了Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法,请注意代码中包含大量注释,需要的朋友可以参考下
    2014-09-09
  • QT6中QTextcodec头文件找不到的解决方法

    QT6中QTextcodec头文件找不到的解决方法

    本文主要介绍了QT6中QTextcodec头文件找不到的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论