返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++代码实现五子棋小游戏
  • 160
分享到

C++代码实现五子棋小游戏

2024-04-02 19:04:59 160人浏览 八月长安
摘要

简单c++代码实现五子棋任务,供大家参考,具体内容如下 首先先展示一下运行的图片 话也不多说,直接分不同代码板块来介绍程序不同功能以及是如何实现的 首先,对于一个五子棋程序,我们要

简单c++代码实现五子棋任务,供大家参考,具体内容如下

首先先展示一下运行的图片

话也不多说,直接分不同代码板块来介绍程序不同功能以及是如何实现的

首先,对于一个五子棋程序,我们要思考的,在过程式的编程思想里面,如何将其功能分解为不同的函数

1.打印棋盘

由于使用的棋子每一个棋子占两个字符,所以打印时要使用两个空格

int b=0,w=0,player=1,x,y; //b和w分别作为参数标记黑棋白棋的胜利,player用来指明每次是下黑棋还是白棋,x,y分别用来作为棋盘的横纵坐标
int chess[11][11];//初始化
void board()//每一次打印棋盘的函数
{   
    cout << "    1 2 3 4 5 6 7 8 9 10" <<endl;
    cout << "  +--------------------+" <<endl;
    for(int i=1;i<=9;i++)
    {
        cout<<" "<<i<<"|";
        input(i-1);//input函数在后文介绍
        cout<<"|"<<endl;
    }
    cout << "10|";input(9); cout <<"|" <<endl;
    cout << "  +--------------------+" <<endl;
}

考虑到字符数组本身无法同时对连续两个字符位赋值,这里采用二位数组表示下棋位置并采用一个input函数将二维数组转化为棋子

void init()
{
    for(int i=0;i<11;i++)
    {
        for(int j=0;j<11;j++)
        chess[i][j]=0;//初始化棋盘全为0
        }
}
void input(const int n)
{
    for(int i=n,j=0;j<10;j++)
    {
        switch(chess[i][j])//利用这个switch语句来将空白的棋盘中需要打印的棋子打印上去
        {
            case(0): cout << "  ";break;
            case(1): cout << "��";break;
            case(-1): cout << "��";break;
            }
    }
}

2.下棋部分

这一部分也是最为麻烦的部分,由于每次调用检验函数检验黑棋或白棋是否胜利会带来不必要的麻烦,所以在每一次下棋之后直接在下棋的位置往各个方向检索以判断是否胜利

void play(int x,int y)
{
    if(player==1)
    {chess[x-1][y-1]=1;//表示下黑棋
     if(chess[x-1][y]==1&&chess[x-1][y+1]==1&&chess[x-1][y+2]==1&&chess[x-1][y+3]==1)//重复的判断代码,每一次复制粘贴即可
     b=5;
     else if(chess[x-1][y]==1&&chess[x-1][y-1]==1&&chess[x-1][y-2]==1&&chess[x-1][y-3]==1)
     b=5;
     else if(chess[x][y-1]==1&&chess[x+1][y-1]==1&&chess[x+2][y-1]==1&&chess[x+3][y-1]==1)
     b=5;
     else if(chess[x][y-1]==1&&chess[x-1][y-1]==1&&chess[x-2][y-1]==1&&chess[x-3][y-1]==1)
     b=5;
     else if(chess[x][y]==1&&chess[x+1][y+1]==1&&chess[x+2][y+2]==1&&chess[x+3][y+3]==1)
     b=5;
     else if(chess[x-2][y-2]==1&&chess[x-3][y-3]==1&&chess[x-4][y-4]==1&&chess[x-5][y-5]==1)
     b=5;
     else if(chess[x-2][y]==1&&chess[x-3][y+1]==1&&chess[x-4][y+2]==1&&chess[x-5][y+3]==1)
     b=5;
     else if(chess[x][y-2]==1&&chess[x+1][y-3]==1&&chess[x+2][y-4]==1&&chess[x+3][y-5]==1)
     b=5;
     player=2;}
    else if(player==2)
    {chess[x-1][y-1]=-1;//表示下白棋
     if(chess[x-1][y]==1&&chess[x-1][y+1]==1&&chess[x-1][y+2]==1&&chess[x-1][y+3]==1)
     w=5;
     else if(chess[x-1][y]==1&&chess[x-1][y-1]==1&&chess[x-1][y-2]==1&&chess[x-1][y-3]==1)
     w=5;
     else if(chess[x][y-1]==1&&chess[x+1][y-1]==1&&chess[x+2][y-1]==1&&chess[x+3][y-1]==1)
     w=5;
     else if(chess[x][y-1]==1&&chess[x-1][y-1]==1&&chess[x-2][y-1]==1&&chess[x-3][y-1]==1)
     w=5;
     else if(chess[x][y]==1&&chess[x+1][y+1]==1&&chess[x+2][y+2]==1&&chess[x+3][y+3]==1)
     w=5;
     else if(chess[x-2][y-2]==1&&chess[x-3][y-3]==1&&chess[x-4][y-4]==1&&chess[x-5][y-5]==1)
     w=5;
     else if(chess[x-2][y]==1&&chess[x-3][y+1]==1&&chess[x-4][y+2]==1&&chess[x-5][y+3]==1)
     w=5;
     else if(chess[x][y-2]==1&&chess[x+1][y-3]==1&&chess[x+2][y-4]==1&&chess[x+3][y-5]==1)
     w=5;
     player=1;}
}

