⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 一个麻将程序。我的。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
        Label4->Caption=Label4->Caption+"\n¥"+ls.SubString(1,ls.Pos(".")+2);
    }

    Label8->Caption="第"+AnsiString(numofgames+1)+"局";
                clearform();
                Label1->Refresh();
                Label2->Refresh();
                Label3->Refresh();
                Label4->Refresh();

}
void TForm1::rightclick(int X,int Y)
{
        int i;
        switch(gamestat)
        {
        case PlayerWaitForSelectBtn:

            if(flag_bugang||flag_zimo)
            {
                playerPGflag=btNo;
                drawbt(playerPGflag);

                gamestat=PlayerWaitForChu;
                
                flag_bugang=false;
                break;
            }



            //=================
                if(laststat==LeftWaitForMo)
                {
                    if(leftcom.wanttohu(false))
                    {
                        gamestat=LeftWaitForHu;
                        playerPGflag=btNo;
                         drawbt(playerPGflag);
                         loser=2;
                        timer->Enabled=true;
                         break;
                    }
                     if(rightcom.wanttohu(false))
                    {
                        gamestat=RightWaitForHu;
                        playerPGflag=btNo;
                         drawbt(playerPGflag);
                         loser=2;
                        timer->Enabled=true;
                        break;
                    }

                }
                else
                {
                    if(rightcom.wanttohu(false)&&laststat!=UpWaitForMo)
                    {
                        gamestat=RightWaitForHu;
                        playerPGflag=btNo;
                        drawbt(playerPGflag);
                        loser=1;
                        timer->Enabled=true;
                        break;
                    }
                    if(upcom.wanttohu(false))
                    {
                        gamestat=UpWaitForHu;
                        playerPGflag=btNo;
                         drawbt(playerPGflag);
                         loser=(laststat==UpWaitForMo)?3:1;
                        timer->Enabled=true;
                         break;
                    }
                    if(leftcom.wanttohu(false)&&laststat!=PlayerWaitForChu)
                    {
                        gamestat=LeftWaitForHu;
                        playerPGflag=btNo;
                        drawbt(playerPGflag);
                        loser=3;
                        timer->Enabled=true;
                         break;
                    }
                }
            //===================
            if(laststat!=PlayerWaitForChu)
            {
                gamestat=laststat;
                playerPGflag=btNo;
                drawbt(playerPGflag);
                timer->Enabled=true;
                break;
            }
            
            playerPGflag=btNo;
            drawbt(playerPGflag);

            if(mjot.getcount()<8)
            {
                gamestat=WaitForHuangZhuang;
                timer->Enabled=true;
                break;
            }

            gang=false;
            if(downplayer.mo())////
            {
                clearform(Rect(153,454,648,502));
                downplayer.resetbegin();
            }
            downplayer.draw(imagetype);
            clearmjot();
            mjot.draw(imagetype);

            if(downplayer.canbugang())
            {
                flag_bugang=true;
                playerPGflag=(btstat)(playerPGflag|btGang);
            }
            if(downplayer.canhu(true))
            {
                flag_zimo=true;
                 playerPGflag=(btstat)(playerPGflag|btHu);
             }
            if(playerPGflag!=0)
            {
                gamestat=PlayerWaitForSelectBtn;
                drawbt(playerPGflag);
                timer->Enabled=false;
                 break;
             }


            drawbt(btNo);

            gamestat=PlayerWaitForChu;
            break;
        case PlayerWaitForChu:
            if(playerPGflag&btChu)
            {
                downplayer.chu();
                clearform(Rect(153,454,648,502));
                downplayer.resetbegin();
                downplayer.draw(imagetype);
                clearform(Rect(278,120,528,400));
                mjots.draw(imagetype);
                playerPGflag=btNo;
                drawbt(playerPGflag);

                if(rightcom.wanttohu(false))
                {
                     gamestat=RightWaitForHu;
                     flag_zimo=false;
                     loser=0;
                     timer->Enabled=true;
                     break;
                }
                if(upcom.wanttohu(false))
                {
                     gamestat=UpWaitForHu;
                     flag_zimo=false;
                     loser=0;
                     timer->Enabled=true;
                     break;
                }
                if(leftcom.wanttohu(false))
                {
                     gamestat=LeftWaitForHu;
                     flag_zimo=false;
                     loser=0;
                     timer->Enabled=true;
                     break;
                }

                if(leftcom.wanttopeng())
                {
                    gamestat=LeftWaitForPG;
                    flag_pg=1;
                    timer->Enabled=true;
                    break;
                }
                if(leftcom.wanttogang())
                {
                    gamestat=LeftWaitForPG;
                    flag_pg=2;
                    timer->Enabled=true;
                     break;
                }
                if(rightcom.wanttopeng())
                {
                    gamestat=RightWaitForPG;
                    flag_pg=1;
                    timer->Enabled=true;
                    break;
                }
                if(rightcom.wanttogang())
                {
                    gamestat=RightWaitForPG;
                    flag_pg=2;
                    timer->Enabled=true;
                    break;
                }
                if(upcom.wanttopeng())
                {
                    gamestat=UpWaitForPG;
                    flag_pg=1;
                    timer->Enabled=true;
                    break;
                }
                if(upcom.wanttogang())
                {
                    gamestat=UpWaitForPG;
                    flag_pg=2;
                    timer->Enabled=true;
                    break;
                }

                timer->Enabled=true;
                gamestat=RightWaitForMo;
            }
            else//未选中牌,排序
            {
                downplayer.sortall();
                downplayer.draw(imagetype);
            }
            break;
        }
}
void __fastcall TForm1::PaintBox1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{


    if(Button==mbLeft)
        leftclick(X,Y);
    else if(Button==mbRight)
       rightclick(X,Y);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormResize(TObject *Sender)
{

    this->Top=-15;
    this->Left=0;

    ClientHeight=600;
    ClientWidth=790;
    PaintBox1->Height=ClientHeight;
    PaintBox1->Width=ClientWidth;

    PaintBox1->Left=0;
    PaintBox1->Top=0;

    start->Left=(ClientWidth-start->Width)/2;
    start->Top=(ClientWidth)*3/5;

    Label1->Top=515;
    Label1->Left=(ClientWidth-Label1->Width)/2;

    Label2->Left=120 ;
    Label2-> Top=ClientHeight/2;

    Label4->Left=687-13-20-Label4->Width ;
    Label4-> Top=ClientHeight/2;

    Label3->Top=69;
    Label3->Left=520;

}
//---------------------------------------------------------------------------


 void TForm1::clearmjot()
 {
    clearform(Rect(238,147,259,374));
    clearform(Rect(288,86,515,107));
    clearform(Rect(537,146,558,373));
    clearform(Rect(287,410,514,431));
 }
 void TForm1::clearform()
{

    PaintBox1->Canvas->FillRect(Rect(0,0,ClientWidth,ClientHeight));

}



void TForm1::clearform(TRect rect)
{
    PaintBox1->Canvas->FillRect(rect);
}





void TForm1::drawbt(btstat bs)
{
    int bttype,i=0,j=0;
    for(bttype=btChu;bttype<=btHu;bttype*=2)
    {
        if(bttype==btPeng) j++;//九江麻将没有吃,呵呵,后来改的
        if(bttype==btHu) j++;//取消听
        if(bs&bttype)
            PaintBox1->Canvas->CopyRect(Rect(500+i*16,520,500+i*16+16,520+18),
                imanniu->Canvas, Rect(j*16,19,j*16+16,19+18));

        else
            PaintBox1->Canvas->CopyRect(Rect(500+i*16,520,500+i*16+16,520+18),
                imanniu->Canvas, Rect(j*16,0,j*16+16,18));


        i++; j++;
    }
}

void TForm1::setbkcolor()
{
    if(imagetype==1)
    {
        Color=clGreen;
        PaintBox1->Color=clGreen;
    }
    else
    {
        Color=(TColor)0x00004080;
        PaintBox1->Color=(TColor)0x00004080;

    }
}
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
    if(!begin) return;
    mjots.draw(imagetype);
    mjot.draw(imagetype);

    leftcom.resetbegin();
    leftcom.draw(imagetype);

    upcom.resetbegin();
    upcom.draw(imagetype);

    rightcom.resetbegin();
    rightcom.draw(imagetype);

    downplayer.resetbegin();
    downplayer.draw(imagetype);

    drawbt(playerPGflag);
}
//---------------------------------------------------------------------------
void TForm1::timerfun()
{
    playerPGflag=btNo;

    int  sc[4];//和了  得分数
    
    bool flag_qghu1;
    flag_qghu1=false;

    switch(gamestat)
    {
    case fapai:
        if(fapai_num==52)
        {
            downplayer.sort();
/*            #ifndef NVIEWMAN
            leftcom.sort();          upcom.sort();   rightcom.sort();
            #endif    */

            clearform(Rect(153,454,648,502));
            downplayer.resetbegin();
            downplayer.draw(imagetype);
            clearform(Rect(52,33,100,528));
            leftcom.resetbegin();
            leftcom.draw(imagetype);
            clearform(Rect(132,20,627,68));
            upcom.resetbegin();
            upcom.draw(imagetype);
            clearform(Rect(687,37,735,532));
            rightcom.resetbegin();
            rightcom.draw(imagetype);


            switch(zhuangjia)
            {
            case 0:
                bool bMo;
                bMo=downplayer.mo();
                //gang=false;

                if(downplayer.canbugang())
                {
                     flag_bugang=true;
                     playerPGflag=btGang;
                }
                if(downplayer.canhu(true))
                {
                    flag_zimo=true;
                    playerPGflag=(btstat)(playerPGflag|btHu);
                }
                if(playerPGflag!=0)
                    gamestat=PlayerWaitForSelectBtn;
                if(bMo)////
                {
                    clearform(Rect(153,454,648,502));
                    downplayer.resetbegin();
                }
                downplayer.draw(imagetype);

                gamestat=PlayerWaitForChu;
                break;
            case 1:
                gamestat=LeftWaitForMo;
                 break;
            case 2:
                gamestat=UpWaitForMo;
                break;
            case 3:
                gamestat=RightWaitForMo;
                break;
            }

            downplayerwanttogang=false;

            timer->Interval=gamespeed;
            timer->Enabled=(gamestat==PlayerWaitForChu||
                gamestat==PlayerWaitForSelectBtn)?false:true;

            break;
        }
        switch(fapai_dir)
        {
        case 0:
            if(fapai_num<=44)
            {
                downplayer.insertmj(mjot.takeone(true));
                downplayer.insertmj(mjot.takeone(true));
                downplayer.insertmj(mjot.takeone(true));
                downplayer.insertmj(mjot.takeone(true));
                fapai_num+=4;
            }
            else
            {
                downplayer.insertmj(mjot.takeone(true));
                fapai_num+=1;
            }
            clearform(Rect(153,454,648,502));
            downplayer.resetbegin();
            downplayer.draw(imagetype);
            clearmjot();
            mjot.draw(imagetype);

            break;
        case 1:
            if(fapai_num<=44)
            {
                leftcom.insertmj(mjot.takeone(true));
                leftcom.insertmj(mjot.takeone(true));
                leftcom.insertmj(mjot.takeone(true));
                leftcom.insertmj(mjot.takeone(true));
                fapai_num+=4;
            }
            else
            {
                leftcom.insertmj(mjot.takeone(true));
                fapai_num+=1;
            }
            clearform(Rect(52,33,100,528));
            leftcom.resetbegin();
            leftcom.draw(imagetype);
            clearmjot();
            mjot.draw(imagetype);

            break;
        case 2:
            if(fapai_num<=44)
            {
                upcom.insertmj(mjot.takeone(true));
                upcom.insertmj(mjot.takeone(true));
                upcom.insertmj(mjot.takeone(true));
                upcom.insertmj(mjot.takeone(true));
                fapai_num+=4;
            }
            else
            {
                upcom.insertmj(mjot.takeone(true));
                fapai_num+=1;
            }

            clearform(Rect(132,20,627,68));
            upcom.resetbegin();
            upcom.draw(imagetype);
            clearmjot();
            mjot.draw(imagetype);
            break;
        case 3:
            if(fapai_num<=44)
            {
                rightcom.insertmj(mjot.takeone(true));
                rightcom.insertmj(mjot.takeone(true));
                rightcom.insertmj(mjot.takeone(true));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -