C+++五子棋小游戏

代码如下:


#include<iostream>
#include<string>
#include<windows.h>
#include<conio.h>
using namespace std;
int main()
{
    int player=1;  //定义一个玩家,当1时为白方,2时为黑方
    //................................棋盘1..............................................
    int qiPan[19][19];  //1.声明一个19行19列的数组来存储棋盘 1
    for(int h=0;h<19;h++) //对数组进行遍历,所有元素进行初始化(赋值),默认为0值
    {
        for(int l=0;l<19;l++)
        {
            qiPan[h][l]=0; //对当前元素进行初始化(赋值),默认为0值
        }
    }
    //...............................棋盘2................................................
    int qiPanTwo[19][19]; //声明一个19行19列的数组来存储棋盘 2
    for(int h=0;h<19;h++) //对数组进行遍历,所有元素进行初始化(赋值),默认为0值
    {
        for(int l=0;l<19;l++)
        {
            qiPanTwo[h][l]=0; //对当前元素进行初始化(赋值),默认为0值
        }
    }
    //...............................光标声明.............................................
    int X=9;   //2.声明并初始化光标的横纵坐标
    int Y=9;   
    qiPan[9][9]=8;
    //..............................显示...................................................
    for(int h=0;h<19;h++)
    {
        for(int l=0;l<19;l++)
        {
            if(qiPan[h][l]==8)
            {
                cout<<"╋";
            }
            else if(qiPanTwo[h][l]==0)
            {
                cout<<"·";
            }
            else if(qiPanTwo[h][l]==1)
            {
                cout<<"●";
            }
            else if(qiPanTwo[h][l]==2)
            {
                cout<<"○";
            }
        }
        cout<<endl;
    }
    //..............................输入控制...............................................
    while(true)
    {
        char xx=getch();  //控制台从键盘获得一个字符
        switch(xx)   //控制
{
    case 'w':  //上
    Y=Y-1;  //使光标纵坐标-1
    qiPan[Y][X]=8; //讲光标写入棋盘
    qiPan[Y+1][X]=0; //使原本位置的值还原
    break;
    case 's':  //下
    Y=Y+1;
    qiPan[Y][X]=8;
    qiPan[Y-1][X]=0;
    break;
    case 'a':  //左
    X=X-1;
    qiPan[Y][X]=8;
    qiPan[Y][X+1]=0;
    break;
    case 'd':  //右
    X=X+1;
    qiPan[Y][X]=8;
    qiPan[Y][X-1]=0;
    break;
    case 'j':   //落子
    if(player==1)  //如果当前玩家为白色方时
    {
        qiPanTwo[Y][X]=1; //通过棋盘1中的光标位置更改棋盘2中对应元素的值为1,也就是白棋落子
        player=2;  //白棋落子后更换玩家   
    }
    else if(player==2)
    {
        qiPanTwo[Y][X]=2;
        player=1;   
    }
    break;    
}
        //................................清屏操作................................................
        system("cls");  
        //...............................打印.....................................................
        for(int h=0;h<19;h++)
        {
            for(int l=0;l<19;l++)
            {
                
                if(qiPan[h][l]==8)
                {
                    cout<<"╋";
                }
                else if(qiPanTwo[h][l]==0)
                {
                    cout<<"·";
                }
                else if(qiPanTwo[h][l]==1)
                {
                    cout<<"●";
                }
                else if(qiPanTwo[h][l]==2)
                {
                    cout<<"○";
                }
            }
            cout<<endl;
        }
        //.........................游戏规则..............................................
        int shu=1,heng=1,pie=1,na=1;//横竖撇捺
        for(int i=1;i<=4;i++) //上
        {
            if(qiPanTwo[Y+i][X]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                shu++;
            else
                break;
        }
        for(int i=1;i<=4;i++) //下
        {
            if(qiPanTwo[Y-i][X]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                shu++;
            else
                break;
        }
        for(int i=1;i<=4;i++) //左
        {
            if(qiPanTwo[Y][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                heng++;
            else
                break;
        }
        for(int i=1;i<=4;i++) //右
        {
            if(qiPanTwo[Y][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                heng++;
            else
                break;
        }
        for(int i=1;i<=4;i++) //左下
        {
            if(qiPanTwo[Y+i][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                pie++;
            else
                break;
        }
        for(int i=1;i<=4;i++) //右上
        {
            if(qiPanTwo[Y-i][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                pie++;
            else
                break;
        }
        for(int i=1;i<=4;i++) //右下
        {
            if(qiPanTwo[Y+i][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                na++;
            else
                break;
        }
        for(int i=1;i<=4;i++) //左上
        {
            if(qiPanTwo[Y-i][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
                na++;
            else
                break;
        }
        if(shu==5||heng==5||pie==5||na==5)
        {
            if(qiPanTwo[Y][X]==1)
            {
                cout<<"白子获胜!";
                system("pause");
                break;
            }
            else
            {
                cout<<"黑子获胜!";
                system("pause");
                break;
            }
        }
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值