c/c++语言开发共享C语言实现三子棋游戏附注释

本文实例为大家分享了c语言实现三子棋游戏的具体代码,供大家参考,具体内容如下概述三子棋棋盘为九宫格形式,玩家和电脑分别轮流落子,若有一方有三个棋连在一起的情况则胜。实现过程1、玩家交互菜单创建2、棋盘

c/c++开发分享C语言实现三子棋游戏附注释实例为大家分享了c语言实现三子棋游戏的具体代码,供大家参考,具体内容如下

概述

三子棋棋盘为九宫格形式,玩家和电脑分别轮流落子,若有一方有三个棋连在一起的情况则胜。

实现过程

1、玩家交互菜单创建
2、棋盘创建与初始化
3、玩家与电脑落子
4、判定胜负关系

多文件实现

头文件 game.h

  #ifndef __game_h__  #define __game_h__     #include <stdio.h>  #include <time.h>  #include <stdlib.h>  #include <windows.h>     #define row 3  #define col 3     #define init ' '         //宏定义 空  #define white 'x'        //player  #define black 'o'        //computer        #define draw 'd'  #define next 'n'     #pragma warning(disable:4996)     extern void game();     #endif

源文件 main.c

  #include "game.h"     void menu()  {   printf("+-------------------------------+n");   printf("| 1. play              0. exit  |n");   printf("+-------------------------------+n");  }     int main()  {   int select = 0;   int quit = 0;   while (!quit)   {    menu();    printf("please select# ");    scanf("%d", &select);    switch (select){    case 1:     game();     break;    case 0:     quit = 1;     break;    default:     printf("enter error, try again!n");     break;    }   }   printf("byebye!n");   system("pause");   return 0;  }

源文件game.c

  #include "game.h"     static void initboard(char board[][col], int row, int col)     //对九宫格棋盘进行初始化  {   for (int i = 0; i < row; i++)      {    for (int j = 0; j < col; j++)  //双重循环 二维数组 矩阵          {     board[i][j] = init;             //init宏定义为空    }   }  }     static void showboard(char board[][col], int row, int col)  //函数 打印棋盘  {   system("cls");     //调用dos命令窗口进行清屏操作,实现刷新棋盘   printf(" ");   for (int i = 0; i < col; i++)      {    printf("%4d", i+1);   }   printf("n--------------n");   for (int i = 0; i < row; i++)      {    printf("%-2d", i+1); //2    for (int j = 0; j < col; j++)           {     printf("| %c ", board[i][j]); //12     }    printf("n--------------n");   }  }     static char isend(char board[][col], int row, int col)    {   for (int i = 0; i < row; i++)       //判断每列是否有三子连线      {    if (board[i][0] == board[i][1] &&      board[i][1] == board[i][2] &&      board[i][0] != init)          {     return board[i][0];    }   }      for (int j = 0; j < col; j++)      判断每行是否有三子连线      {    if (board[0][j] == board[1][j] &&      board[1][j] == board[2][j] &&      board[0][j] != init)          {     return board[0][j];    }   }   if (board[0][0] == board[1][1] &&          //判断右对角线是否三子连线    board[1][1] == board[2][2] &&     board[1][1] != init)      {    return board[1][1];   }   if (board[0][2] == board[1][1] &&          //判断左对角线是否三子连线    board[1][1] == board[2][0] &&     board[1][1] != init)      {    return board[1][1];   }   for (int i = 0; i < row; i++)     {    for (int j = 0; j < col; j++)         {     if (board[i][j] == init)             //判空              {             return next;     }    }   }   return draw;           //平局  }     static void playermove(char board[][col], int row, int col)    //玩家落子  {   int x = 0;   int y = 0;      //定义<x,y>坐标方式实现玩家落子   while (1)     {    printf("please enter position <x,y># ");    scanf("%d %d", &x, &y);    if (x < 1 || y < 1 || x > 3 || y > 3)    //非法判断            {     printf("enter position error!n");     continue;      }    if (board[x - 1][y - 1] == init)    //当前位置为空方可落子             {     board[x - 1][y - 1] = white;          break;         }    else            {     printf("position is not empty!n");      }   }  }  static void computermove(char board[][col], int row, int col)   //电脑落子  {   while (1){    int x = rand() % row;         int y = rand() % col;      //利用随机数种子 实现电脑落子    if (board[x][y] == init){     board[x][y] = black;     break;    }   }  }     void game()  {   char board[row][col];                //棋盘定义   initboard(board, row, col);          //棋盘初始化      srand((unsigned long)time(null));     //生成随机数种子   char result = 0;   while (1){    showboard(board, row, col);         //显示棋盘    playermove(board, row, col);        //玩家落子    result = isend(board, row, col);    //判断游戏状态    if (result != next){     break;    }    showboard(board, row, col);         //显示棋盘    computermove(board, row, col);      //电脑落子    result = isend(board, row, col);    //判断游戏状态    if (result != next){      break;    }   }   showboard(board, row, col);   switch (result){   case white:    printf("you win!n");    break;   case black:    printf("you lose!n");    break;   case draw:    printf("you == computer!n");    break;   default:    printf("bug!n"); //do nothing!    break;   }  }

三种结果展示

C语言实现三子棋游戏附注释

C语言实现三子棋游戏附注释

C语言实现三子棋游戏附注释

以上就是c/c++开发分享C语言实现三子棋游戏附注释的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

需要了解更多c/c++开发分享C语言实现三子棋游戏附注释,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/636263.html

(0)
上一篇 2021年6月8日
下一篇 2021年6月8日

精彩推荐