| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1318 人关注过本帖
标题:三子棋 代码求助!!!
取消只看楼主 加入收藏
_GAOYANG_
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-12-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
三子棋 代码求助!!!
要求更改函数first 和函数second(即先下还是后下)让赢的几率更大!! 让更改后的代码实现电脑自动下棋..(就是说我编写的first函数和你编写second函数放在一起看先手能赢还是后手能赢)   
#include<iostream>
#include<cstdlib>
using namespace std ;
//////////////////////////////////////////////////////
void first(const char chess[3][3],int &x,int &y)//定义先手函数;
{
    for (int i = 0;i<3;++i)
    {
        for (int j=0;j<3;++j)
         {
             if (chess[i][j]==' ')
            {
                x=i;y=j;
            }
        }
    }
}
///////////////////////////////////////////////////
void second(const char chess[3][3],int &x,int &y)//定义后手函数;
{
    for (int i = 0;i<3;++i)
        {
          for (int j=0;j<3;++j)
           {
                if (chess[i][j]==' ')
            {
                x = i;    y=j;
            }
           }
        }
}
//////////////////////////////////////////////////////////////
void printchessboard(const char chess[3][3])  /*打印棋盘*/
{
    int i,j;
    cout<<" -------"<<endl;
    for (i = 0;i<3;++i)
    {
        cout<<"| ";
        for (j = 0;j<3;++j)
            cout<<chess[i][j]<<' ';
        cout<<"| ";
        cout<<endl;
    }
    cout<<" ------"<<endl;
}
int judge(char chess[3][3],int x,int y,char ch)//胜返回1,负返回2,平返回0,无法判断胜负-1;
{
    if (x>2 || x<0 || y>2 || y<0 || chess[x][y]!=' ')
        return 2;   //无效落子;
    chess[x][y] = ch;
    int i,j;
    for (i=0;i<3;++i) //判断i行是否全一致
        if (chess[i][0]==chess[i][1] && chess[i][1]==chess[i][2] && chess[i][0]!=' ')
            return 1;
    for (i=0;i<3;++i) //判断i列是否全一致
        if (chess[0][i]==chess[1][i] && chess[1][i]==chess[2][i] && chess[0][i]!=' ')
            return 1;
    //判断3*3棋盘对角线是否全一致
    if (chess[0][0]==chess[1][1] && chess[1][1]==chess[2][2] && chess[1][1]!=' ')
        return 1;
    //判断3*3棋盘对角线是否全一致
    if (chess[2][0]==chess[1][1] && chess[1][1]==chess[0][2] && chess[1][1]!=' ')
        return 1;
    int flag = 0;
    for (i = 0;i<3;++i)
        for (j=0;j<3;++j)
            if (chess[i][j]==' ') return -1;
            return 0;
}
///////////////////////////////////////////
void initalchessboard(char chess[3][3])
{
    int i,j;
    for (i=0;i<3;++i)
        for(j=0;j<3;++j)
            chess[i][j] = ' ';
}
///////////////////////////////////////////
int main()
{
    char chessboard[3][3],piece;//生成3*3的2维数组,和字符型变量piece;
    initalchessboard(chessboard);//调用initalchessboard函数,传入实参chessboard;
    int turn = 0,X,Y,result;//生成整形变量X,Y,result,turn,并且将turn初始化为0;
    while (1)
    {
        system("cls");//清除屏幕;
        if (turn++%2==0)//判断是先手下棋还是后手下棋;
        {
            first(chessboard,X,Y);//调用先手函数、并且传入实参chessboard,X,Y;
            piece = 'A';//将字符A赋值给piece;
        }
        else
        {
            second(chessboard,X,Y);//调用后手函数,出入实参chessboard,X,Y;
            piece = 'B';//将字符B赋值给piece;
        }
        result = judge(chessboard,X,Y,piece);//将判断的结果赋值给result;
        cout<<"当前比赛为第"<<turn<<"手棋"<<endl;//输出当前比赛的第几手棋;
        printchessboard(chessboard);//调用printchessboard函数并且传入实参;再次打印棋盘
        
        if (result==0)//双方打平;
        {            
            cout<<"双方打平"<<endl;
        }
        else if (result==2)//输掉比赛;
        {

            if (piece=='A')
                cout<<"先手方犯规,输掉比赛"<<endl;
            else
                cout<<"后手方犯规,输掉比赛"<<endl;
            
            break;
        }
        else if (result==1)//比赛胜利;
        {
            if (piece=='A')
                cout<<"先手方胜!!!!比赛结束!!!!"<<endl;
            else
                cout<<"后手方胜!!!!比赛结束!!!!"<<endl;
            break;
        }
        else
        {
            cout<<"未分出胜负,比赛继续"<<endl;
        }
        system("pause");//走完前一步棋停顿一下再走第二步棋;
    }
    system("pause");
}
搜索更多相关主题的帖子: include second 
2014-12-19 23:58
_GAOYANG_
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-12-19
收藏
得分:0 
回复 3楼 yangfrancis
非常感谢啦   
你可以帮我写一下代码嘛    我刚学C++
你说的我大致理解   但是代码实现还是困难   谢谢啦
2014-12-21 22:27
快速回复:三子棋 代码求助!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028467 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved