亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? telligent.cpp

?? 九江麻將源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "everyman.h"
#include "unit1.h"

#define NLABEL    //桌面上不顯示電腦狀態(tài)

//#define NDEBUG   //不要assert
#include <assert.h>

void computerleft::chu()
{
    #ifndef NLABEL
    Form1->Label5->Caption=wantto;
    #endif

    mjpai mj=man::discard();

    //mj=painewget;//test

    if(mj==painewget)
    {
         Form1->mjots.insertmjleft(mj);
         painewget=0;
    }
    else
    {
        Form1->mjots.insertmjleft(mj);
        zuhand.takemj(zuhand.find(mj));
        zuhand.insertmj(painewget);
        painewget=0;
    }
}

void computerright::chu()
{
    #ifndef NLABEL
    Form1->Label7->Caption=wantto;
    #endif

    mjpai mj=man::discard();

    if(mj==painewget)
    {
         Form1->mjots.insertmjright(mj);
         painewget=0;
    }
    else
    {
        Form1->mjots.insertmjright(mj);
        zuhand.takemj(zuhand.find(mj));
        zuhand.insertmj(painewget);
        painewget=0;
    }
}

void computerup::chu()
{

    mjpai mj=man::discard();

    if(mj==painewget)
    {
         Form1->mjots.insertmjup(mj);
         painewget=0;
    }
    else
    {
        Form1->mjots.insertmjup(mj);
        zuhand.takemj(zuhand.find(mj));
        zuhand.insertmj(painewget);
        painewget=0;
    }
    #ifndef NLABEL
    zuhand.sort();
    Form1->Label6->Caption="";
    for(int i=0;i<zuhand.getcount();i++)
        Form1->Label6->Caption=Form1->Label6->Caption+AnsiString(zuhand.getmj(i))+" ";
    Form1->Label6->Caption=Form1->Label6->Caption+"wantto"+wantto;
    #endif
}

bool man::wanttobugang()const   //只是有補(bǔ)就補(bǔ),但是也不全,
{
    int i;

    if(wantto==dui)return false;//打七對不補(bǔ)杠

    i=zushowed.findke(painewget);
    if(i!=100) return true;

    int c=0;
    for(i=0;i<zuhand.getcount();i++)
        if(painewget==zuhand.getmj(i))
            c++;

    if(c==3)//可以補(bǔ)杠,
    {
        if(isting)     //可以聽,則看杠后能不能繼續(xù)聽,能,就杠
        {
            mjpai mj[14];
            mjpai mjs=painewget;
            for(i=0;i<zuhand.getcount();i++)
                mj[i]=zuhand.getmj(i);

           ::mishel(mj,zuhand.getcount());

            for(int i=0;i<zuhand.getcount()-3;i++)
                if(mj[i]==mjs)
                {
                    for(int j=i;j<zuhand.getcount()-3;j++)
                        mj[j]=mj[j+3];
                    break;
                }

            if(::ting(mj,zuhand.getcount()-3).getcount()>0)
                return true;
            else return false;
        }

        return true;
    }

    return false;
}

bool man::wanttohu(bool iszimo) //檢測和牌合不合規(guī)則亦在這里
{
    if(!iszimo) //不是自摸,則到桌上取別人剛出的牌
    {
        mjpai mj=Form1->mjots.getnewest();

        painewget=mj;
    }

    if(!this->hu())
    {
        if(!iszimo)painewget=0;
        return false;
    }

    if(iszimo)
    {
        return true;
    }

    if(zushowed.getkuaicount()==0)
    {
        if(!iszimo)painewget=0;
        return true;
    }
    if(fa()||zimingke()||zianke()||
        ziminggang()||ziangang()||minggang()||
        angang())
    {
        if(!iszimo)painewget=0;
        return true;
    }

    if(hunyise()||pengpenghu()||qidui()||yitiaolong())
    {
        if(!iszimo)painewget=0;
        return true;
    }

    painewget=0;

    if(duting())
    {
        //if(!iszimo)painewget=0;
        return true;
    }

   // if(!iszimo)painewget=0;
    return false;
    //碰了以后 無番和 不能和別人放炮
    /*****old若無發(fā)、字刻、杠:普通和只能自摸,大和(碰碰和、清一色、混一色、七對)可以炮、摸*/
}

