广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言三子棋游戏实现代码解析
  • 515
分享到

C语言三子棋游戏实现代码解析

2024-04-02 19:04:59 515人浏览 泡泡鱼
摘要

本文实例为大家分享了C语言三子棋游戏的具体代码,供大家参考,具体内容如下 编程环境:Visual Studio 2019 (一)创建文件  为了逻辑清晰的编程,我们先创建一

本文实例为大家分享了C语言三子棋游戏的具体代码,供大家参考,具体内容如下

编程环境:Visual Studio 2019

(一)创建文件

 为了逻辑清晰的编程,我们先创建一个叫game.h的头文件用以游戏函数的声明,两个源文件,一个是text,c用以测试,另一个game,c用以游戏函数的实现,如图所示。

(二)思路分析

首先是进入游戏界面,进行界面打印,在主函数内引用菜单函数,为了使游戏能够重复玩,将函数放在do-while循环内部。然后玩家进行游戏选择,在主函数内运用switch语句判断所选内容。


int main()
{
 int put;
 do
 {
  menu();
  printf("请选择:");
  scanf("%d", &put);
  switch (put)
  {
  case 1:
   system("cls");
   game();       //进行游戏
   break;
  case 0:
   printf("即将退出游戏!!!");
   break;
  default:
   printf("输入错误,请重新输入!!");
   system("cls");
  }
 } while (put);
 return 0;
}
void menu()//菜单函数
{
 printf("*******************************\n");
 printf("********* 1.玩游戏 ************\n");
 printf("********* 0.退出 **************\n");
 printf("*******************************\n");
}

界面搞定完成之后,就要考虑棋盘的打印了,当玩家选择进行游戏的时候,我们希望打印出的棋盘是这样的。

当我们想进行5*5的棋盘或者更大的棋盘打印的时候,可以定义全局变量X,Y分别表示行数和列数,这样更方便改动。

这个时候,可以利用字符型数组,给每个数组单元赋值为空格,然后进行打印。


void begin(char arr[X][Y], int x, int y)  //初始化棋盘
{
 int i = 0;
 int j = 0;
 for (i = 0; i < x; i++)
 {
  for (j = 0; j < y; j++)
   arr[i][j] = ' ';             //每个数组单元都为空格
 }
}
void Print(char arr[X][Y], int x, int y)  //对棋盘进行打印
{
 int i = 0;
 int j = 0;
 int k = 0;
 for (i = 0;i < x;i++)
 {
  for (j = 0;j < y;j++)
  {
   if (j == y - 1)
    printf(" %c \n", arr[i][j]);
   else
    printf(" %c |", arr[i][j]);
   if (j==y - 1)
   {
    if (i != x - 1)
    {
     for (k = 0;k < y;k++)
      {
      if (k == y - 1)
      {
       printf("---\n");
       break;
      }
      printf("---|");
     }
     break;
    }
   }
  }
 }
}

随后,设置玩家下棋函数和电脑下棋函数,将玩家下棋坐标对应数组单元赋值为'*',电脑下棋坐标对应数组单元赋值为'#',玩家下棋时,首先输入要下的坐标(这里注意下棋坐标和数组下标差一),输入坐标后,还要进行判断该位置是否已经被下过,这时候要判断所下位置是否为空格,若不是空格则需要再次输入,电脑下棋时,生成随机数,为保证生成的随机数在数组下表范围内,需要将生成的随机数对x,y取余,为扩大rand函数的范围,在引用srand函数,在函数内部放置无符号time函数,保证生成的数真正意义上随机 。


void gamer(char arr[X][Y], int x, int y)//玩家输入
{
 int a, b;
 scanf("%d %d", &a, &b);
 if (a > 0 && a <= x && b > 0 && b <= y)
 {
  if (arr[a - 1][b - 1] != ' ')
  {
   printf("位置已经被下过,请重新选择:");
   gamer(arr, x, y);
  }
  arr[a - 1][b - 1] = '*';
 }
 else
 {
  printf("输入不符合规则,请重新输入:");
  gamer(arr, x, y);
 }
 
}
void computer(char arr[X][Y], int x, int y)
{
 
 int a = rand() % x;
 int b = rand() % y;
 if (arr[a][b] == ' ')
 {
  arr[a][b] = '#';
 }
 else
 {
  computer(arr, x, y);
 }
}

