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

📄 huform.cpp

📁 一个麻将游戏 it is a game called sJiujiang_mahjong_BCB_code
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "huform.h"
#include "unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Thupai *hupaiform;
//---------------------------------------------------------------------------
__fastcall Thupai::Thupai(TComponent* Owner,man &dow,man &le,man &u,man &ri,bool gskh,bool qianggang,bool zimo,
        int w,int l,int mst,AnsiString *n,int *ps,int im):TForm(Owner),up(u),left(le),right(ri),down(dow)
{
    qiangganghu=qianggang;
    gangshangkaihua=gskh;
    iszimo=zimo;
    image=im;
    win=w; lose=l; master=mst;
    playername=n;
    paishu=ps;
    /*for(int i=0;i<4;i++)
        playername[i]=n[i];
    for(int i=0;i<25;i++)
        paishu[i]=ps[i];  */
}


void Thupai::calculate(int * ret)
{
             /*
                10,15, //一条龙 0
                10,15, //清一色 2
                5,10,  //混一色 (凑一色) 4
                10,15, //七对   6
                10,15, //碰碰和   8
                4,7,   //红旗飘飘  10
                10,    //杠上开花   12
                1,     //炮         13
                2,     //自摸       14
                2,     //抢杠和      15
                1,     //发          16
                1,     //字明刻      17
                2,     //字暗刻      18
                3,     //字明杠      19
                4,     //字暗杠       20
                1,     //明杠         21
                2,     //暗杠         22
                1,     //独听(砍张、边张、吊将) 23
                1};    //门清        24             */


    switch(win)
    {
    case 0:
        winner=&down;
        break;
    case 1:
        winner=&left;
        break;
    case 2:
        winner=&up;
        break;
    case 3:
        winner=&right;
        break;
    }
    winner->sort();//为了画图

    AnsiString tempstring;
    tempstring="";

    tempstring=(win==master)?AnsiString("(庄家)"):AnsiString("");
    tempstring= AnsiString( playername[win] )+ tempstring;
    if(iszimo)
        Label3->Caption=tempstring+AnsiString("  自摸\n");
    else
    {
         tempstring=tempstring+ "  和牌  ";
         tempstring=tempstring+playername[lose];
         tempstring=tempstring+(lose==master?AnsiString("(庄家)"):AnsiString(""));
         tempstring=tempstring+"  放炮\n";
        Label3->Caption=tempstring;
        assert(lose!=win);
    }

    Label1->Caption="牌种\n\n";
    Label2->Caption="牌数\n\n";

    int sum_sc=0;

    bool zimodone=false; //自摸,门清,独听,只算一次
    bool menqingdone=false;
    bool dutingdone=false;

    if(!iszimo)
    {
        Label1->Caption=Label1->Caption+"放炮 "+"\n";
        Label2->Caption=Label2->Caption+paishu[13]+"\n";
        sum_sc+=paishu[13];
    }
    if(winner->qingyise())
    {   int sc=paishu[2];
        if(iszimo&&!zimodone)
        {
            Label1->Caption=Label1->Caption+"自摸 ";
            zimodone=true;
            sc+=5;
        }
        if(winner->menqing()&&!menqingdone)
        {
            Label1->Caption=Label1->Caption+"门清 ";
            menqingdone=true;
            sc+=5;
        }
        if(winner->duting()&&!dutingdone)
        {
            Label1->Caption=Label1->Caption+"独听 ";
            dutingdone=true;
            sc+=5;
        }
        Label1->Caption=Label1->Caption+"清一色 "+"\n";
        Label2->Caption=Label2->Caption+sc+"\n";
        sum_sc+=sc;
    }

    else if(winner->hunyise())
    {   int sc=paishu[4];
        if(iszimo&&!zimodone)
        {
            Label1->Caption=Label1->Caption+"自摸 ";
            zimodone=true;
            sc+=5;
        }
        if(winner->menqing()&&!menqingdone)
        {
            Label1->Caption=Label1->Caption+"门清 ";
            menqingdone=true;
            sc+=5;
        }
        if(winner->duting()&&!dutingdone)
        {
            Label1->Caption=Label1->Caption+"独听 ";
            dutingdone=true;
            sc+=5;
        }
        Label1->Caption=Label1->Caption+"混一色 "+"\n";
        Label2->Caption=Label2->Caption+sc+"\n";
        sum_sc+=sc;
    }


    
    if(winner->qidui())
    {   int sc=paishu[6];
        int xs=winner->qidui();
        if(iszimo&&!zimodone)
        {
            Label1->Caption=Label1->Caption+"自摸 ";
            zimodone=true;
            sc+=5;
        }
        if(getwei(xs,3)==1)
        {
            Label1->Caption=Label1->Caption+"潇洒 ";
            sc+=5;
        }
        else if(getwei(xs,3)==2)
        {
            Label1->Caption=Label1->Caption+"双潇洒 ";
            sc+=10;
        }
        if(getwei(xs,2)==1)
        {
            Label1->Caption=Label1->Caption+"豪华 ";
            sc+=5;
        }
        else if(getwei(xs,2)==1)
        {
            Label1->Caption=Label1->Caption+"双豪华 ";
            sc+=10;
        }
        Label1->Caption=Label1->Caption+"七对 "+"\n";
        Label2->Caption=Label2->Caption+sc+"\n";
        sum_sc+=sc;
    }



    if(winner->pengpenghu())
    {   int sc=paishu[8];
        int xs=winner->pengpenghu();
        if(iszimo&&!zimodone)
        {
            Label1->Caption=Label1->Caption+"自摸 ";
            zimodone=true;
            sc+=5;
        }
        if(winner->menqing()&&!menqingdone)
        {
            Label1->Caption=Label1->Caption+"门清 ";
            menqingdone=true;
            sc+=5;
        }
        if(winner->duting()&&!dutingdone)
        {
            Label1->Caption=Label1->Caption+"独听 ";
            dutingdone=true;
            sc+=5;
        }
        if(xs==2)
        {
            Label1->Caption=Label1->Caption+"潇洒 ";
            sc+=5;
        }
        Label1->Caption=Label1->Caption+"碰碰和 "+"\n";
        Label2->Caption=Label2->Caption+sc+"\n";
        sum_sc+=sc;
    }

    if(winner->yitiaolong())
    {   int sc=paishu[0];
        //int xs=winner->pengpenghu();
        if(iszimo&&!zimodone)
        {
            Label1->Caption=Label1->Caption+"自摸 ";
            zimodone=true;
            sc+=5;
        }
        if(winner->menqing()&&!menqingdone)
        {
            Label1->Caption=Label1->Caption+"门清 ";
            menqingdone=true;
            sc+=5;
        }
        if(winner->duting()&&!dutingdone)
        {
            Label1->Caption=Label1->Caption+"独听 ";
            dutingdone=true;
            sc+=5;
        }
        Label1->Caption=Label1->Caption+"一条龙 "+"\n";
        Label2->Caption=Label2->Caption+sc+"\n";
        sum_sc+=sc;
    }


    if(winner->hongqipiaopiao())
    {   int ma=winner->hongqipiaopiao();
        int sc;
        if(ma==1)
        {
            sc=paishu[10];
            Label1->Caption=Label1->Caption+"明 ";
        }
        else
        {
            sc=paishu[11];
            Label1->Caption=Label1->Caption+"暗 ";
        }
        Label1->Caption=Label1->Caption+"红旗飘飘 "+"\n";
        Label2->Caption=Label2->Caption+sc+"\n";
        sum_sc+=sc;
    }

    if(winner->menqing()&&!menqingdone)
    {
        Label1->Caption=Label1->Caption+"门清 "+"\n";
        Label2->Caption=Label2->Caption+paishu[24]+"\n";
        sum_sc+=paishu[24];
    }
    if(iszimo&&!zimodone)
    {
        Label1->Caption=Label1->Caption+"自摸 "+"\n";
        Label2->Caption=Label2->Caption+paishu[14]+"\n";
        sum_sc+=paishu[14];
    }
    if(winner->duting()&&!dutingdone)
    {
        Label1->Caption=Label1->Caption+"独听 "+"\n";
        Label2->Caption=Label2->Caption+paishu[23]+"\n";
        sum_sc+=paishu[23];
    }

    if(winner->fa())
    {   int n=winner->fa();
        Label1->Caption=Label1->Caption+n+"发财 "+"\n";
        Label2->Caption=Label2->Caption+paishu[16]*n+"\n";
        sum_sc+=paishu[16]*n;
    }
    if(winner->zimingke()&&!winner->hongqipiaopiao())
    {   int n=winner->zimingke();
        Label1->Caption=Label1->Caption+n+"字明刻 "+"\n";
        Label2->Caption=Label2->Caption+paishu[17]*n+"\n";
        sum_sc+=paishu[17]*n;
    }
    if(winner->zianke()&&!winner->hongqipiaopiao())
    {   int n=winner->zianke();
        Label1->Caption=Label1->Caption+n+"字暗刻 "+"\n";
        Label2->Caption=Label2->Caption+paishu[18]*n+"\n";

⌨️ 快捷键说明

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