C语言实现简单版三子棋

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

游戏的主函数设计:

1.打印出可以让玩家选择游戏开始和退出的菜单。

2.如果玩家选择1,则游戏开始,并开始执行game()函数。

3.如果玩家选择0,则游戏退出。

4.如果玩家选择了其他数,提醒玩家选择正确的功能。

主函数的实现:

int main()
{
 int input = 0;
 srand((unsigned int)time(NULL));
 do
 {
  menu();
  printf("请输入-->");
  scanf("%d", &input);
  switch (input)
  {
  case 1:
   printf("游戏开始\n");
   game();//游戏的实现*****
   break;
  case 0:
   printf("退出游戏\n");
   break;
  default:
   printf("请输入正确的选择\n");
   break;
  }
 } while (input);//当输入非0时,代表循环会一直进行,当输入0时循环判断为假,所以退出游戏;
 return 0;
}

2.打印出菜单menu

//打印开始界面
void menu()
{
 printf("****************************************\n");
 printf("********** 游戏开始请输入1**************\n");
 printf("********** 游戏退出请输入0**************\n");
 printf("****************************************\n");

3.实现game()函数

我们可以将实现game()各种功能的函数定义在名为game.c的文件内部,实现游戏函数的不同功能;将函数的声明和宏定义放在game.h的头文件;游戏的测试放在名为test.c的内部;

game()函数的主要功能

//实现游戏功能的函数
void game()
{
 //定义  储存数据的二维数组
 char board[ROW][COL];
 //初始化棋盘上面的值,即下棋的地方都为空格;不初始化棋盘,棋盘上的值为随机值
 initboard(board, ROW, COL);
 //打印棋盘
 Displayboard(board, ROW, COL);
 char ret = 0;//接受游戏的状态
 while (1)
 {
  //玩家下棋
  playermove(board, ROW, COL);
  //打印出棋盘供玩家判断
  Displayboard(board, ROW, COL);
  //判读玩家是否胜利
  ret = iswin(board, ROW, COL);
  if (ret != 'C')//产生C表示游戏继续继续
  {
   break;
  }
  //电脑下棋
  computermove(board, ROW, COL);
  Displayboard(board, ROW, COL);
  //判读电脑是否胜利
  ret = iswin(board, ROW, COL);
  if (ret != 'C')
  {
   break;
  }
 }
 if (ret == '*')
 {
  printf("玩家胜利\n");
 }
 else if (ret == '#')
 {
  printf("电脑胜利\n");
 }
 else
 {
  printf("平局\n");
 }
 Displayboard(board, ROW, COL);
}

(1)初始化棋盘,把棋盘的放置棋的位置都设置为空格,如果不进行初始化,那么游戏开始的棋盘可能为随机的字符;初始化函数initboard()

void initboard(char board[ROW][COL], int row, int col)
{
 int i = 0;
 int j = 0;
 for ( i = 0; i < row; i++)
 {
  for (j = 0;j < col;j++)
  {
   board[i][j] = ' ';
  }
 }
}

(2)打印出初始化棋盘的规格。并命名函数名为Displayboard()

//打印出棋盘的模样*******************
 void Displayboard(char board[ROW][COL], int row, int col)
 {
  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)
   {
    int j = 0;
    for (j = 0;j < col;j++)
    {
     printf("---");
     if (j < col - 1)
      printf("|");
    }
    printf("\n");
   }
  }

  }

(3)玩家下棋与电脑下棋是回合制,并且每次每一方下一步棋;出棋后并判断是否有一方获胜,并且需要打印出棋盘的样子供玩家判断下一步棋的位置;

玩家下棋的函数playermove()

void playermove(char board[ROW][COL], int row, int col)
 {
  int x=0, y = 0;
  while(1)
  {
   printf("玩家走>\n");
   printf("请输入坐标");
   scanf("%d %d", &x, &y);
   //判断输入的坐标是否合法
   if (x >= 1 && x <= row && y >= 1 && y <= col)
   {
    //判读坐标是否被占用
    if (board[x - 1][y - 1] == ' ')
    {
     board[x - 1][y - 1] = '*';
     break;
    }
    else
     printf("坐标被占用,请重新输入");
   }
   else
    printf("坐标非法,请重新输入");
 }

电脑下棋的函数computermove()

void computermove(char board[ROW][COL], int row, int col)
 {
  printf("电脑走>");
  int x = rand()%row;//限制随机坐标的范围
  int y = rand()%row;//限制随机坐标的范围
  while (1)
  {

   if (board[x][y] == ' ')
   {
    board[x][y] = "#";
    break;
   }
  }
 }

判断是否有胜利一方的函数

char iswarn(char board[ROW][COL], int row, int col)
  {
   int i = 0;

    //判断三行的胜利方式
    for (i = 0;i < row;i++)
    {
     if (board[i][0] == board[i][1] && board[i][2] == board[i][1] && board[i][0] == board[i][2])
     {
      return board[i][1];
     }
    }
   //判断三列的胜利方式
   for (i = 0; i < col; i++)
   {
    if (board[0][i] == board[1][i] && board[0][i] == board[2][i] && board[1][i] == board[2][i])
    {
     return board[1][i];
    }
   }
   //判断对角线
   if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] == board[2][2])
   {
    return board[1][1];
   }
   else if (board[0][2] == board[1][1] && board[2][0] == board[1][1] && board[0][2] == board[2][0])
    {
    return board[1][1];
    }
   //通过返回的值是#和*就可以不需要使用if语句判断是电脑获胜还是玩家获胜;
    //判断平局还是继续进行游戏的情况;
   int ret = isfull(board, row, col);
    if (ret == 1)
    {
     return 'Q';//平局
    }
   return 'C';//返回C继续游戏
 }