同时,我们还需要一点小小的附加代码,因为你不能保证每一次棋手下棋都是在合法位置

void judge()
{
    while(1)//c++类似的使用很多,用永真的表达式,然后判断跳出条件break,这里主要用来重复判断落子是否合法
    {
        if(x<=0||x>10||y<=0||y>10)
        {
            cout <<"invalid position,input again:"<<endl;
            cin >>x>>y;
            }
        else if(chess[x-1][y-1]!=0)
        {
            cout <<"wrong place,input again:"<<endl;
            cin >>x>>y;
            }
        else if(x>0&&x<=10&&y>0&&y<=10&&chess[x-1][y-1]==0)
            break;
        }
}

3.主函数

加下来就是main函数部分了,显而易见了

int main()
{   
    init();
    board();
    while(1)
   {
        cout << "Black: ";
        cin>>x>>y;
        judge();
        play(x,y);
        system("cls");//清屏功能
        board();
        if(b==5)
        {
            system("cls");cout << "Black win";break;
            }
        else if(w==5)
        {
            system("cls");cout << "White win";break;
            }
        cout << "White: " ;
        cin >>x>>y;
        judge();
        play(x,y);
        system("cls");
        board();
        if(b==5)
        {
            system("cls");cout << "Black win";break;
            }
        else if(w==5)
        {
            system("cls");cout << "White win";break;
            }
        }
    return 0;
}

至此,就可以实现整个五子棋代码的功能了

附上完整的代码:

#include <iOStream>
using namespace std;
int b=0,w=0,player=1,x,y; //b和w分别作为参数标记黑棋白棋的胜利,player用来指明每次是下黑棋还是白棋,x,y分别用来作为棋盘的横纵坐标
int chess[11][11];//初始化
void init()
{
    for(int i=0;i<11;i++)
    {
        for(int j=0;j<11;j++)
        chess[i][j]=0;//初始化棋盘全为0
        }
}
void input(const int n)
{
    for(int i=n,j=0;j<10;j++)
    {
        switch(chess[i][j])//利用这个switch语句来将空白的棋盘中需要打印的棋子打印上去
        {
            case(0): cout << "  ";break;
            case(1): cout << "��";break;
            case(-1): cout << "��";break;
            }
    }
}
void board()//每一次打印棋盘的函数
{   
    cout << "    1 2 3 4 5 6 7 8 9 10" <<endl;
    cout << "  +--------------------+" <<endl;
    for(int i=1;i<=9;i++)
    {
        cout<<" "<<i<<"|";
        input(i-1);//input函数在后文介绍
        cout<<"|"<<endl;
    }
    cout << "10|";input(9); cout <<"|" <<endl;
    cout << "  +--------------------+" <<endl;
}
void play(int x,int y)
{
    if(player==1)
    {chess[x-1][y-1]=1;//表示下黑棋
     if(chess[x-1][y]==1&&chess[x-1][y+1]==1&&chess[x-1][y+2]==1&&chess[x-1][y+3]==1)//重复的判断代码,每一次复制粘贴即可
     b=5;
     else if(chess[x-1][y]==1&&chess[x-1][y-1]==1&&chess[x-1][y-2]==1&&chess[x-1][y-3]==1)
     b=5;
     else if(chess[x][y-1]==1&&chess[x+1][y-1]==1&&chess[x+2][y-1]==1&&chess[x+3][y-1]==1)
     b=5;
     else if(chess[x][y-1]==1&&chess[x-1][y-1]==1&&chess[x-2][y-1]==1&&chess[x-3][y-1]==1)
     b=5;
     else if(chess[x][y]==1&&chess[x+1][y+1]==1&&chess[x+2][y+2]==1&&chess[x+3][y+3]==1)
     b=5;
     else if(chess[x-2][y-2]==1&&chess[x-3][y-3]==1&&chess[x-4][y-4]==1&&chess[x-5][y-5]==1)
     b=5;
     else if(chess[x-2][y]==1&&chess[x-3][y+1]==1&&chess[x-4][y+2]==1&&chess[x-5][y+3]==1)
     b=5;
     else if(chess[x][y-2]==1&&chess[x+1][y-3]==1&&chess[x+2][y-4]==1&&chess[x+3][y-5]==1)
     b=5;
     player=2;}
    else if(player==2)
    {chess[x-1][y-1]=-1;//表示下白棋
     if(chess[x-1][y]==1&&chess[x-1][y+1]==1&&chess[x-1][y+2]==1&&chess[x-1][y+3]==1)
     w=5;
     else if(chess[x-1][y]==1&&chess[x-1][y-1]==1&&chess[x-1][y-2]==1&&chess[x-1][y-3]==1)
     w=5;
     else if(chess[x][y-1]==1&&chess[x+1][y-1]==1&&chess[x+2][y-1]==1&&chess[x+3][y-1]==1)
     w=5;
     else if(chess[x][y-1]==1&&chess[x-1][y-1]==1&&chess[x-2][y-1]==1&&chess[x-3][y-1]==1)
     w=5;
     else if(chess[x][y]==1&&chess[x+1][y+1]==1&&chess[x+2][y+2]==1&&chess[x+3][y+3]==1)
     w=5;
     else if(chess[x-2][y-2]==1&&chess[x-3][y-3]==1&&chess[x-4][y-4]==1&&chess[x-5][y-5]==1)
     w=5;
     else if(chess[x-2][y]==1&&chess[x-3][y+1]==1&&chess[x-4][y+2]==1&&chess[x-5][y+3]==1)
     w=5;
     else if(chess[x][y-2]==1&&chess[x+1][y-3]==1&&chess[x+2][y-4]==1&&chess[x+3][y-5]==1)
     w=5;
     player=1;}
}
void judge()
{
    while(1)//c++类似的使用很多,用永真的表达式,然后判断跳出条件break,这里主要用来重复判断落子是否合法
    {
        if(x<=0||x>10||y<=0||y>10)
        {
            cout <<"invalid position,input again:"<<endl;
            cin >>x>>y;
            }
        else if(chess[x-1][y-1]!=0)
        {
            cout <<"wrong place,input again:"<<endl;
            cin >>x>>y;
            }
        else if(x>0&&x<=10&&y>0&&y<=10&&chess[x-1][y-1]==0)
            break;
        }
}
int main()
{   
    init();
    board();
    while(1)
   {
        cout << "Black: ";
        cin>>x>>y;
        judge();
        play(x,y);
        system("cls");//清屏功能
        board();
        if(b==5)
        {
            system("cls");cout << "Black win";break;
            }
        else if(w==5)
        {
            system("cls");cout << "White win";break;
            }
        cout << "White: " ;
        cin >>x>>y;
        judge();
        play(x,y);
        system("cls");
        board();
        if(b==5)
        {
            system("cls");cout << "Black win";break;
            }
        else if(w==5)
        {
            system("cls");cout << "White win";break;
            }
        }
    return 0;
}

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

--结束END--

本文标题: C++代码实现五子棋小游戏

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

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

