📄 huform.cpp
字号:
//---------------------------------------------------------------------------
#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 + -