玩家电脑下棋后,进行判断输赢,引用win函数,当横排或竖排或对角线相等的时候,返回相等元素的值,例如:第一排都为'*‘,则返回'*',根据返回值判断为玩家赢。当返回值为'*‘或者'#‘时,判断为游戏结束,玩家赢或者电脑赢,当返回值为' ‘时,游戏继续,当以上判断都不成立时,判断游戏屏幕是否已经满了,若不存在' ‘,则平局。


char win(char arr[X][Y], int x, int y)//判断输赢继续
{
 char ch = 'C';
 int flag = 0;
 for (int i = 0; i < x; i++)
 {
  if (arr[i][0] == arr[i][1] && arr[i][0] == arr[i][2] && arr[i][1] == arr[i][2])//行相等
  {
   return arr[i][0];
  }
 }
 for (int j = 0; j < y; j++)
 {
  if (arr[0][j] == arr[1][j] && arr[0][j] == arr[2][j] && arr[1][j] == arr[2][j])//列相等
  {
   return arr[0][j];
  }
 }
 if (arr[0][0] == arr[1][1] && arr[0][0] == arr[2][2] && arr[1][1] == arr[2][2] && arr[0][0] != ' ')//对角线相等
 {
  return arr[0][0];
 }
 if (arr[0][2] == arr[1][1] && arr[0][2] == arr[2][0] && arr[1][1] == arr[2][0] && arr[0][2] != ' ')//对角线相等
 {
  return arr[0][2];
 }
 for (int m = 0; m < x; m++)//是否铺满
 {
  for (int n = 0; n < y; n++)
  {
   if (arr[m][n] == ' ')
    flag = 1;
  }
 }
 if (flag == 0)
 {
  ch = 'Q';
 }
 return ch;
}

void game()//游戏进行函数
{
 srand((unsigned int)time(NULL));
 char arr[X][Y];
 begin(arr, X, Y);
 char rat;
 Print(arr, X, Y);
 while (1)
 {
  rat = win(arr, X, Y);
  printf("请输入您要下的棋子坐标:");
  gamer(arr, X, Y);
  Print(arr, X, Y);
  rat = win(arr, X, Y);
  if (rat != 'C' && rat != ' ')
  {
   break;
  }
  printf("电脑走\n");
  computer(arr, X, Y);
  Print(arr, X, Y);
  rat = win(arr, X, Y);
  if (rat != 'C' && rat != ' ')
  {
   break;
  }
 }
 switch (rat)
 {
 case '*':
  printf("玩家赢了!\n");
  break;
 case '#':
  printf("电脑赢了!\n");
  break;
 case 'Q':
  printf("平局\n");
  break;
 }
 printf("游戏结束\n");
 system("cls");
}

为了方便起见,我们将引用的头文件和函数放到game.h下,其他文件直接引用game.h即可。


#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#define X 3
#define Y 3
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void menu();
void game();
void begin(char arr[X][Y], int x, int y);
void Print(char arr[X][Y], int x, int y);
void gamer(char arr[X][Y], int x, int y);
void computer(char arr[X][Y], int x, int y);
char win(char arr[X][Y], int x, int y);

(三)效果展示

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

--结束END--

本文标题: C语言三子棋游戏实现代码解析

