mj.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 1,668 行 · 第 1/5 页
C
1,668 行
for (a=0;a<size-1;a++){
if (flag==5 || flag==6){
if (Mj[a+2..a+3]=="万") Mj1+=HIR;
else if (Mj[a+2..a+3]=="筒") Mj1+=HIC;
else if (Mj[a+2..a+3]=="索") Mj1+=HIG;
else if (Mj[a+2..a+3]=="风") Mj1+=HIM;
else if (Mj[a+2..a+3]=="中") Mj1+=HIR;
else if (Mj[a+2..a+3]=="发") Mj1+=HIG;
else if (Mj[a+2..a+3]=="板") Mj1+=HIW;
else if (Mj[a+2..a+3]=="春"
|| Mj[a+2..a+3]=="夏"
|| Mj[a+2..a+3]=="秋"
|| Mj[a+2..a+3]=="冬") Mj1+=HIR;
else if (Mj[a+2..a+3]=="梅"
|| Mj[a+2..a+3]=="兰"
|| Mj[a+2..a+3]=="竹"
|| Mj[a+2..a+3]=="菊") Mj1+="[1;30m";
}
Mj1+=Mj[a..a+1];
a++;a++;a++;
Mj1+=NOR+"│";
}
Mj1+="\n│";
for (a=2;a<size;a++){
if (flag==5 || flag==6){
if (Mj[a..a+1]=="万") Mj1+=RED;
else if (Mj[a..a+1]=="索") Mj1+=GRN;
else if (Mj[a..a+1]=="筒") Mj1+=CYN;
else if (Mj[a..a+1]=="风") Mj1+=MAG;
else if (Mj[a..a+1]=="中") Mj1+=HIR;
else if (Mj[a..a+1]=="发") Mj1+=HIG;
else if (Mj[a..a+1]=="白") Mj1+=HIW;
else if (Mj[a..a+1]=="春") Mj1+=HIG;
else if (Mj[a..a+1]=="夏") Mj1+=HIB;
else if (Mj[a..a+1]=="秋") Mj1+=HIY;
else if (Mj[a..a+1]=="冬") Mj1+=HIW;
else if (Mj[a..a+1]=="梅") Mj1+=HIW;
else if (Mj[a..a+1]=="兰") Mj1+=HIR;
else if (Mj[a..a+1]=="竹") Mj1+=HIG;
else if (Mj[a..a+1]=="菊") Mj1+=HIY;
}
Mj1+=Mj[a..a+1];
a++;a++;a++;
Mj1+=NOR+"│";
}
Mj1+="\n└";
for (a=(size/2)-1;a>0;a--){
if (a%2!=0){
if (flag==0 || flag==5) Mj1+=str[a-1..a];
else Mj1+="─";
}
else Mj1+="┴";
}
Mj1+="┘\n";
}
return Mj1;
}else{
size*=2;
for (a=(size/2)-1;a>0;a--){
if (a%2!=0) Mj1+=str[a-1..a];
else Mj1+=" ";
}
Mj1+="\n";
}
return Mj1;
}
string check_id(string str,string kind)
{
int check,i;
if (!str) return "";
if (kind=="tin"){
check=NowPlayer;
for (i=0;i<Play-1;i++) {
if (NowPlayerId[check]==P1Data["Id"] && do_check_Mj(P1Data["AutoTin"],str)!=0) return P1Data["Id"];
if (NowPlayerId[check]==P2Data["Id"] && do_check_Mj(P2Data["AutoTin"],str)!=0) return P2Data["Id"];
if (NowPlayerId[check]==P3Data["Id"] && do_check_Mj(P3Data["AutoTin"],str)!=0) return P3Data["Id"];
if (NowPlayerId[check]==P4Data["Id"] && do_check_Mj(P4Data["AutoTin"],str)!=0) return P4Data["Id"];
check++;
check%=Play;
}
return "";
}
if (kind=="gon"){
check=do_check_Mj(P1Data["AutoGon"],str);
if (check!=0){
check=do_check_Mj(P1Data["Mj"],str);
if (check < 3) return "";
else return P1Data["Id"];
}
check=do_check_Mj(P2Data["AutoGon"],str);
if (check!=0){
check=do_check_Mj(P2Data["Mj"],str);
if (check < 3) return "";
else return P2Data["Id"];
}
check=do_check_Mj(P3Data["AutoGon"],str);
if (check!=0){
check=do_check_Mj(P3Data["Mj"],str);
if (check < 3) return "";
else return P3Data["Id"];
}
check=do_check_Mj(P4Data["AutoGon"],str);
if (check!=0){
check=do_check_Mj(P4Data["Mj"],str);
if (check < 3) return "";
else return P4Data["Id"];
}
return "";
}
if (kind=="pon"){
check=do_check_Mj(P1Data["AutoPon"],str);
if (check!=0){
check=do_check_Mj(P1Data["Mj"],str);
if (check < 2) return "";
else return P1Data["Id"];
}
check=do_check_Mj(P2Data["AutoPon"],str);
if (check!=0){
check=do_check_Mj(P2Data["Mj"],str);
if (check < 2) return "";
else return P2Data["Id"];
}
check=do_check_Mj(P3Data["AutoPon"],str);
if (check!=0){
check=do_check_Mj(P3Data["Mj"],str);
if (check < 2) return "";
else return P3Data["Id"];
}
check=do_check_Mj(P4Data["AutoPon"],str);
if (check!=0){
check=do_check_Mj(P4Data["Mj"],str);
if (check < 2) return "";
else return P4Data["Id"];
}
return "";
}
if (kind=="player"){
for (i=0;i<Play;i++) {
if (NowPlayerId[i]==str) check=1;
}
if (check) return "Y";
return "";
}
}
int delete_last_dump(string whoId)
{
mapping who;
if (LastDumpId==P1Data["Id"]) who=P1Data;
else if (LastDumpId==P2Data["Id"]) who=P2Data;
else if (LastDumpId==P3Data["Id"]) who=P3Data;
else if (LastDumpId==P4Data["Id"]) who=P4Data;
if (who["Dump"]!="") who["Dump"]=do_delete_Mj(who["Dump"],LastDump,1);
return 1;
}
//把英文字转为代码 or 中文 flag 1 就是转为代码 flag 2 转为1..9
mixed do_check_num(string str,int flag)
{
int number;
if (!str) return MjC[0];
sscanf(str,"%d%s",number,str);
if (number == 0){
if (str=="ea") number=28;
else if (str=="so") number=29;
else if (str=="we") number=30;
else if (str=="no") number=31;
else if (str=="jo") number=32;
else if (str=="fa") number=33;
else if (str=="ba") number=34;
else if (str=="f1") number=35;
else if (str=="f2") number=36;
else if (str=="f3") number=37;
else if (str=="f4") number=38;
else if (str=="f5") number=39;
else if (str=="f6") number=40;
else if (str=="f7") number=41;
else if (str=="f8") number=42;
else if (str=="xx") number=43;
}else{
if (str=="w") number=0+number;
else if (str=="t") number=9+number;
else if (str=="s") number=18+number;
if (flag==2){
number%=9;
if (number==0) number=9;
}
}
if (!flag) return MjC[number];
else return number;
}
void check_flower(mapping who)
{
string newstr = "",str=who["Mj"],temp,temp1;
int i = strlen(str),j;
while(i--){
i--;
temp=str[i..i+1];
if (temp=="f1"||temp=="f2"||temp=="f3"||temp=="f4"||
temp=="f5"||temp=="f6"||temp=="f7"||temp=="f8"){
if (Playing){
tell_room(environment(this_object()),this_player()->name()+"说道:"+HIB+"花牌"+NOR+"补花!!。\n\n"+this_player()->name()+"往後面补了一张牌。\n",this_player());
tell_object(this_player(),"你说道:"+HIB+"花牌"+NOR+"补花!!。\n\n你往後面补了一张牌。\n");
tell_object(this_player(),"你摸到了一张"+do_check_num(List[end..end+1],0)+"\n");
}
HU_F=1;
who["OutFlower"]+=temp;
str[i..i+1]=List[end..end+1];
end-=2;
i+=2;
continue;
}
else newstr+=temp;
}
who["Mj"]=sort_data(newstr);
}
int do_check_Mj(string datastr,string str)
{
int size=strlen(datastr),check=0;
while(size--){
size--;
if (datastr[size..size+1]==str) check++;
}
return check;
}
string do_delete_Mj(string datastr,string str,int amount)//把某牌去掉
{
int size=strlen(datastr),check;
string temp="";
while(size--){
size--;
if (datastr[size..size+1]==str && amount!=0) amount--;
else temp+=datastr[size..size+1];
}
size=strlen(temp);
datastr=temp;
temp="";
while(size--){
size--;
temp+=datastr[size..size+1];
}
return temp;
}
string sort_data(string str)
{
int i = strlen(str),a,b,c,d;
string newstr="",temp="";
for (a=-1;a<i;a++){
a++;
for (b=a+2;b<i;b++){
b++;
c=do_check_num(str[a..a+1],1);
d=do_check_num(str[b-1..b],1);
if (c < d){
temp=str[a..a+1];
str[a..a+1]=str[b-1..b];
str[b-1..b]=temp;
}
}
}
return str;
}
int do_look(string arg)
{
int i,l;
object me=this_player();
string Mj="",p1o="",p2o="",p3o="",p4o="";
mapping who;
if (query_verb()==".") arg="mj";
if (query_verb()=="..") arg="chicken";
if (query_verb()==".1") arg="1p";
if (query_verb()==".2") arg="2p";
if (query_verb()==".3") arg="3p";
if (query_verb()==".4") arg="4p";
if (query_verb()==".0") arg="all";
if (me->query("id")==P1Data["Id"]) who=P1Data;
else if (me->query("id")==P2Data["Id"]) who=P2Data;
else if (me->query("id")==P3Data["Id"]) who=P3Data;
else if (me->query("id")==P4Data["Id"]) who=P4Data;
else return 0;
if (who["Auto"]=="auto") l=1;
if (arg=="1p"||arg=="2p"||arg=="3p"||arg=="4p"||arg=="all"||arg=="chicken"||arg=="end"||arg=="dump"||arg=="mj");
else return 0;
if (arg=="1p") who=P1Data;
if (arg=="2p") who=P2Data;
if (arg=="3p") who=P3Data;
if (arg=="4p") who=P4Data;
if (arg=="1p"||arg=="2p"||arg=="3p"||arg=="4p"){
i=0;
if (who["Show"]=="代码") i=3;
if (who["Show"]=="color") i=5;
if (!Playing||check_id(me->query("id"),"player")==""||l==1){
if (who["OutGon"]!=""){
Mj+=who["Id"]+":暗杠的牌有:\n";
Mj+=show_mj(who["OutGon"],i+1);
}
Mj+=who["Id"]+":手中的牌有:\n";
Mj+=show_mj(who["Mj"],i);
}
Mj+=who["Id"]+":摆在外面的牌有:\n";
Mj+=show_mj(who["Out"]+who["OutPon"]+who["OutFlower"],i+1);
Mj+=who["Id"]+":打过的牌:\n";
Mj+=show_mj(who["Dump"],2);
}
else if (arg=="mj") {
if (!Playing) return 0;
if (who["OutGon"]!=""){
Mj+="你的暗杠的牌有:\n";
Mj+=show_mj(who["OutGon"],1);
}
if (who["Show"]=="代码") i=3;
if (who["Show"]=="color") i=5;
Mj+="你摆在外面的牌有:\n";
Mj+=show_mj(who["Out"]+who["OutPon"]+who["OutFlower"],i+1);
Mj+="你手中的牌有:\n";
Mj+=show_mj(who["Mj"],i);
Mj+="你的设定有:";
}else if (arg=="all") {
i=0;
if (who["Show"]=="代码") i=3;
if (who["Show"]=="color") i=5;
Mj+=P1Data["Id"]+":摆在外面的牌有:\n";
Mj+=show_mj(P1Data["Out"]+P1Data["OutPon"]+P1Data["OutFlower"],i+1);
Mj+=P1Data["Id"]+":打过的牌有:\n";
Mj+=show_mj(P1Data["Dump"],2)+"\n";
Mj+=P2Data["Id"]+":摆在外面的牌有:\n";
Mj+=show_mj(P2Data["Out"]+P2Data["OutPon"]+P2Data["OutFlo
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?