猜你喜欢
  • C++代码实现五子棋小游戏
    简单C++代码实现五子棋任务,供大家参考,具体内容如下 首先先展示一下运行的图片 话也不多说,直接分不同代码板块来介绍程序不同功能以及是如何实现的 首先,对于一个五子棋程序,我们要...
    99+
    2024-04-02
  • C语言五子棋小游戏实现代码
    本文实例为大家分享了C语言实现五子棋小游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<windows.h> #...
    99+
    2022-11-13
    C语言 五子棋
  • java五子棋小游戏实现代码
    前言 之前学完java基础课程,试着简单做了一下java的一个五子棋小游戏,记录下来。 界面 由于直接用的java库中的一些基本控件写的一个GUI,并没有做过多优化,感觉比较丑 下面...
    99+
    2024-04-02
  • C++实现五子棋小游戏
    本文实例为大家分享了C++实现五子棋小游戏的具体代码,供大家参考,具体内容如下 思路:先用用system(“color 70”)改变控制台的背景色为灰白色,前...
    99+
    2024-04-02
  • python代码实现五子棋游戏
    本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 先上代码  #调用pygame库 import pygame import sys #调...
    99+
    2024-04-02
  • 基于C++实现五子棋小游戏
    本文实例为大家分享了C++实现五子棋小游戏的具体代码,供大家参考,具体内容如下  (这是一个颜色会变化的呦) #include <iostream> usi...
    99+
    2024-04-02
  • Vue实现五子棋小游戏
    本文实例为大家分享了Vue实现五子棋小游戏的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head>   ...
    99+
    2024-04-02
  • C语言版五子棋游戏的实现代码
    这次看了几位大佬的做法,我们也做了很多修改尝试。算是第一次尝试合作完成项目。 我认为学到的东西: 1、第一次尝试写项目,把函数分到不同的.c文件中后更好看了一些。 2、在研究过程中应...
    99+
    2024-04-02
  • 用C语言实现五子棋小游戏
    简介 本次五子棋使用的是光标控制移动,通过按空格键(键值32)来落子,实现游戏的。 我们额外用到的头文件有: #include<getch.h>  Q...
    99+
    2024-04-02
  • C++实现简易的五子棋小游戏
    本文实例为大家分享了C++实现简易五子棋小游戏的具体代码,供大家参考,具体内容如下 游戏界面: 这是一个简易的五子棋游戏,由c语言编写,每次循环输入两个位置的坐标,通过其奇偶性判...
    99+
    2024-04-02
  • java实现五子棋小游戏的代码怎么写
    这篇文章的内容主要围绕java实现五子棋小游戏的代码怎么写进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!讲解在第一步实现的基础上,添加游戏结束条件。...
    99+
    2023-06-26
  • Android Studio实现五子棋小游戏
    项目目录 一、项目概述二、开发环境三、详细设计1、布局设计2、验证码3、AI人机4、背景音乐 四、运行演示五、项目总结六、源码获取 一、项目概述 五子棋是一种两人对弈的策略型棋类游戏,...
    99+
    2023-10-23
    android studio android ide 安卓app 移动应用开发
  • C语言实现简易五子棋小游戏
    本文实例为大家分享了C语言实现简单五子棋小游戏的具体代码,供大家参考,具体内容如下 效果图如下: 设计思路: 棋盘设计为15×15格,初始状态光标在棋盘的中央,白棋先走...
    99+
    2024-04-02
  • pythonPyGame五子棋小游戏
    目录前言五子棋小游戏1、简介2、环境准备3、初始化环境4、棋盘5、黑白棋子6、对局信息7、AI8、完善总结前言 PyGame 是一个专门设计来进行游戏开发设计的 Python 模块,...
    99+
    2024-04-02
  • 怎么用python代码实现五子棋游戏
    这篇文章主要介绍“怎么用python代码实现五子棋游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用python代码实现五子棋游戏”文章能帮助大家解决问题。先上代码 #调用pygam...
    99+
    2023-06-30
  • 基于flask实现五子棋小游戏
    本文实例为大家分享了基于flask实现五子棋小游戏的具体代码,供大家参考,具体内容如下 前言 首先说明一下,本人方向是java后端,只因老师布置了一个作业,要用flask来做一个五子...
    99+
    2024-04-02
  • python实现简单五子棋小游戏
    用python实现五子棋简单人机模式的练习过程,供大家参考,具体内容如下 最近在初学python,今天就用自己的一些粗浅理解,来记录一下这几天的python简单人机五子棋游戏的练习,...
    99+
    2024-04-02
  • Java实现简易五子棋小游戏
    本文实例为大家分享了Java实现简易五子棋小游戏的具体代码,供大家参考,具体内容如下 五子棋是一个简单小游戏,首先我们先想想五子棋都有什么东西,棋子,棋盘; 首先我们可以定义一个棋子...
    99+
    2024-04-02
  • flask如何实现五子棋小游戏
    这篇文章主要介绍了flask如何实现五子棋小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。准备工作**1.**python环境、安装flask**2.**导入需要用到的包...
    99+
    2023-06-15
  • JavaScript实现网页五子棋小游戏
    本文实例为大家分享了JavaScript实现网页五子棋小游戏的具体代码,供大家参考,具体内容如下 设计思路如下: 1.先采用的Math.random()方法决定哪一方先行; 2.设置...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作