本文链接: https://www.lsjlt.com/news/131587.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言三子棋游戏实现代码解析
    本文实例为大家分享了C语言三子棋游戏的具体代码,供大家参考,具体内容如下 编程环境:Visual Studio 2019 (一)创建文件  为了逻辑清晰的编程,我们先创建一...
    99+
    2022-11-12
  • C语言版三子棋游戏实现代码
    本文实例为大家分享了C语言版三子棋游戏的具体代码,供大家参考,具体内容如下 实现一个三子棋小游戏 下面是实现步骤: 总共有需要三个文件 第一,test.c 我们要在这个文件里面实现游...
    99+
    2022-11-12
  • C语言代码实现简易三子棋游戏
    本文实例为大家分享了C语言代码实现简易三子棋游戏的具体代码,供大家参考,具体内容如下 1. 三子棋游戏规则 是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井...
    99+
    2022-11-12
  • C语言代码实现简单三子棋游戏
    三子棋是我们小时候经常玩的游戏,今天就分享一下如何用c语言简单实现三子棋吧 编译软件VS2019 c语言实现三子棋运用到了二维数组的知识,在编写三子棋程序时用到了多文件编译(不是必须...
    99+
    2022-11-12
  • C语言实现三子棋游戏
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 game.h 设置头文件 #define ROW 3 #define COL 3 #include&...
    99+
    2022-11-12
  • C语言实现三子棋游戏的示例代码
    目录1. 前言2. 准备工作3. 使用二维数组存储下棋的数据4. 初始化棋盘为全空格5. 打印棋盘6. 玩家下棋7. 电脑下棋8. 判断输赢9. 效果展示10. 完整代码game.h...
    99+
    2022-11-13
    C语言三子棋游戏 C语言三子棋 C语言 游戏
  • C语言实现三子棋游戏含完整代码
    目录一、text.c源文件部分1、main函数部分2、game函数部分二、game.h头文件部分三、game.c源文件部分运行 三子棋是大家小时候和同桌在纸上都玩过的简单小游戏,这个...
    99+
    2022-11-12
  • C语言版实现三子棋游戏
    如何用C语言来实现三子棋(井字棋),供大家参考,具体内容如下 大致思路如下 1.先打印出菜单供用户进行游戏还是退出游戏 2.编写打印棋盘的函数 3.编写用户和电脑下棋的函数 4.最后...
    99+
    2022-11-12
  • 用C语言实现三子棋游戏
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 初始工作,通过#define 定义一个标识符来表示一个常量(棋盘的横纵坐标) (因为在代码的编写中,会有...
    99+
    2022-11-12
  • 200行C语言代码实现简易三子棋游戏
    目录前言一.代码实现二.设计思路main()函数搭建框架dis_play( )函数reset ( )函数player_move( )函数computer_move()函数is_win...
    99+
    2023-05-20
    c语言三子棋程序 c语言小游戏代码 c语言三字棋
  • C语言实现三子棋小游戏的示例代码
    目录一、三子棋1.演示效果2.完整代码二、代码解析1.初始化棋盘2.打印棋盘3.玩家下棋4.电脑下棋5.判断输赢6.游戏主体函数7.菜单函数8.头文件及主函数一、三子棋 三子棋小游戏...
    99+
    2022-11-13
    C语言三子棋游戏 C语言三子棋 C语言 游戏
  • C语言代码如何实现简易三子棋游戏
    小编给大家分享一下C语言代码如何实现简易三子棋游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛...
    99+
    2023-06-14
  • C语言版三子棋游戏
    很多人从小都玩过三子棋,相信很多人都对这个游戏的实现有所疑问。那么今天我们就用C语言自己来实现一下。 首先 如流程图所示: 说明一下:首先我们以输入1/0,来判断是否进入游戏。当输...
    99+
    2022-11-12
  • C语言五子棋小游戏实现代码
    本文实例为大家分享了C语言实现五子棋小游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<windows.h> #...
    99+
    2022-11-13
    C语言 五子棋
  • C语言实现三子棋游戏(棋盘可变)
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 思路: main函数结构部署 game函数功能的实现 ①创建存储空间 ②初始化存储空间为空格 ③打印棋盘...
    99+
    2022-11-12
  • 基于C语言实现三子棋游戏
    说到三子棋,我想大家一定不陌生吧,它也是我童年中的一部分,今天我们用C语言来实现一下简易版的三子棋。 首先,介绍一下游戏规则: 1.在一个九宫格上进行下棋; 2.玩家两名,双方先后落...
    99+
    2022-11-12
  • C语言怎样实现三子棋游戏
    这篇文章给大家分享的是有关C语言怎样实现三子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。思路:main函数结构部署game函数功能的实现①创建存储空间②初始化存储空间为空格③打印棋盘④实现玩家下棋⑤实现电...
    99+
    2023-06-25
  • 用C语言实现三子棋小游戏
    本文实例为大家分享了C语言实现三子棋小游戏的具体代码,供大家参考,具体内容如下 1. 规则介绍 三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起...
    99+
    2022-11-12
  • C语言实现简易三子棋游戏
    利用数组来创建一个三子棋小游戏的步骤如下: 1、建立一个可以容纳九个元素的3*3棋盘。并初始化,使所有位置都为三。 2、打印棋盘,使其尽可能美观。 3、玩家通过输入坐标(row,co...
    99+
    2022-11-12
  • C语言简单实现三子棋游戏
    本文实例为大家分享了C语言简单实现三子棋游戏的具体代码,供大家参考,具体内容如下 设计思路 1. 二维数组实现棋盘 2. 设计并打印出棋盘 3. 玩家先手 4. 每一次下棋后判断输赢...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作