static mjpaizu GetRidOfShunKe(mjpai* mj,int c,bool forward=true);

bool man::wanttopeng()const
{
    if(wantto==dui)return false;//打七對 不碰
    if(isting) return false; //聽牌就不碰


    mjpai mj[13];
    int mjs,c;
    mjpaizu temp;

    c=zuhand.getcount();
    for(int i=0;i<c;i++)
        mj[i]=zuhand.getmj(i);

    if(wantto!=pengpeng)//如果不是碰碰和那么 除去可連成3張的牌
    {
        temp=GetRidOfShunKe(mj,c);
        c=temp.getcount();
        for(int i=0;i<c;i++)
            mj[i]=temp.getmj(i);
    }
    
    mjs=Form1->mjots.getnewest();
    return (::pengandgang(mj,c,mjs)==1)?true:false;
}

bool man::wanttogang()const
{
    if(wantto==dui)return false;//打七對 不杠

    mjpai mj[13],mj1[13];
    int mjs,c;

    mjs=Form1->mjots.getnewest();

    c=zuhand.getcount();
    for(int i=0;i<c;i++)
        mj[i]=zuhand.getmj(i);

    if(::pengandgang(mj,c,mjs)==2)//如果可以杠且聽牌
    {                                              //如果杠后仍聽,則杠
        if(isting)
        {
            mishel(mj,c);

            for(int i=0;i<c-3;i++)
                if(mj[i]==mjs)
                {
                    for(int j=i;j<c-3;j++)
                        mj[j]=mj[j+3];
                    break;
                }

            if(::ting(mj,c-3).getcount()>0)
                return true;
            else return false;
        }


        return true;
    }
    return false;
}

void man::peng()
{
    soundpeng();
    //這里先簡單的找牌吃碰杠
    mjpai mjs=Form1->mjots.takenewest();

    if(!fainhandhavedetected)
    {
        for(int i=0;i<zuhand.getcount();i++) //補(bǔ)手上的發(fā)
            if(zuhand.getmj(i)==mjpai::fa)
            {
                mjpai temp;
                zuhand.takemj(i);
                zushowed.insertmjkuai(mjpai::fa,3);
                temp=Form1->mjot.takeone(false);
                while(temp==mjpai::fa)
                {
                    zushowed.insertmjkuai(mjpai::fa,3);
                    temp=Form1->mjot.takeone(false);
                }
                zuhand.insertmj(temp);
            i=-1;
            }
        fainhandhavedetected=true;
    }

    int i=zuhand.find(mjs);
    assert(i!=100);
    zuhand.takemj(i);

    i=zuhand.find(mjs);
    assert(i!=100);
    zuhand.takemj(i);

    zushowed.insertmjkuai(mjs,1);

                if(wantto==yise)//如果在打一色,且碰了別的牌,就不打一色了
                {
                    if(se==wan&&(mjs.isbing()||mjs.istiao()))
                        wantto=nothing;
                    if(se==tiao&&(mjs.isbing()||mjs.iswan()))
                        wantto=nothing;
                    if(se==bing&&(mjs.iswan()||mjs.istiao()))
                        wantto=nothing;
                }


    painewget=zuhand.takemj(zuhand.getcount()-1);

    for(i=0;i<3;i++)
        Form1->mjots.insertshowedinhand(mjs);

}



