iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何用C++实现三子棋游戏
  • 350
分享到

如何用C++实现三子棋游戏

2023-06-26 06:06:19 350人浏览 独家记忆
摘要

这篇文章主要介绍了如何用c++实现三子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用C++实现三子棋游戏文章都会有所收获,下面我们一起来看看吧。游戏描述:先来点真实的!三子棋其实就是我们小时候经常玩

这篇文章主要介绍了如何用c++实现三子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用C++实现三子棋游戏文章都会有所收获,下面我们一起来看看吧。

    游戏描述:

    先来点真实的!三子棋其实就是我们小时候经常玩的井字棋,如果一方玩家实现横着三个或者竖着三个,或者对角线三个就算游戏胜利!

    (从头开始)头文件也写在前面:

    #include <stdio.h>#include <stdlib.h>#include <time.h>#define H 3//行#define L 3//列

    先把游戏与主函数写在前面:

    游戏函数:

    void game()//游戏实现步骤{char gamemap[L][H] = {0};//存储数据 二维数组initgamemap(gamemap, H, L);//棋盘初始化showgamemap(gamemap, H, L);//打印出棋盘char ret = 0;while (1)//循环下棋{playgame1(gamemap, H, L);//玩家下棋showgamemap(gamemap, H, L);//玩家下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);//判断玩家是否胜利if (ret != 'C')break;playgame2(gamemap, H, L);//电脑下棋showgamemap(gamemap, H, L);//电脑下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);// 判断电脑是否胜利if (ret != 'C')break;}if (ret == 'X'){printf("玩家赢了!");}else if (ret == 'O'){printf("电脑赢了!");}else{printf("平局");}}

    主函数:

    int main(void){Menu();//显示游戏菜单srand((unsigned int)time(NULL));int input = 0;do{printf("请输入的你选择!");scanf_s("%d", &input);switch (input){case 1:game();//游戏函数实现三子棋游戏!break;case 0:printf("退出游戏!");break;default:printf("输入错误,请从新输入!");break;}}while (input);    return 0;}

    1.构建游戏菜单

    我们用没有范围值类型的Menu函数表示游戏菜单,等下在主函数中直接读取就行。

    朴实无华的printf,毫无感情!玩家输入1,代表玩游戏,输入0代表退出游戏去!去写作业了。

    void Menu()//游戏菜单{printf("**********************\n");printf("****** 1.play   ******\n");printf("****** 0.exit   ******\n");printf("**********************\n");}

    2.构建棋盘

    1棋盘初始化

    我们用void型的initgame函数表示棋盘的初始化,棋盘的空隙我们用&rsquo; &lsquo;即空格来表示。

    void initgamemap(char gamemap[L][H], int l, int h)//棋盘初始化函数的声明{int i = 0;    int j = 0;for (i = 0; i < H; i++)//H,J分别表示为行和列{for (j = 0; j < L; j++){gamemap[i][j] = ' ';}}}

    我们可以选择直接打印出棋盘,但是这样只能把棋盘规定为3x3的,所以我们看第二种方法

    void showgamemap(char gamemap[L][H], int l, int h)//直接打印出棋盘{int i = 0;for (i = 0; i < H; i++){printf("%c  | %c |  %c\n", gamemap[i][0], gamemap[i][1],gamemap[i][2]);if (i < L - 1)printf("---|---|---\n");}}
    void showgamemap(char gamemap[L][H], int l, int h)//打印棋盘{int i = 0;for (i = 0; i < H; i++){int j = 0;for (j = 0; j < L; j++){printf(" %c ", gamemap[i][j]);if (j < L - 1)printf("|");}printf("\n");if (i < H - 1){int j = 0;for (j = 0; j < L; j++){printf("---");if (j < L - 1)printf("|");}printf("\n");}}}

    3.玩家和电脑下棋

    3.1玩家先下

    我们默认为玩家先下棋!

    我们定义使用playgame1(gamemap, H, L);函数来实现玩家下棋!

    oid playgame1(char gamemap[L][H], int l, int h)//玩家下棋{int x = 0;int y = 0;printf("玩家先下!");while (1){printf("请输入下棋的坐标:>");scanf_s("%d %d", &x, &y);//判断坐标合法性if (x >= 1 && x <= H && y >= 1 && y <= L){//下棋//坐标是否被占用if (gamemap[x - 1][y - 1] == ' '){gamemap[x - 1][y - 1] = 'X';break;}else{printf("坐标被占用, 请重新输入\n");}}else{printf("坐标非法, 请重新输入\n");}}}

    3.2电脑下棋

    由于电脑下棋的位置是随机不定的,所以我们要使用到rand函数对应头文件#include   <stdlib.h>,为了使电脑每次下棋的位置不重复同时我们需要使用随机数种子srand函数。用time()函数去本地时间作为随机种子,time函数对应头文件#include  <time.h>。

    void playgame2(char gamemap[L][H], int l, int h)//电脑下棋是是随机的{printf("电脑再下\n");int x = rand() % L;int y = rand() % H;//随机产生棋的坐标,利用取余原理,将x,y的范围限制为0-2while (1){//判断该坐标是否已经被下过了if (gamemap[x][y] == ' '){gamemap[x][y] = 'O';//电脑下的用O表示break;}}}

    4.判断胜负与下棋结果

    我们定义一个返回值为char类型的函数,通过游戏结果的几种不同条件,分别返回不同的字母,通过返回值是输出游戏结果。

    //玩家赢了-X
    //电脑赢了-O
    //平局-Q
    //游戏继续-C

    我们在游戏函数里经过玩家和电脑每次下棋后就直接执行判断游戏是否结束函数。并对返回的字母进行回馈。直到游戏结束

    int gameover1(char gamemap[L][H], int l, int h){int i = 0;int j = 0;for (i = 0; i < H; i++){for (j = 0; j < L; j++){if (gamemap[i][j] == ' '){return 0;//棋盘没满}}} return 1;//棋盘满了}char gameover(char gamemap[L][H], int l, int h){int i = 0;//判断三行for (i = 0; i < H; i++){if (gamemap[i][0] == gamemap[i][1] && gamemap[i][1] == gamemap[i][2] && gamemap[i][1] != ' '){return  gamemap[i][1];//}}//判断三列for (i = 0; i < L; i++){if (gamemap[0][i] == gamemap[1][i] && gamemap[1][i] == gamemap[2][i] && gamemap[1][i] != ' '){return gamemap[1][i];}}//判断对角线if (gamemap[0][0] == gamemap[1][1] && gamemap[1][1] == gamemap[2][2] && gamemap[1][1] != ' '){return gamemap[1][1];}if (gamemap[0][2] == gamemap[1][1] && gamemap[1][1] == gamemap[2][0] && gamemap[1][1] != ' '){return gamemap[1][1];} //判断平局//如果棋盘满了返回1, 不满返回0int ret = gameover1(gamemap, H, L);if (ret == 1){return 'Q';}//继续return 'C';}

    下棋结果的判断与输出;

    void game()//游戏实现步骤{char gamemap[L][H] = {0};//存储数据 二维数组initgamemap(gamemap, H, L);//棋盘初始化showgamemap(gamemap, H, L);//打印出棋盘char ret = 0;while (1)//循环下棋{void game()//游戏实现步骤{char gamemap[L][H] = {0};//存储数据 二维数组initgamemap(gamemap, H, L);//棋盘初始化showgamemap(gamemap, H, L);//打印出棋盘char ret = 0;while (1)//循环下棋{playgame1(gamemap, H, L);//玩家下棋showgamemap(gamemap, H, L);//玩家下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);//判断玩家是否胜利if (ret != 'C')break;playgame2(gamemap, H, L);//电脑下棋showgamemap(gamemap, H, L);//电脑下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);// 判断电脑是否胜利if (ret != 'C')break;}if (ret == 'X'){printf("玩家赢了!");}else if (ret == 'O'){printf("电脑赢了!");}else{printf("平局");}}//玩家下棋showgamemap(gamemap, H, L);//玩家下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);//判断玩家是否胜利if (ret != 'C')break;playgame2(gamemap, H, L);//电脑下棋showgamemap(gamemap, H, L);//电脑下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);// 判断电脑是否胜利if (ret != 'C')break;}if (ret == 'X'){printf("玩家赢了!");}else if (ret == 'O'){printf("电脑赢了!");}else{printf("平局");}}

    代码附上:

    #include <stdio.h>#include <stdlib.h>#include <time.h>#define H 3#define L 3void initgamemap(char gamemap[L][H], int l, int h)//棋盘初始化函数的声明{int i = 0;    int j = 0;for (i = 0; i < H; i++){for (j = 0; j < L; j++){gamemap[i][j] = ' ';}}}//void showgamemap(char gamemap[L][H], int l, int h)//直接打印出棋盘//{//int i = 0;//for (i = 0; i < H; i++)//{//printf("%c  | %c |  %c\n", gamemap[i][0], gamemap[i][1],gamemap[i][2]);//if (i < L - 1)//printf("---|---|---\n");//}//}void showgamemap(char gamemap[L][H], int l, int h)//打印棋盘{int i = 0;for (i = 0; i < H; i++){int j = 0;for (j = 0; j < L; j++){printf(" %c ", gamemap[i][j]);if (j < L - 1)printf("|");}printf("\n");if (i < H - 1){int j = 0;for (j = 0; j < L; j++){printf("---");if (j < L - 1)printf("|");}printf("\n");}}}void playgame1(char gamemap[L][H], int l, int h)//玩家下棋{int x = 0;int y = 0;printf("玩家先下!");while (1){printf("请输入下棋的坐标:>");scanf_s("%d %d", &x, &y);//判断坐标合法性if (x >= 1 && x <= H && y >= 1 && y <= L){//下棋//坐标是否被占用if (gamemap[x - 1][y - 1] == ' '){gamemap[x - 1][y - 1] = 'X';break;}else{printf("坐标被占用, 请重新输入\n");}}else{printf("坐标非法, 请重新输入\n");}}}void playgame2(char gamemap[L][H], int l, int h)//电脑下棋是是随机的{printf("电脑再下\n");int x = rand() % L;int y = rand() % H;//随机产生棋的坐标,利用取余原理,将x,y的范围限制为0-2while (1){//判断该坐标是否已经被下过了if (gamemap[x][y] == ' '){gamemap[x][y] = 'O';//电脑下的用O表示break;}}}int gameover1(char gamemap[L][H], int l, int h){int i = 0;int j = 0;for (i = 0; i < H; i++){for (j = 0; j < L; j++){if (gamemap[i][j] == ' '){return 0;//棋盘没满}}} return 1;//棋盘满了}char gameover(char gamemap[L][H], int l, int h){int i = 0;//判断三行for (i = 0; i < H; i++){if (gamemap[i][0] == gamemap[i][1] && gamemap[i][1] == gamemap[i][2] && gamemap[i][1] != ' '){return  gamemap[i][1];//}}//判断三列for (i = 0; i < L; i++){if (gamemap[0][i] == gamemap[1][i] && gamemap[1][i] == gamemap[2][i] && gamemap[1][i] != ' '){return gamemap[1][i];}}//判断对角线if (gamemap[0][0] == gamemap[1][1] && gamemap[1][1] == gamemap[2][2] && gamemap[1][1] != ' '){return gamemap[1][1];}if (gamemap[0][2] == gamemap[1][1] && gamemap[1][1] == gamemap[2][0] && gamemap[1][1] != ' '){return gamemap[1][1];} //判断平局//如果棋盘满了返回1, 不满返回0int ret = gameover1(gamemap, H, L);if (ret == 1){return 'Q';}//继续return 'C';}//玩家赢了-*//电脑赢了-#//平局-Q//游戏继续-c void Menu()//游戏菜单{printf("**********************\n");printf("****** 1.play   ******\n");printf("****** 0.exit   ******\n");printf("**********************\n");}void game()//游戏实现步骤{char gamemap[L][H] = {0};//存储数据 二维数组initgamemap(gamemap, H, L);//棋盘初始化showgamemap(gamemap, H, L);//打印出棋盘char ret = 0;while (1)//循环下棋{void game()//游戏实现步骤{char gamemap[L][H] = {0};//存储数据 二维数组initgamemap(gamemap, H, L);//棋盘初始化showgamemap(gamemap, H, L);//打印出棋盘char ret = 0;while (1)//循环下棋{playgame1(gamemap, H, L);//玩家下棋showgamemap(gamemap, H, L);//玩家下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);//判断玩家是否胜利if (ret != 'C')break;playgame2(gamemap, H, L);//电脑下棋showgamemap(gamemap, H, L);//电脑下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);// 判断电脑是否胜利if (ret != 'C')break;}if (ret == 'X'){printf("玩家赢了!");}else if (ret == 'O'){printf("电脑赢了!");}else{printf("平局");}}//玩家下棋showgamemap(gamemap, H, L);//玩家下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);//判断玩家是否胜利if (ret != 'C')break;playgame2(gamemap, H, L);//电脑下棋showgamemap(gamemap, H, L);//电脑下完棋后并打印出该棋盘ret=gameover(gamemap, H, L);// 判断电脑是否胜利if (ret != 'C')break;}if (ret == 'X'){printf("玩家赢了!");}else if (ret == 'O'){printf("电脑赢了!");}else{printf("平局");}}int main(void){Menu();//显示游戏菜单srand((unsigned int)time(NULL));int input = 0;do{printf("请输入的你选择!");scanf_s("%d", &input);switch (input){case 1:game();//游戏函数实现三子棋游戏!break;case 0:printf("退出游戏!");break;default:printf("输入错误,请从新输入!");break;}}while (input);    return 0;}

    关于“如何用C++实现三子棋游戏”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何用C++实现三子棋游戏”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网其他教程频道。

    --结束END--

    本文标题: 如何用C++实现三子棋游戏

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

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

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

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

    下载Word文档
    猜你喜欢
    • 如何用C++实现三子棋游戏
      这篇文章主要介绍了如何用C++实现三子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用C++实现三子棋游戏文章都会有所收获,下面我们一起来看看吧。游戏描述:先来点真实的!三子棋其实就是我们小时候经常玩...
      99+
      2023-06-26
    • 如何用C语言实现三子棋游戏
      这篇文章主要介绍“如何用C语言实现三子棋游戏”,在日常操作中,相信很多人在如何用C语言实现三子棋游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用C语言实现三子棋游戏”的疑惑有所帮助!接下来,请跟着小编...
      99+
      2023-06-20
    • 用C语言实现三子棋游戏
      本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 初始工作,通过#define 定义一个标识符来表示一个常量(棋盘的横纵坐标) (因为在代码的编写中,会有...
      99+
      2024-04-02
    • python如何实现三子棋游戏
      本文小编为大家详细介绍“python如何实现三子棋游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“python如何实现三子棋游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、基本流程三子棋游戏实现逻辑如下...
      99+
      2023-07-06
    • C语言实现三子棋游戏
      本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 game.h 设置头文件 #define ROW 3 #define COL 3 #include&...
      99+
      2024-04-02
    • 如何使用C语言实现三子棋游戏
      这篇文章主要介绍“如何使用C语言实现三子棋游戏”,在日常操作中,相信很多人在如何使用C语言实现三子棋游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用C语言实现三子棋游戏”的疑惑有所帮助!接下来,请跟...
      99+
      2023-06-20
    • 用C语言实现三子棋小游戏
      本文实例为大家分享了C语言实现三子棋小游戏的具体代码,供大家参考,具体内容如下 1. 规则介绍 三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起...
      99+
      2024-04-02
    • 如何使用tkinter实现三子棋游戏
      小编给大家分享一下如何使用tkinter实现三子棋游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!整体游戏很简单。下棋,判断胜利或者平局。没有加入电脑下棋的算法。游戏界面:代码:import tkinter&n...
      99+
      2023-06-06
    • 使用C语言实现三子棋游戏
      本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 先简单介绍一下我的三子棋小游戏是怎么玩的,就是自己跟电脑pk,只不过电脑没这么智能。自己输入想要下的坐标...
      99+
      2024-04-02
    • 如何用C语言实现简易三子棋游戏
      今天小编给大家分享一下如何用C语言实现简易三子棋游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、头文件#define&...
      99+
      2023-06-26
    • Java实现三子棋游戏
      本文实例为大家分享了Java实现三子棋游戏的具体代码,供大家参考,具体内容如下 一、题目要求 编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×3的棋盘中轮流下棋,一...
      99+
      2024-04-02
    • python实现三子棋游戏
      目录一、基本流程二、基本步骤1、菜单界面2、初始化棋盘、打印棋盘3、玩家落子4、电脑落子5、输赢判定三、整体代码四、结果展示三子棋的python实现代码,供大家参考,具体内容如下 一...
      99+
      2024-04-02
    • JavaSE实现三子棋游戏
      目录main函数棋盘模块设计玩家模块设计AI(电脑)模块设计游戏模块设计本文实例为大家分享了JavaSE实现三子棋游戏的具体代码,供大家参考,具体内容如下 用面向对象的思维把实现三子...
      99+
      2024-04-02
    • 如何用C语言数组实现三子棋游戏
      本篇内容介绍了“如何用C语言数组实现三子棋游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面先介绍一下写三子棋代码的过程和思路:游戏开始...
      99+
      2023-07-02
    • C语言版实现三子棋游戏
      如何用C语言来实现三子棋(井字棋),供大家参考,具体内容如下 大致思路如下 1.先打印出菜单供用户进行游戏还是退出游戏 2.编写打印棋盘的函数 3.编写用户和电脑下棋的函数 4.最后...
      99+
      2024-04-02
    • C语言实现三子棋游戏(棋盘可变)
      本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 思路: main函数结构部署 game函数功能的实现 ①创建存储空间 ②初始化存储空间为空格 ③打印棋盘...
      99+
      2024-04-02
    • 怎么用c语言实现三子棋游戏
      这篇文章给大家分享的是有关怎么用c语言实现三子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、...
      99+
      2023-06-14
    • 使用C语言实现三子棋小游戏
      目录1、实现原理2、实现模块3、实现逻辑4、实现结果本文实例为大家分享了C语言实现三子棋小游戏的具体代码,供大家参考,具体内容如下 1、实现原理 采用二位数组保存棋盘信息,棋盘上面的...
      99+
      2022-11-13
      C语言 三子棋
    • Java实现三子棋小游戏
      # 前言 之前在学习C语言的时候,做过一个三子棋的小游戏,最近开始学习Java,就想着能不能用Java再把之前的练习重新实现一边,既然有这个想法了,那就开始行动啦~。 再写的过程中...
      99+
      2024-04-02
    • C语言简单实现三子棋游戏
      本文实例为大家分享了C语言简单实现三子棋游戏的具体代码,供大家参考,具体内容如下 设计思路 1. 二维数组实现棋盘 2. 设计并打印出棋盘 3. 玩家先手 4. 每一次下棋后判断输赢...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作