设置game.h头文件

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>

#define ROW 3
#define COL 3

//函数声明
//初始化棋盘
 void initboard(char board[ROW][COL], int row, int col);
 void Displayboard(char board[ROW][COL],int row, int col);
 void playermove(char board[ROW][COL], int row, int col);
 void computermove(char board[ROW][COL],int row, int col);
 char iswin(char board[ROW][COL], int row, int col);

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

(0)

相关推荐

  • C语言实现的一个三子棋游戏详解流程

    目录 前言 一.三子棋完成程序运行结果 二.三子棋代码实现 1.创建源文件与头文件 2.整体页面的制作 3.制作并打印棋盘 1.在test.c文件中,定义函数game(); 2.在game.h 头文件中 3.在game.c源文件中 4.人机互动下棋 1.在test.c源文件中 2.在game.h头文件中 3.在game.c源文件中 4.此时打印效果 5.判断输赢 1.在test.c源文件中 2.在game.h头文件中 3.在game.c源文件中 4.最终实现结果 最后 前言 三子棋是我们先前所学

  • 适合初学者练习的C语言实现三子棋小游戏

    目录 一.写代码前明确下棋时的步骤与顺序 二 根据初步的主函数完成想要的代码 1.写一个函数来初始化棋盘 2.打印棋盘 3.玩家落子 4.电脑落子 5.判断胜负 三.三子棋实现代码 用简单的C语言来实现小时候玩的三子棋游戏,下面是人机对战,当然这个代码的电脑对手是人工智障而不是人工智能 一.写代码前明确下棋时的步骤与顺序 1.创建一个3*3的棋盘. 2.将上面创建的棋盘中每个格初始化成' '状态. 3.打印出初始化完成的棋盘 4.玩家落子 5.电脑落子 6.判断胜负 写代码之前梳理好大概的思路,

  • 教你用C语言实现三子棋

    目录 三子棋 work.c的设置 game.h的内容设置 game.c的设置 1.棋盘的内容 2.棋盘以及棋盘的初始化 3.打印棋盘 4.下棋步骤 玩家下棋 5.判断是否胜利 总结 三子棋 三子棋的规则是:在3x3的棋盘里,双方轮流下子(以X和O表示),先将3个子连成一条线(横竖斜都可以)的一方获胜 下面是三子棋C语言实现的几个问题: 1.要想实现三子棋,我们需要一个棋盘,然后就是棋盘的内容. 2.下棋的时候需要判断是否该位置合法. 3.玩家和电脑的下棋逻辑不同,玩家需要手动输入,电脑是自己下棋

  • 基于C语言实现三子棋小游戏

    在写三子棋之前,我们要先了解三子棋的一个大概的图形,以便于我们整理思路. 首先我们要分模块写代码,不要全部写在主函数里面,模块化的代码便于理解,而且给人一种赏心悦目的感觉,如: game.h game.c test.c game.h---头文件的包含,定义宏变量以及函数声明 #pragma once //头文件的包含 #include<stdio.h> #include<stdlib.h> #include<time.h> //函数的声明 #define ROW 3 #

  • C语言代码 模块化实现三子棋

    目录 主函数(test.c文件) 游戏开始界面设计 游戏运行逻辑(不具体解释函数的实现) 头文件(game.h)及游戏函数文件(game.c) 初始化空棋盘函数 棋盘打印函数 玩家下棋函数 电脑下棋函数 获胜条件判断函数 总结 主函数(test.c文件) 游戏开始界面设计 游戏运行逻辑(不具体解释函数的实现) 头文件(game.h)及游戏函数文件(game.c) 初始化空棋盘函数 棋盘打印函数 玩家下棋函数 电脑下棋函数 获胜条件判断函数 总结 主函数(test.c文件) int main()

  • C语言实现简单版三子棋

    本文实例为大家分享了C语言实现简单版三子棋的具体代码,供大家参考,具体内容如下 游戏的主函数设计: 1.打印出可以让玩家选择游戏开始和退出的菜单. 2.如果玩家选择1,则游戏开始,并开始执行game()函数. 3.如果玩家选择0,则游戏退出. 4.如果玩家选择了其他数,提醒玩家选择正确的功能. 主函数的实现: int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请输入-->&qu

  • C语言实现简单的三子棋游戏源码

    本文实例为大家分享了C语言实现简单的三子棋游戏的具体代码,供大家参考,具体内容如下 1.游戏的整体划分 因为C语言是面向过程的,我将游戏抽象出来玩家下棋,电脑下棋,在判断输赢这一过程,又通过对过程的分析,进行了具体函数的实现,分为如下模块: 游戏主菜单函数 void menu(); 初始化棋盘函数 void InitBoard(char board[ROW][COL], int row, int col): 打印棋盘函数 void DisplayBoard(char board[ROW][COL

  • c语言实现简易版三子棋(附完整代码)

    目录 一.菜单栏 二.初始化棋盘 三.打印棋盘 四.玩家下棋 五.电脑下棋 六.判断输赢 七.调用玩家.电脑下棋函数和判断输赢函数 八.全部代码 总结 一.菜单栏 1.制作一个简易版的菜单,并附上选项提示 2.因为该程序想至少运行一次,所有选择用do while循环,而选择玩与不玩游戏时,则采用switch case语句比较合适,然后调用相应的函数即可 二.初始化棋盘 1.先创建一个棋盘 为了便于更改棋盘大小,所有采用宏定义的方式来定义其行与列 2.对棋盘进行初始化 起初未下棋时,棋盘应该是空白

  • c语言实现简易版三子棋(附完整代码)

    目录 一.菜单栏 二.初始化棋盘 三.打印棋盘 四.玩家下棋 五.电脑下棋 六.判断输赢 七.调用玩家.电脑下棋函数和判断输赢函数 八.全部代码 总结 一.菜单栏 1.制作一个简易版的菜单,并附上选项提示 2.因为该程序想至少运行一次,所有选择用do while循环,而选择玩与不玩游戏时,则采用switch case语句比较合适,然后调用相应的函数即可 二.初始化棋盘 1.先创建一个棋盘 为了便于更改棋盘大小,所有采用宏定义的方式来定义其行与列 2.对棋盘进行初始化 起初未下棋时,棋盘应该是空白

  • C语言实现简易版三子棋游戏

    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 什么是多文件? 多数大型的工程的头文件和源文件非常多,我们也不可能把所有的代码都写在同一个文件里,这样也不方便代码的阅读与维护,通常都会根据不同的功能将代码分别书写到多个源文件与头文件中. 游戏介绍 三子棋是个简单的双人游戏,双方在3X3的棋盘上轮流落子,当一条直线上出现三颗连续且相同的棋子时即获胜.此程序让玩家先落子,电脑在棋盘上随机落子.游戏结束时显示胜负,玩家可以选择是否继续玩游戏. 代码实现 chess.h 通

  • C语言实现简单的三子棋

    本文实例为大家分享了C语言实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 一.主要思想 1.创建一个3*3的棋盘(使用字符数组) 2.初始化棋盘(用空格填充) 3.打印棋盘(使其有可见的边框) 4.玩家落子,用x表示(检验是否越界,是否已经落子,是否赢) 5.电脑落子,用o表示(检验是否已经落子,是否赢)  注:电脑在有效范围内随机落子,使用当前时间戳设置随机种子即srand(time(0)) 6.三种情况:玩家赢,电脑赢,和棋 二.代码实现 #define _CRT_SECURE_NO

  • C语言实现简单的<三子棋>案例

    棋盘的实现 众所周知,三子棋棋盘其实是一个就九方格,所以我们首先要定义一个二维数组来实现存放棋子.每一个方格我们规定为占三个小格例如 ' X ',且必须有分隔符来分开棋子. 棋盘的初始化 棋局开始时,棋盘必须是空的,所以我们首先的初始化数组,将每一个元素都置为' ',然后再来实现棋盘的功能,棋盘的初始化代码如下: void InitBoard(char board[ROW][COL], int row, int col) { for (int i = 0; i < row; i++) { for

  • C语言实现简单的三子棋小游戏

    学习完数组就能用C语言写出的简单小游戏: 编译器使用的为VS2013 代码分为三个部分 1.头文件 game.h 2.源文件 game.c 用来存放游戏中所有的函数 3.源文件 test.c 用来存放游戏的主题部分 代码如下: game.h部分 #include<stdio.h> #include<stdlib.h> #include<time.h> #define ROW 3 #define COL 3 //初始化棋盘 void InitBoard(char boar

  • C语言实现简单的三子棋游戏

    C语言:三子棋游戏,供大家参考,具体内容如下 首先,我们从main函数开始写起,分析游戏的整体逻辑 int main() { int input=0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:"); scanf("%d",&input); switch(input) { case 1: game(); break; case 0: printf("退出游戏\n")

  • 用C语言实现简单的三子棋

    三子棋代码的实现需要一个简单的思路做指引,所以我们先来做一下思路的整理,代码的实现主要分为以下几个步骤: 1.初始化数组2.显示数组3.电脑走4.玩家走5.判断输赢 所以,先写出源文件game.h,如下. #ifndef __GAME_H__   #define __GAME_H__   #define ROWS 3   //定义行   #define COLS 3   //定义列   //初始化数组 void init_board(char board[ROWS][COLS], int row

随机推荐