void man::gang()
{
    soundgang();
    //這里先簡單的找牌吃碰杠
    mjpai mjs=Form1->mjots.takenewest();


    if(!fainhandhavedetected)
    {
        for(int i=0;i<zuhand.getcount();i++) //補(bǔ)手上的發(fā)
            if(zuhand.getmj(i)==mjpai::fa)
            {
                mjpai temp;
                zuhand.takemj(i);
                zushowed.insertmjkuai(mjpai::fa,3);
                temp=Form1->mjot.takeone(false);
                while(temp==mjpai::fa)
                {
                    zushowed.insertmjkuai(mjpai::fa,3);
                    temp=Form1->mjot.takeone(false);
                }
                zuhand.insertmj(temp);
            i=-1;
            }
        fainhandhavedetected=true;
    }

    int mjn=Form1->mjot.takeone(false);
    while(mjn==mjpai::fa)
    {
        zushowed.insertmjkuai(mjpai::fa,3);
        mjn=Form1->mjot.takeone(false);
    }

    int i=zuhand.find(mjs);
    assert(i!=100);
    zuhand.takemj(i);

    i=zuhand.find(mjs);
    assert(i!=100);
    zuhand.takemj(i);

    i=zuhand.find(mjs);
    assert(i!=100);
    zuhand.takemj(i);

    zushowed.insertmjkuai(mjs,2,false);
    
                if(wantto==yise)//如果在打一色,且杠了別的牌,就不打一色了
                {
                    if(se==wan&&(mjs.isbing()||mjs.istiao()))
                        wantto=nothing;
                    if(se==tiao&&(mjs.isbing()||mjs.iswan()))
                        wantto=nothing;
                    if(se==bing&&(mjs.iswan()||mjs.istiao()))
                        wantto=nothing;
                }

    painewget=mjn;

    for(i=0;i<4;i++)
        Form1->mjots.insertshowedinhand(mjs);
}

void man::bugang()//有兩種情況,可能新摸的要杠,或者,手上早有4張
{               //wanttobugang可以配合(相當(dāng)于叫),屬于電腦智能一部分
    soundgang();
    mjpai mj;
    mjpai mja[14];

    if(!fainhandhavedetected)
    {
        for(int i=0;i<zuhand.getcount();i++) //補(bǔ)手上的發(fā)
            if(zuhand.getmj(i)==mjpai::fa)
            {
                mjpai temp;
                zuhand.takemj(i);
                zushowed.insertmjkuai(mjpai::fa,3);
                temp=Form1->mjot.takeone(false);
                while(temp==mjpai::fa)
                {
                    zushowed.insertmjkuai(mjpai::fa,3);
                    temp=Form1->mjot.takeone(false);
                }
                zuhand.insertmj(temp);
            i=-1;
            }
        fainhandhavedetected=true;
    }
    
    mj=Form1->mjot.takeone(false);
    while(mj==mjpai::fa)
    {
        zushowed.insertmjkuai(mjpai::fa,3);
        mj=Form1->mjot.takeone(false);
    }

    int i=zushowed.findke(painewget);//看看摸到的牌能不能補(bǔ)杠
    if(i!=100)
    {
        zushowed.bugang(painewget);

                if(wantto==yise)//如果在打一色,且杠了別的牌,就不打一色了
                {
                    if(se==wan&&(painewget.isbing()||painewget.istiao()))
                        wantto=nothing;
                    if(se==tiao&&(painewget.isbing()||painewget.iswan()))
                        wantto=nothing;
                    if(se==bing&&(painewget.iswan()||painewget.istiao()))
                        wantto=nothing;
                }
                
        painewget=mj;
        return;
    }

    int s,j;


    for(i=0;i<zuhand.getcount();i++)//看看手上的牌能不能補(bǔ)杠
    {
        mja[i]=zuhand.getmj(i);
        if(zushowed.findke(mja[i])!=100)
        {
            zushowed.bugang(mja[i],false);
            zuhand.takemj(zuhand.find(mja[i]));
            //zuhand.insertmj(mj);
            zuhand.insertmj(painewget);
            painewget=mj;

                Form1->mjots.insertshowedinhand(mja[i]);
                if(wantto==yise)//如果在打一色,且杠了別的牌,就不打一色了
                {
                    if(se==wan&&(mja[i].isbing()||mja[i].istiao()))
                        wantto=nothing;
                    if(se==tiao&&(mja[i].isbing()||mja[i].iswan()))
                        wantto=nothing;
                    if(se==bing&&(mja[i].iswan()||mja[i].istiao()))
                        wantto=nothing;
                }
            return ;
        }
    }

    mja[i]=painewget;

    for(i=0;i<zuhand.getcount()+1;i++) //剩下的就是手上有4張相同
    {
        s=0;
        for(j=i+1;j<zuhand.getcount()+1;j++)
            if(mja[i]==mja[j]) s++;
        if(s==3)
            break;
    }
    //assert(c==3);
    assert(i!=zuhand.getcount()+1);
    zushowed.insertmjkuai(mja[i],2,true);
    
                if(wantto==yise)//如果在打一色,且杠了別的牌,就不打一色了
                {
                    if(se==wan&&(mja[i].isbing()||mja[i].istiao()))
                        wantto=nothing;
                    if(se==tiao&&(mja[i].isbing()||mja[i].iswan()))
                        wantto=nothing;
                    if(se==bing&&(mja[i].iswan()||mja[i].istiao()))

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本一道综合狠狠老| 一道本成人在线| 亚洲另类春色国产| 日韩一区二区影院| av中文字幕一区| 蜜桃视频在线观看一区二区| 日韩美女视频一区二区| 日韩欧美一级在线播放| 精品婷婷伊人一区三区三| 国产成人av在线影院| 免费观看30秒视频久久| 亚洲午夜激情网页| 成人免费在线播放视频| www激情久久| 欧美丰满嫩嫩电影| 在线观看日韩一区| jlzzjlzz亚洲女人18| 国产一区二区女| 久久国产精品99久久久久久老狼 | 亚洲图片自拍偷拍| 国产精品私房写真福利视频| 欧美精品一区二区三区在线| 制服丝袜日韩国产| 欧美日韩一级二级三级| 欧美性视频一区二区三区| 91网上在线视频| av电影在线观看不卡| 国产成人亚洲精品青草天美| 国产一本一道久久香蕉| 激情综合色综合久久| 青青草国产成人99久久| 丝瓜av网站精品一区二区| 亚洲电影一区二区| 亚洲大片精品永久免费| 夜夜夜精品看看| 麻豆高清免费国产一区| 亚洲成人你懂的| 午夜电影一区二区| 天天色天天操综合| 日韩高清一区在线| 日韩av一区二区三区| 全部av―极品视觉盛宴亚洲| 视频一区视频二区中文| 三级欧美韩日大片在线看| 午夜一区二区三区在线观看| 午夜欧美在线一二页| 日韩电影在线免费| 久久精品国产一区二区三区免费看| 日韩精品91亚洲二区在线观看| 日本不卡视频在线| 麻豆91在线播放免费| 国产毛片精品一区| 丁香六月久久综合狠狠色| 国产高清精品在线| 色综合欧美在线视频区| 欧美日韩国产综合久久| 欧美一级久久久久久久大片| 精品国产髙清在线看国产毛片| 精品国产三级电影在线观看| 欧美激情综合网| 亚洲精品日产精品乱码不卡| 天天影视网天天综合色在线播放| 蜜臀av一级做a爰片久久| 国产成人亚洲综合色影视| 色综合 综合色| 欧美福利视频一区| 久久久久久久久久久99999| 中文字幕在线一区免费| 亚洲自拍偷拍欧美| 国精品**一区二区三区在线蜜桃| 成人h版在线观看| 欧美日韩综合色| 久久久久久日产精品| 亚洲男人天堂一区| 美女在线视频一区| 成人va在线观看| 欧美丰满一区二区免费视频| 国产亚洲欧美色| 午夜婷婷国产麻豆精品| 国产成人精品免费网站| 欧美日韩综合一区| 中文字幕第一区二区| 亚洲电影一级片| 成人性色生活片| 777久久久精品| 国产精品美女久久久久久| 亚洲成av人片一区二区三区| 成人综合激情网| 3d动漫精品啪啪一区二区竹菊| 国产区在线观看成人精品| 三级成人在线视频| 99视频一区二区| 国产a级毛片一区| 欧美日本一区二区在线观看| 国产三区在线成人av| 无码av中文一区二区三区桃花岛| 国产精品一区2区| 欧美亚洲一区二区三区四区| 国产免费久久精品| 日本不卡视频一二三区| 色妞www精品视频| 久久久www成人免费无遮挡大片| 亚洲免费视频中文字幕| 国产在线精品一区二区| 欧美日韩另类国产亚洲欧美一级| 亚洲摸摸操操av| 国产一区二区成人久久免费影院| 欧美日韩一本到| 亚洲欧美影音先锋| 国产精品一级二级三级| 欧美一区二区性放荡片| 亚洲久本草在线中文字幕| 国产成人综合在线观看| 日韩欧美久久一区| 午夜精品视频一区| 色噜噜久久综合| 国产精品乱子久久久久| 国产成人亚洲综合色影视| 欧美成人官网二区| 丝袜美腿一区二区三区| 欧美午夜视频网站| 亚洲一区二区三区四区五区中文| 成人av电影在线观看| 久久影院视频免费| 久久www免费人成看片高清| 在线成人av网站| 亚洲图片有声小说| 欧美色综合影院| 亚洲福利一二三区| 欧美日韩一区在线| 香蕉成人啪国产精品视频综合网| 欧美在线观看禁18| 亚洲一区二区三区不卡国产欧美| 在线免费观看日本欧美| 亚洲一区二区在线观看视频| 欧洲视频一区二区| 亚洲国产一区在线观看| 日本精品视频一区二区| 尤物视频一区二区| 欧美三级视频在线| 五月综合激情网| 91精品在线免费观看| 免费观看日韩av| ww久久中文字幕| 国产69精品久久久久毛片| 中文字幕五月欧美| 91在线你懂得| 亚洲国产乱码最新视频| 欧美福利电影网| 久久99最新地址| 国产色产综合产在线视频| 不卡一区在线观看| 一区二区三区中文字幕电影| 91官网在线观看| 日本亚洲欧美天堂免费| 26uuu精品一区二区| 成人高清免费在线播放| 亚洲激情校园春色| 91精品国产综合久久精品 | 激情综合色综合久久| 久久久久久久久久久久久女国产乱| 国产剧情一区二区| **网站欧美大片在线观看| 在线亚洲精品福利网址导航| 日韩成人免费在线| 国产欧美一区二区精品久导航| 99久久精品一区二区| 午夜精品福利久久久| 亚洲精品一区二区三区精华液| 成人在线视频一区二区| 香港成人在线视频| 久久精品亚洲乱码伦伦中文| 91成人网在线| 狠狠久久亚洲欧美| 亚洲欧美视频在线观看| 91精品麻豆日日躁夜夜躁| 国产成人免费av在线| 一区二区三区免费网站| 欧美不卡在线视频| 91原创在线视频| 久久66热偷产精品| 亚洲欧美日韩电影| 日韩一本二本av| 色伊人久久综合中文字幕| 久久91精品久久久久久秒播| 一区二区三区精品久久久| 精品国产百合女同互慰| 欧亚洲嫩模精品一区三区| 国产精品亚洲午夜一区二区三区| 亚洲国产精品一区二区www在线| 久久亚洲二区三区| 777亚洲妇女| 91久久人澡人人添人人爽欧美| 激情综合网av| 日韩国产在线一| 亚洲人吸女人奶水| 久久久久国产一区二区三区四区| 欧美人动与zoxxxx乱| 成人午夜激情在线| 国产精一区二区三区|