-- 作者:caixukun
-- 发布时间:4/26/2005 9:58:00 AM
-- 哪错了 我下的用不了!
#include "dos.h" #include "stdio.h" #include "graphics.h" #include "bios.h" #include "conio.h" #include "stdlib.h" unsigned char far *video_buffer=(char far *)0xA0000000L; #define VGA256 0x13 /*图形模式13h*/ #define TEXT_MODE 0x03 /*普通文本模式*/ #define SETVGA Set_Video_Mode(VGA256) #define OUTVGA Set_Video_Mode(TEXT_MODE) #define BYTE unsigned char #define WORD unsigned int #define DWORD unsigned int #define ESC 283 #define LEFT 19200 #define RIGHT 19712 #define H 9064 #define ENTER 7181 unsigned long int z=54400,zz=0,zy=0,zyy=0,z1=0,zl=10140; int key=0,keyy=0,sing=0,sing1=0,second=0,threes=0; struct chi { int lg; int lgg; }ch[13]; struct mj { char *name; /*名字*/ int data1; /*是否已出,无用了*/ int data2; /*是否在手中,1为自己,2为对方*/ int number; /*同一个花色的第几张,共4张*/ }m[136]={"1.bmp",0,0,1,"1.bmp",0,0,2,"1.bmp",0,0,3,"1.bmp",0,0,4,"2.bmp",0,0,1, "2.bmp",0,0,2,"2.bmp",0,0,3,"2.bmp",0,0,4,"3.bmp",0,0,1,"3.bmp",0,0,2, "3.bmp",0,0,3,"3.bmp",0,0,4,"4.bmp",0,0,1,"4.bmp",0,0,2,"4.bmp",0,0,3, "4.bmp",0,0,4,"5.bmp",0,0,1,"5.bmp",0,0,2,"5.bmp",0,0,3,"5.bmp",0,0,4, "6.bmp",0,0,1,"6.bmp",0,0,2,"6.bmp",0,0,3,"6.bmp",0,0,4,"7.bmp",0,0,1, "7.bmp",0,0,2,"7.bmp",0,0,3,"7.bmp",0,0,4,"8.bmp",0,0,1,"8.bmp",0,0,2, "8.bmp",0,0,3,"8.bmp",0,0,4,"9.bmp",0,0,1,"9.bmp",0,0,2,"9.bmp",0,0,3, "9.bmp",0,0,4,"10.bmp",0,0,1,"10.bmp",0,0,2,"10.bmp",0,0,3,"10.bmp",0,0,4, "11.bmp",0,0,1,"11.bmp",0,0,2,"11.bmp",0,0,3,"11.bmp",0,0,4,"12.bmp",0,0,1, "12.bmp",0,0,2,"12.bmp",0,0,3,"12.bmp",0,0,4,"13.bmp",0,0,1,"13.bmp",0,0,2, "13.bmp",0,0,3,"13.bmp",0,0,4,"14.bmp",0,0,1,"14.bmp",0,0,2,"14.bmp",0,0,3, "14.bmp",0,0,4,"15.bmp",0,0,1,"15.bmp",0,0,2,"15.bmp",0,0,3,"15.bmp",0,0,4, "16.bmp",0,0,1,"16.bmp",0,0,2,"16.bmp",0,0,3,"16.bmp",0,0,4,"17.bmp",0,0,1, "17.bmp",0,0,2,"17.bmp",0,0,3,"17.bmp",0,0,4,"18.bmp",0,0,1,"18.bmp",0,0,2, "18.bmp",0,0,3,"18.bmp",0,0,4,"19.bmp",0,0,1,"19.bmp",0,0,2,"19.bmp",0,0,3, "19.bmp",0,0,4,"20.bmp",0,0,1,"20.bmp",0,0,2,"20.bmp",0,0,3,"20.bmp",0,0,4, "21.bmp",0,0,1,"21.bmp",0,0,2,"21.bmp",0,0,3,"21.bmp",0,0,4,"22.bmp",0,0,1, "22.bmp",0,0,2,"22.bmp",0,0,3,"22.bmp",0,0,4,"23.bmp",0,0,1,"23.bmp",0,0,2, "23.bmp",0,0,3,"23.bmp",0,0,4,"24.bmp",0,0,1,"24.bmp",0,0,2,"24.bmp",0,0,3, "24.bmp",0,0,4,"25.bmp",0,0,1,"25.bmp",0,0,2,"25.bmp",0,0,3,"25.bmp",0,0,4, "26.bmp",0,0,1,"26.bmp",0,0,2,"26.bmp",0,0,3,"26.bmp",0,0,4,"27.bmp",0,0,1, "27.bmp",0,0,2,"27.bmp",0,0,3,"27.bmp",0,0,4,"28.bmp",0,0,1,"28.bmp",0,0,2, "28.bmp",0,0,3,"28.bmp",0,0,4,"29.bmp",0,0,1,"29.bmp",0,0,2,"29.bmp",0,0,3, "29.bmp",0,0,4,"30.bmp",0,0,1,"30.bmp",0,0,2,"30.bmp",0,0,3,"30.bmp",0,0,4, "31.bmp",0,0,1,"31.bmp",0,0,2,"31.bmp",0,0,3,"31.bmp",0,0,4,"32.bmp",0,0,1, "32.bmp",0,0,2,"32.bmp",0,0,3,"32.bmp",0,0,4,"33.bmp",0,0,1,"33.bmp",0,0,2, "33.bmp",0,0,3,"33.bmp",0,0,4,"34.bmp",0,0,1,"34.bmp",0,0,2,"34.bmp",0,0,3, "34.bmp"}; struct every { int *k; /*名字*/ int oneorfour; /*同一张牌的第几张*/ int number; /*第几张牌136*/ int p; int g; int c; int d[2]; }; struct me { int m; /*定义有几张牌,开始有13张随着游戏的进行,会越来越小*/ int p; /*乓对方*/ int c; /*吃对方*/ int g; /*杠*/ struct every pp[14]; /*存放手上的牌*/ }me; struct computer { int m; int p; int c; int g; struct every pp[14]; }computer,comp; /* 设置调色板 */ void Set_Palette(int Color,BYTE r,BYTE g,BYTE b) { outportb(0x3c8,Color); /*0x3c8写端口 写色号*/ outportb(0x3c9,r); /*0x3c9数据端口 R、G、B的比例*/ outportb(0x3c9,g); outportb(0x3c9,b); } /*0x3c7读端口 0x3c6计算机调色板寄存器调用端口*/ /* 设置显示模式的函数 */ void Set_Video_Mode(int mode) { union REGS inregs,outregs; /*定义输入和返回寄存器*/ inregs.h.ah=0; /*ah存放功能号0h表示进入视频模式*/ inregs.h.al=(unsigned char)mode; /*al存放要设定的视频模式*/ int86(0x10,&inregs,&outregs); /*通过10h中断设定显示模式int86()包含在dos.h*/ } void v_line(int y0,int y1,int x,unsigned int color) { unsigned int address,n,temp; if(y0>y1) { temp=y1; y1=y0; y0=temp; } address=320*y0+x; for(n=0;n<=y1-y0;n++) { video_buffer[address]=color; address+=320; } } void h_line(int x0,int x1,int y,unsigned int color) { unsigned int address,n,temp; if(x0>x1) { temp=x1; x1=x0; x0=temp; } address=320*y+x0; for(n=0;n<=x1-x0;n++) { video_buffer[address]=color; address+=1; } } void p_pixel(int x,int y,unsigned int color) { video_buffer[y*320+x]=color; } void s_square(int x,int y,int side,int color) { h_line(x,x+side,y,color); h_line(x,x+side,y+side,color); v_line(y,y+side,x,color); v_line(y,y+side,x+side,color); } void r_rectangle(int x1,int y1,int x2,int y2,int color) { h_line(x1,x2,y1,color); h_line(x1,x2,y2,color); v_line(y1,y2,x1,color); v_line(y1,y2,x2,color); } void fillRectangle(int x1,int y1,int x2,int y2,int color) { int i; for(i=y1;i<=y2;i++) { h_line(x1,x2,i,color); } } void showbmp(int l) { FILE *bmp; int i,x,y; BYTE palette[256][3]; bmp=fopen(me.pp[l].k,"rb"); fseek(bmp,54,SEEK_SET); for(i=0;i<256;i++) { palette[i][2]=fgetc(bmp)>>2; palette[i][1]=fgetc(bmp)>>2; palette[i][0]=fgetc(bmp)>>2; fgetc(bmp); Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); } for (y=0;y<30;y++) for(x=0;x<20;x++) pokeb(0xa000,y*320+x+z+zz+z1,fgetc(bmp)); fclose(bmp); } void showbmpd(int l) { FILE *bmp; int i,x,y; BYTE palette[256][3]; bmp=fopen(me.pp[l].k,"rb"); fseek(bmp,54,SEEK_SET); for(i=0;i<256;i++) { palette[i][2]=fgetc(bmp)>>2; palette[i][1]=fgetc(bmp)>>2; palette[i][0]=fgetc(bmp)>>2; fgetc(bmp); Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); } for (y=0;y<30;y++) for(x=0;x<20;x++) pokeb(0xa000,y*320+x+zyy,fgetc(bmp)); fclose(bmp); } void showybmp(int ll) { FILE *bmp; int i,x,y; BYTE palette[256][3]; bmp=fopen(computer.pp[ll].k,"rb"); fseek(bmp,54,SEEK_SET); for(i=0;i<256;i++) { palette[i][2]=fgetc(bmp)>>2; palette[i][1]=fgetc(bmp)>>2; palette[i][0]=fgetc(bmp)>>2; fgetc(bmp); Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); } for (y=0;y<30;y++) for(x=0;x<20;x++) pokeb(0xa000,y*320+x+zy,fgetc(bmp)); fclose(bmp); } void showcbmp(int ll) { FILE *bmp; int i,x,y; BYTE palette[256][3]; bmp=fopen(computer.pp[ll].k,"rb"); fseek(bmp,54,SEEK_SET); for(i=0;i<256;i++) { palette[i][2]=fgetc(bmp)>>2; palette[i][1]=fgetc(bmp)>>2; palette[i][0]=fgetc(bmp)>>2; fgetc(bmp); Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); } for (y=0;y<30;y++) for(x=0;x<20;x++) pokeb(0xa000,y*320+x+zyy,fgetc(bmp)); fclose(bmp); } void bmpp(int number) { FILE *bmp; int i,x,y; BYTE palette[256][3]; bmp=fopen(m[number].name,"rb"); fseek(bmp,54,SEEK_SET); for(i=0;i<256;i++) { palette[i][2]=fgetc(bmp)>>2; palette[i][1]=fgetc(bmp)>>2; palette[i][0]=fgetc(bmp)>>2; fgetc(bmp); Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); } for (y=0;y<30;y++) for(x=0;x<20;x++) pokeb(0xa000,y*320+x+zl,fgetc(bmp)); fclose(bmp); } void comlipai() /*整理电脑的牌*/ { int n,j,u; int *lingshi; for(n=0;n<computer.m;n++) for(j=n;j<computer.m;j++) { if(computer.pp[n].number>computer.pp[j+1].number) { lingshi=computer.pp[n].k; computer.pp[n].k=computer.pp[j+1].k; computer.pp[j+1].k=lingshi; u=computer.pp[n].oneorfour; computer.pp[n].oneorfour=computer.pp[j+1].oneorfour; computer.pp[j+1].oneorfour=u; u=computer.pp[n].number; computer.pp[n].number=computer.pp[j+1].number; computer.pp[j+1].number=u; } else if(computer.pp[n].number==computer.pp[j+1].number) if(computer.pp[n].oneorfour>computer.pp[j+1].oneorfour) { lingshi=computer.pp[n].k; computer.pp[n].k=computer.pp[j+1].k; computer.pp[j+1].k=lingshi; u=computer.pp[n].oneorfour; computer.pp[n].oneorfour=computer.pp[j+1].oneorfour; computer.pp[j+1].oneorfour=u; u=computer.pp[n].number; computer.pp[n].number=computer.pp[j+1].number; computer.pp[j+1].number=u; } } } void melipai() { int n,j,u; int *lingshi; for(n=0;n<me.m;n++) for(j=n;j<me.m;j++) { if(me.pp[n].number>me.pp[j+1].number) { lingshi=me.pp[n].k; me.pp[n].k=me.pp[j+1].k; me.pp[j+1].k=lingshi; u=me.pp[n].oneorfour; me.pp[n].oneorfour=me.pp[j+1].oneorfour; me.pp[j+1].oneorfour=u; u=me.pp[n].number; me.pp[n].number=me.pp[j+1].number; me.pp[j+1].number=u; } else if(me.pp[n].number==me.pp[j+1].number) if(me.pp[n].oneorfour>me.pp[j+1].oneorfour) { lingshi=me.pp[n].k; me.pp[n].k=me.pp[j+1].k; me.pp[j+1].k=lingshi; u=me.pp[n].oneorfour; me.pp[n].oneorfour=me.pp[j+1].oneorfour; me.pp[j+1].oneorfour=u; u=me.pp[n].number; me.pp[n].number=me.pp[j+1].number; me.pp[j+1].number=u; } } } void rgzn(int c) /*本程序涵数的核心针对电脑的牌*/ { int b=0,lg,lgg,logo,logoo,pg=0,gp=0,cs=0,f=0; if(me.pp[c].number<=35 && me.pp[c].number>=0) { logo=1; if(me.pp[c].number<=3 && me.pp[c].number>=0) logoo=1; else if(me.pp[c].number<=7 && me.pp[c].number>=4) logoo=2; else if(me.pp[c].number<=11 && me.pp[c].number>=8) logoo=3; else if(me.pp[c].number<=15 && me.pp[c].number>=12) logoo=4; else if(me.pp[c].number<=19 && me.pp[c].number>=16) logoo=5; else if(me.pp[c].number<=23 && me.pp[c].number>=20) logoo=6; else if(me.pp[c].number<=27 && me.pp[c].number>=24) logoo=7; else if(me.pp[c].number<=31 && me.pp[c].number>=28) logoo=8; else if(me.pp[c].number<=35 && me.pp[c].number>=32) logoo=9; } else if(me.pp[c].number<=71 && me.pp[c].number>=36) { logo=2; if(me.pp[c].number<=39 && me.pp[c].number>=36) logoo=1; else if(me.pp[c].number<=43 && me.pp[c].number>=40) logoo=2; else if(me.pp[c].number<=47 && me.pp[c].number>=44) logoo=3; else if(me.pp[c].number<=51 && me.pp[c].number>=48) logoo=4; else if(me.pp[c].number<=55 && me.pp[c].number>=52) logoo=5; else if(me.pp[c].number<=59 && me.pp[c].number>=56) logoo=6; else if(me.pp[c].number<=63 && me.pp[c].number>=60) logoo=7; else if(me.pp[c].number<=67 && me.pp[c].number>=64) logoo=8; else if(me.pp[c].number<=71 && me.pp[c].number>=68) logoo=9; } else if(me.pp[c].number<=107 && me.pp[c].number>=72) { logo=3; if(me.pp[c].number<=75 && me.pp[c].number>=72) logoo=1; else if(me.pp[c].number<=79 && me.pp[c].number>=76) logoo=2; else if(me.pp[c].number<=83 && me.pp[c].number>=80) logoo=3; else if(me.pp[c].number<=87 && me.pp[c].number>=84) logoo=4; else if(me.pp[c].number<=91 && me.pp[c].number>=88) logoo=5; else if(me.pp[c].number<=95 && me.pp[c].number>=92) logoo=6; else if(me.pp[c].number<=99 && me.pp[c].number>=96) logoo=7; else if(me.pp[c].number<=103 && me.pp[c].number>=100) logoo=8; else if(me.pp[c].number<=107 && me.pp[c].number>=104) logoo=9; } else if(me.pp[c].number<=135 && me.pp[c].number>=108) { logo=4; if(me.pp[c].number<=111 && me.pp[c].number>=108) logoo=1; else if(me.pp[c].number<=115 && me.pp[c].number>=112) logoo=2; else if(me.pp[c].number<=119 && me.pp[c].number>=116) logoo=3; else if(me.pp[c].number<=123 && me.pp[c].number>=120) logoo=4; else if(me.pp[c].number<=127 && me.pp[c].number>=124) logoo=5; else if(me.pp[c].number<=131 && me.pp[c].number>=128) logoo=6; else if(me.pp[c].number<=135 && me.pp[c].number>=132) logoo=7; } while(b<=computer.m) { if(computer.pp[b].number<=35 && computer.pp[b].number>=0) /*假定电脑经过分析后出了第一张牌*/ { lg=1; computer.pp[b].d[0]=1; if(computer.pp[b].number<=3 && computer.pp[b].number>=0) { lgg=1; computer.pp[b].d[1]=1; } else if(computer.pp[b].number<=7 && computer.pp[b].number>=4) { lgg=2; computer.pp[b].d[1]=2; } else if(computer.pp[b].number<=11 && computer.pp[b].number>=8) { lgg=3; computer.pp[b].d[1]=3; } else if(computer.pp[b].number<=15 && computer.pp[b].number>=12) { lgg=4; computer.pp[b].d[1]=4; } else if(computer.pp[b].number<=19 && computer.pp[b].number>=16) { lgg=5; computer.pp[b].d[1]=5; } else if(computer.pp[b].number<=23 && computer.pp[b].number>=20) { lgg=6; computer.pp[b].d[1]=6; } else if(computer.pp[b].number<=27 && computer.pp[b].number>=24) { lgg=7; computer.pp[b].d[1]=7; } else if(computer.pp[b].number<=31 && computer.pp[b].number>=28) { lgg=8; computer.pp[b].d[1]=8; } else if(computer.pp[b].number<=35 && computer.pp[b].number>=32) { lgg=9; computer.pp[b].d[1]=9; } } else if(computer.pp[b].number<=71 && computer.pp[b].number>=36) { lg=2; computer.pp[b].d[0]=2; if(computer.pp[b].number<=39 && computer.pp[b].number>=36) { lgg=1; computer.pp[b].d[1]=1; } else if(computer.pp[b].number<=43 && computer.pp[b].number>=40) { lgg=2; computer.pp[b].d[1]=2; } else if(computer.pp[b].number<=47 && computer.pp[b].number>=44) { lgg=3; computer.pp[b].d[1]=3; } else if(computer.pp[b].number<=51 && computer.pp[b].number>=48) { lgg=4; computer.pp[b].d[1]=4; } else if(computer.pp[b].number<=55 && computer.pp[b].number>=52) { lgg=5; computer.pp[b].d[1]=5; } else if(computer.pp[b].number<=59 && computer.pp[b].number>=56) { lgg=6; computer.pp[b].d[1]=6; } else if(computer.pp[b].number<=63 && computer.pp[b].number>=60) { lgg=7; computer.pp[b].d[1]=7; } else if(computer.pp[b].number<=67 && computer.pp[b].number>=64) { lgg=8; computer.pp[b].d[1]=8; } else if(computer.pp[b].number<=71 && computer.pp[b].number>=68) { lgg=9; computer.pp[b].d[1]=9; } } else if(computer.pp[b].number<=107 && computer.pp[b].number>=72) { lg=3; computer.pp[b].d[0]=3; if(computer.pp[b].number<=75 && computer.pp[b].number>=72) { lgg=1; computer.pp[b].d[1]=1; } else if(computer.pp[b].number<=79 && computer.pp[b].number>=76) { lgg=2; computer.pp[b].d[1]=2; } else if(computer.pp[b].number<=83 && computer.pp[b].number>=80) { lgg=3; computer.pp[b].d[1]=3; } else if(computer.pp[b].number<=87 && computer.pp[b].number>=84) { lgg=4; computer.pp[b].d[1]=4; } else if(computer.pp[b].number<=91 && computer.pp[b].number>=88) { lgg=5; computer.pp[b].d[1]=5; } else if(computer.pp[b].number<=95 && computer.pp[b].number>=92) { lgg=6; computer.pp[b].d[1]=6; } else if(computer.pp[b].number<=99 && computer.pp[b].number>=96) { lgg=7; computer.pp[b].d[1]=7; } else if(computer.pp[b].number<=103 && computer.pp[b].number>=100) { lgg=8; computer.pp[b].d[1]=8; } else if(computer.pp[b].number<=107 && computer.pp[b].number>=104) { lgg=9; computer.pp[b].d[1]=9; } } else if(computer.pp[b].number<=135 && computer.pp[b].number>=108) { lg=4; computer.pp[b].d[0]=4; if(computer.pp[b].number<=111 && computer.pp[b].number>=108) { lgg=1; computer.pp[b].d[1]=1; } else if(computer.pp[b].number<=115 && computer.pp[b].number>=112) { lgg=2; computer.pp[b].d[1]=2; } else if(computer.pp[b].number<=119 && computer.pp[b].number>=116) { lgg=3; computer.pp[b].d[1]=3; } else if(computer.pp[b].number<=123 && computer.pp[b].number>=120) { lgg=4; computer.pp[b].d[1]=4; } else if(computer.pp[b].number<=127 && computer.pp[b].number>=124) { lgg=5; computer.pp[b].d[1]=5; } else if(computer.pp[b].number<=131 && computer.pp[b].number>=128) { lgg=6; computer.pp[b].d[1]=6; } else if(computer.pp[b].number<=135 && computer.pp[b].number>=132) { lgg=7; computer.pp[b].d[1]=7; } } if(logo==lg) /*如果相等的话,那再进一步的判断,乓杠的判断*/ if(logoo==lgg) pg++; ch[b].lg=lg; /*保存电脑手里的每张牌的信息*/ ch[b].lgg=lgg; lg=0; lgg=0; b++; } if(pg==2) /*乓*/ { sing=1; b=computer.m; while(b!=-1) { if(strcmp(me.pp[c].k,computer.pp[b].k)==0) computer.pp[b].p=1; b--; } } if(pg==3) /*杠*/ { sing=2; b=computer.m; while(b!=-1) { if(strcmp(me.pp[c].k,computer.pp[b].k)==0) computer.pp[b].g=1; b--; } } f=0; while(f<computer.m) /*吃的判断*/ { if(ch[f].lg==logo && ch[f].lg!=4) { if(ch[f+1].lgg-ch[f].lgg==1) /*顺吃*/ if(ch[f].lgg-logoo==1) { gp++; computer.pp[f].c=1; computer.pp[f+1].c=1; } if(ch[f].lgg-ch[f+1].lgg==-1) /*逆吃*/ if(ch[f+1].lgg-logoo==-1) { gp++; computer.pp[f].c=1; computer.pp[f+1].c=1; } if(ch[f].lgg-logoo==-1) /*中吃*/ if(ch[f+1].lgg-logoo==1) { gp++; computer.pp[f].c=1; computer.pp[f+1].c=1; } if(gp==1) break; } f++; } if(gp==1) {sing=7; } pg=0; gp=0; b=0; } void rgznme(int c) /*本程序涵数的核心针对我的牌*/ { int b=0,lg,lgg,logo,logoo,pg=0,gp=0,cs=0,f=0; if(computer.pp[c].number<=35 && computer.pp[c].number>=0) { logo=1; if(computer.pp[c].number<=3 && computer.pp[c].number>=0) logoo=1; else if(computer.pp[c].number<=7 && computer.pp[c].number>=4) logoo=2; else if(computer.pp[c].number<=11 && computer.pp[c].number>=8) logoo=3; else if(computer.pp[c].number<=15 && computer.pp[c].number>=12) logoo=4; else if(computer.pp[c].number<=19 && computer.pp[c].number>=16) logoo=5; else if(computer.pp[c].number<=23 && computer.pp[c].number>=20) logoo=6; else if(computer.pp[c].number<=27 && computer.pp[c].number>=24) logoo=7; else if(computer.pp[c].number<=31 && computer.pp[c].number>=28) logoo=8; else if(computer.pp[c].number<=35 && computer.pp[c].number>=32) logoo=9; } else if(computer.pp[c].number<=71 && computer.pp[c].number>=36) { logo=2; if(computer.pp[c].number<=39 && computer.pp[c].number>=36) logoo=1; else if(computer.pp[c].number<=43 && computer.pp[c].number>=40) logoo=2; else if(computer.pp[c].number<=47 && computer.pp[c].number>=44) logoo=3; else if(computer.pp[c].number<=51 && computer.pp[c].number>=48) logoo=4; else if(computer.pp[c].number<=55 && computer.pp[c].number>=52) logoo=5; else if(computer.pp[c].number<=59 && computer.pp[c].number>=56) logoo=6; else if(computer.pp[c].number<=63 && computer.pp[c].number>=60) logoo=7; else if(computer.pp[c].number<=67 && computer.pp[c].number>=64) logoo=8; else if(computer.pp[c].number<=71 && computer.pp[c].number>=68) logoo=9; } else if(computer.pp[c].number<=107 && computer.pp[c].number>=72) { logo=3; if(computer.pp[c].number<=75 && computer.pp[c].number>=72) logoo=1; else if(computer.pp[c].number<=79 && computer.pp[c].number>=76) logoo=2; else if(computer.pp[c].number<=83 && computer.pp[c].number>=80) logoo=3; else if(computer.pp[c].number<=87 && computer.pp[c].number>=84) logoo=4; else if(computer.pp[c].number<=91 && computer.pp[c].number>=88) logoo=5; else if(computer.pp[c].number<=95 && computer.pp[c].number>=92) logoo=6; else if(computer.pp[c].number<=99 && computer.pp[c].number>=96) logoo=7; else if(computer.pp[c].number<=103 && computer.pp[c].number>=100) logoo=8; else if(computer.pp[c].number<=107 && computer.pp[c].number>=104) logoo=9; } else if(computer.pp[c].number<=135 && computer.pp[c].number>=108) { logo=4; if(computer.pp[c].number<=111 && computer.pp[c].number>=108) logoo=1; else if(computer.pp[c].number<=115 && computer.pp[c].number>=112) logoo=2; else if(computer.pp[c].number<=119 && computer.pp[c].number>=116) logoo=3; else if(computer.pp[c].number<=123 && computer.pp[c].number>=120) logoo=4; else if(computer.pp[c].number<=127 && computer.pp[c].number>=124) logoo=5; else if(computer.pp[c].number<=131 && computer.pp[c].number>=128) logoo=6; else if(computer.pp[c].number<=135 && computer.pp[c].number>=132) logoo=7; } while(b<=me.m) { if(me.pp[b].number<=35 && me.pp[b].number>=0) /*我分析后出了第一张牌*/ { lg=1; me.pp[b].d[0]=1; if(me.pp[b].number<=3 && me.pp[b].number>=0) { lgg=1; me.pp[b].d[1]=1; } else if(me.pp[b].number<=7 && me.pp[b].number>=4) { lgg=2; me.pp[b].d[1]=2; } else if(me.pp[b].number<=11 && me.pp[b].number>=8) { lgg=3; me.pp[b].d[1]=3; } else if(me.pp[b].number<=15 && me.pp[b].number>=12) { lgg=4; me.pp[b].d[1]=4; } else if(me.pp[b].number<=19 && me.pp[b].number>=16) { lgg=5; me.pp[b].d[1]=5; } else if(me.pp[b].number<=23 && me.pp[b].number>=20) { lgg=6; me.pp[b].d[1]=6; } else if(me.pp[b].number<=27 && me.pp[b].number>=24) { lgg=7; me.pp[b].d[1]=7; } else if(me.pp[b].number<=31 && me.pp[b].number>=28) { lgg=8; me.pp[b].d[1]=8; } else if(me.pp[b].number<=35 && me.pp[b].number>=32) { lgg=9; me.pp[b].d[1]=9; } } else if(me.pp[b].number<=71 && me.pp[b].number>=36) { lg=2; me.pp[b].d[0]=2; if(me.pp[b].number<=39 && me.pp[b].number>=36) { lgg=1; me.pp[b].d[1]=1; } else if(me.pp[b].number<=43 && me.pp[b].number>=40) { lgg=2; me.pp[b].d[1]=2; } else if(me.pp[b].number<=47 && me.pp[b].number>=44) { lgg=3; me.pp[b].d[1]=3; } else if(me.pp[b].number<=51 && me.pp[b].number>=48) { lgg=4; me.pp[b].d[1]=4; } else if(me.pp[b].number<=55 && me.pp[b].number>=52) { lgg=5; me.pp[b].d[1]=5; } else if(me.pp[b].number<=59 && me.pp[b].number>=56) { lgg=6; me.pp[b].d[1]=6; } else if(me.pp[b].number<=63 && me.pp[b].number>=60) { lgg=7; me.pp[b].d[1]=7; } else if(me.pp[b].number<=67 && me.pp[b].number>=64) { lgg=8; me.pp[b].d[1]=8; } else if(me.pp[b].number<=71 && me.pp[b].number>=68) { lgg=9; me.pp[b].d[1]=9; } } else if(me.pp[b].number<=107 && me.pp[b].number>=72) { lg=3; me.pp[b].d[0]=3; if(me.pp[b].number<=75 && me.pp[b].number>=72) { lgg=1; me.pp[b].d[1]=1; } else if(me.pp[b].number<=79 && me.pp[b].number>=76) { lgg=2; me.pp[b].d[1]=2; } else if(me.pp[b].number<=83 && me.pp[b].number>=80) { lgg=3; me.pp[b].d[1]=3; } else if(me.pp[b].number<=87 && me.pp[b].number>=84) { lgg=4; me.pp[b].d[1]=4; } else if(me.pp[b].number<=91 && me.pp[b].number>=88) { lgg=5; me.pp[b].d[1]=5; } else if(me.pp[b].number<=95 && me.pp[b].number>=92) { lgg=6; me.pp[b].d[1]=6; } else if(me.pp[b].number<=99 && me.pp[b].number>=96) { lgg=7; me.pp[b].d[1]=7; } else if(me.pp[b].number<=103 && me.pp[b].number>=100) { lgg=8; me.pp[b].d[1]=8; } else if(me.pp[b].number<=107 && me.pp[b].number>=104) { lgg=9; me.pp[b].d[1]=9; } } else if(me.pp[b].number<=135 && me.pp[b].number>=108) { lg=4; me.pp[b].d[0]=4; if(me.pp[b].number<=111 && me.pp[b].number>=108) { lgg=1; me.pp[b].d[1]=1; } else if(me.pp[b].number<=115 && me.pp[b].number>=112) { lgg=2; me.pp[b].d[1]=2; } else if(me.pp[b].number<=119 && me.pp[b].number>=116) { lgg=3; me.pp[b].d[1]=3; } else if(me.pp[b].number<=123 && me.pp[b].number>=120) { lgg=4; me.pp[b].d[1]=4; } else if(me.pp[b].number<=127 && me.pp[b].number>=124) { lgg=5; me.pp[b].d[1]=5; } else if(me.pp[b].number<=131 && me.pp[b].number>=128) { lgg=6; me.pp[b].d[1]=6; } else if(me.pp[b].number<=135 && me.pp[b].number>=132) { lgg=7; me.pp[b].d[1]=7; } } } } void istwo(testt) int testt[]; { if(testt[0]==testt[1]) second++; } void isthree(testt,n) int testt[],n=0; { int i,j,flage=0,lianx=0,same=0; n=n/3; for(j=0;j<n;j++) { for(i=j*3;i<2+j*3;i++) { if(testt[i]==testt[i+1]) same++; if(testt[i+1]-testt[i]==1) lianx++; } if(same==2) threes++; if(lianx==2) threes++; same=0; lianx=0; } } void panduan() /*本程序的精髓*/ {int data[14]; int pw[14]; int pt[14]; int pi[14]; int pf[14]; int test[12]; int jj,w,mm,nn,tpp=0,lp=0,ww=0,tt=0,ii=0,ff=0;ill=0; for(jj=0;jj<=me.m;jj++) { if(me.pp[jj].d[0]==1) data[jj]=me.pp[jj].d[1]; if(me.pp[jj].d[0]==2) data[jj]=me.pp[jj].d[1]+10; if(me.pp[jj].d[0]==3) data[jj]=me.pp[jj].d[1]+20; if(me.pp[jj].d[0]==4) data[jj]=me.pp[jj].d[1]+30; } if(logo==2) w=logoo+10; if(logo==3) w=logoo+20; if(logo==4) w=logoo+30; data[computer.m+1]=w; for(mm=0;mm<=computer.m;mm++) for(nn=mm;nn<=computer.m;nn++) if(data[mm]>data[nn+1]) { tpp=data[mm]; data[mm]=data[nn+1]; data[nn+1]=tpp; } lp=0; while(lp<=computer.m) { if(data[lp]<10) pw[ww++]=data[lp]; if(data[lp]>10 && data[lp]<20) pt[tt++]=data[lp]; if(data[lp]>20 && data[lp]<30) pi[ii++]=data[lp]; if(data[lp]>30 && data[lp]<38) pf[ff++]=data[lp]; lp++; } if(ww==2) istwo(pw); else if(ww==3) isthree(pw,ww); else if(ww==5) /*pw[5]原始牌数组,假设已经升序排列*/ /*test[3]用来放置测试牌的数组*/ for(i=0;i<4;i++) { for(j=0;j<2;j++) {test[j]=pw[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<5;kl++) /*把不在test数组中的三张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==5) break; } test[ill++]=pw[kl]; } isthree(test); } } else if(ww==6) isthree(pw,ww); else if(ww==8) for(i=0;i<7;i++) { for(j=0;j<2;j++) {test[j]=pw[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<8;kl++) /*把不在test数组中的六张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==8) break; } test[ill++]=pw[kl]; } isthree(test,ww-2); } } else if(ww==9) isthree(pw,ww); else if(ww==11) for(i=0;i<10;i++) { for(j=0;j<2;j++) {test[j]=pw[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==11) break; } test[ill++]=pw[kl]; } isthree(test,ww-2); } } else if(ww=12) isthree(pw,ww); else if(ww=14) for(i=0;i<13;i++) { for(j=0;j<2;j++) {test[j]=pw[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==14) break; } test[ill++]=pw[kl]; } isthree(test,ww-2); } } if(tt==2) istwo(pt); else if(tt==3) isthree(pt,tt); else if(tt==5) /*pt[5]原始牌数组,假设已经升序排列*/ /*test[3]用来放置测试牌的数组*/ for(i=0;i<4;i++) { for(j=0;j<2;j++) {test[j]=pt[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<5;kl++) /*把不在test数组中的三张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==5) break; } test[ill++]=pt[kl]; } isthree(test); } } else if(tt==6) isthree(pt,tt); else if(tt==8) for(i=0;i<7;i++) { for(j=0;j<2;j++) {test[j]=pt[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<8;kl++) /*把不在test数组中的六张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==8) break; } test[ill++]=pt[kl]; } isthree(test,tt-2); } } else if(tt==9) isthree(pt,tt); else if(tt==11) for(i=0;i<10;i++) { for(j=0;j<2;j++) {test[j]=pt[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==11) break; } test[ill++]=pt[kl]; } isthree(test,tt-2); } } else if(tt=12) isthree(pt,tt); else if(tt=14) for(i=0;i<13;i++) { for(j=0;j<2;j++) {test[j]=pt[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==14) break; } test[ill++]=pt[kl]; } isthree(test,tt-2); } } if(ii==2) istwo(pi); else if(ii==3) isthree(pi,ii); else if(ii==5) /*pi[5]原始牌数组,假设已经升序排列*/ /*test[3]用来放置测试牌的数组*/ for(i=0;i<4;i++) { for(j=0;j<2;j++) {test[j]=pi[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<5;kl++) /*把不在test数组中的三张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==5) break; } test[ill++]=pw[kl]; } isthree(test); } } else if(ii==6) isthree(pi,ii); else if(ii==8) for(i=0;i<7;i++) { for(j=0;j<2;j++) {test[j]=pi[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<8;kl++) /*把不在test数组中的六张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==8) break; } test[ill++]=pi[kl]; } isthree(test,ii-2); } } else if(ii==9) isthree(pi,ii); else if(ii==11) for(i=0;i<10;i++) { for(j=0;j<2;j++) {test[j]=pi[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==11) break; } test[ill++]=pi[kl]; } isthree(test,ii-2); } } else if(ii=12) isthree(pi,ii); else if(ii=14) for(i=0;i<13;i++) { for(j=0;j<2;j++) {test[j]=pi[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==14) break; } test[ill++]=pi[kl]; } isthree(test,ii-2); } } if(ff==2) istwo(pf); else if(ff==3) isthree(pf,ff); else if(ff==5) /*pf[5]原始牌数组,假设已经升序排列*/ /*test[3]用来放置测试牌的数组*/ for(i=0;i<4;i++) { for(j=0;j<2;j++) {test[j]=pf[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<5;kl++) /*把不在test数组中的三张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==5) break; } test[ill++]=pf[kl]; } isthree(test); } } else if(ff==6) isthree(pf,ff); else if(ff==8) for(i=0;i<7;i++) { for(j=0;j<2;j++) {test[j]=pf[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<8;kl++) /*把不在test数组中的六张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==8) break; } test[ill++]=pf[kl]; } isthree(test,ff-2); } } else if(ff==9) isthree(pw,ww); else if(ff==11) for(i=0;i<10;i++) { for(j=0;j<2;j++) {test[j]=pf[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==11) break; } test[ill++]=pf[kl]; } isthree(test,ff-2); } } else if(ff=12) isthree(pf,ff); else if(ff=14) for(i=0;i<13;i++) { for(j=0;j<2;j++) {test[j]=pf[i+j]; } if(istwo(test)) { ill=0; for(kl=0;kl<11;kl++) /*把不在test数组中的九张放到test数组中*/ {if(kl==i) { kl=kl+2; if(kl==14) break; } test[ill++]=pf[kl]; } isthree(test,ff-2); } } } void main(void) { FILE *bmp; static char *name[2]={"ff.bmp","logo.bmp"}; char *p; int *lingshi; int x,y,i,j,t=2,cont=13,temp,n=0,onetothirteen=13,oneorthirteen=13,l=0,ll=0,kk,u; int every=0,w=0,x1,x2,y1,y2,every1=0; int logo,lg,lgg,logoo,b=0,c=0,pg=0,h,h1,g=0,kkk,kkkk,r=0,d,o=0,dwei=0,dweig=0,dw[3],nn; BYTE palette[256][3]; SETVGA; getch(); while(t--) { bmp=fopen(name[t],"rb"); fseek(bmp,54,SEEK_SET); for(i=0;i<256;i++) { palette[i][2]=fgetc(bmp)>>2; palette[i][1]=fgetc(bmp)>>2; palette[i][0]=fgetc(bmp)>>2; fgetc(bmp); Set_Palette(i,palette[i][0],palette[i][1],palette[i][2]); } for (y=0;y<200;y++) for(x=0;x<320;x++) pokeb(0xa000,y*320+x,fgetc(bmp)); fclose(bmp); getch(); } getch(); fillRectangle(0,0,320,200,0); getch(); randomize(); me.m=onetothirteen; while(me.m>0) /*先循环,给自己拿牌*/ { temp=random(136); if(m[temp].data2==0 && m[temp].data1==0) { me.pp[n].k=m[temp].name; /*把136中之一的牌放到我的手上*/ me.pp[n].oneorfour=m[temp].number; /*判断同一个花色中的第几张*/ me.pp[n].number=temp; /*第几张,用来排序*/ m[temp].data2=1; /*判断牌是谁的*/ kk=1; } if(kk==0) /*判断如果又选择了,就从新再选*/ { me.m++; n--; } me.m--; n++; kk=0; } me.m=12; melipai(); /*理牌*/ n=13; while(l<n) { z=z+20; showbmp(l); l++; } randomize(); computer.m=oneorthirteen; n=0; while(computer.m>0) /*循环,给对方拿牌*/ { temp=random(136); if(m[temp].data2==0 && m[temp].data1==0) { computer.pp[n].k=m[temp].name; /*把136中之一的牌放到电脑的手上*/ computer.pp[n].oneorfour=m[temp].number; /*判断同一个花色中的第几张*/ computer.pp[n].number=temp; /*第几张,用来排序*/ m[temp].data2=2; /*判断牌是谁的,2为电脑*/ kk=1; } if(kk==0) /*判断如果又选择了,就从新再选*/ { computer.m++; n--; } computer.m--; n++; kk=0; } computer.m=12; comlipai(); /*电脑理牌*/ n=13; while(ll<n) { zy=zy+20; showybmp(ll); ll++; } z=54400; while(key!=ESC) { keyy=bioskey(0); if(keyy==LEFT) { w=1; if(every==0) { every=1; z=54440-5*320; } zz=zz+5*320; showbmp(every); if(every==0) { x1=20; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==1) { x1=40; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==2) { x1=60; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==3) { x1=80; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==4) { x1=100; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==5) { x1=120; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==6) { x1=140; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==7) { x1=160; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==8) { x1=180; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==9) { x1=200; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==10) { x1=220; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==11) { x1=240; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==12) { x1=260; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } zz=0; every--; z=z-20; } if(keyy==RIGHT) { if(w==0) { z=54440-5*320; z=z-20; w=1; } if(every==12) { every=11; z=54640-5*320; } zz=zz+5*320; showbmp(every); if(every==0) { x1=20; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==1) { x1=40; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==2) { x1=60; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==3) { x1=80; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==4) { x1=100; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==5) { x1=120; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==6) { x1=140; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==7) { x1=160; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==8) { x1=180; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==9) { x1=200; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==10) { x1=220; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==11) { x1=240; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } if(every==12) { x1=260; y1=165; fillRectangle(x1,y1,x1+20,y1+4,0); } zz=0; every++; z=z+20; } showbmp(every); key=keyy; if(keyy==ENTER) { rgzn(every); /*********************/ if(sing==1) /*如果可以乓,做相应的处理*/ { kkk=0; kkkk=0; while(kkk<=computer.m) { if(computer.pp[kkk].p!=1) { comp.pp[kkkk].k=computer.pp[kkk].k; comp.pp[kkkk].oneorfour=computer.pp[kkk].oneorfour; comp.pp[kkkk].number=computer.pp[kkk].number; kkkk++; } else { m[computer.pp[kkk].number].data1=1; dwei=computer.pp[kkk].number; computer.pp[kkk].p=0; } kkk++; } ll=0; while(ll<3) { zl=zl+20; bmpp(dwei); /*显示乓的牌*/ ll++; } zl=zl+9600-60; kkk=0; computer.m=computer.m-2; while(kkk<=computer.m) { computer.pp[kkk].k=comp.pp[kkk].k; computer.pp[kkk].oneorfour=comp.pp[kkk].oneorfour; computer.pp[kkk].number=comp.pp[kkk].number; kkk++; } ll=0; temp=random(computer.m); /*出牌等待完善*/ zyy=zyy+9280+20; showcbmp(temp); zyy=zyy-9280; /*****/ rgznme(temp); panduan(); if(me.m==0) if(second==1 && threes==0) printf("you win!"); if(me.m==3) if(second==1 && threes==1) printf("you win!"); if(me.m==6) if(second==1 && threes==2) printf("you win!"); if(me.m==9) if(second==1 && threes==3) printf("you win!"); if(me.m==12) if(second==1 && threes==4) printf("you win!"); kkk=0; kkkk=0; while(kkk<=computer.m) { if(kkk!=temp) { comp.pp[kkkk].k=computer.pp[kkk].k; comp.pp[kkkk].oneorfour=computer.pp[kkk].oneorfour; comp.pp[kkkk].number=computer.pp[kkk].number; kkkk++; } else m[computer.pp[kkk].number].data1=1; kkk++; } kkk=0; computer.m=computer.m-1; while(kkk<=computer.m) { computer.pp[kkk].k=comp.pp[kkk].k; computer.pp[kkk].oneorfour=comp.pp[kkk].oneorfour; computer.pp[kkk].number=comp.pp[kkk].number; kkk++; } fillRectangle(0,0,320,30,0); n=computer.m; ll=0; zy=0; while(ll<=n) { zy=zy+20; showybmp(ll); ll++; } ll=0; getch(); sing=0; sing1=1; } if(sing==2) /*如果可以杠的做相应处理*/ { kkk=0; kkkk=0; while(kkk<=computer.m) { if(computer.pp[kkk].g!=1) { comp.pp[kkkk].k=computer.pp[kkk].k; comp.pp[kkkk].oneorfour=computer.pp[kkk].oneorfour; comp.pp[kkkk].number=computer.pp[kkk].number; kkkk++; } else { m[computer.pp[kkk].number].data1=1; dweig=computer.pp[kkk].number; computer.pp[kkk].g=0; } kkk++; } ll=0; while(ll<=3) { zl=zl+20; bmpp(dweig); /*显示杠的牌*/ ll++; } zl=zl+9600-60; kkk=0; computer.m=computer.m-3; while(kkk<=computer.m) { computer.pp[kkk].k=comp.pp[kkk].k; computer.pp[kkk].oneorfour=comp.pp[kkk].oneorfour; computer.pp[kkk].number=comp.pp[kkk].number; kkk++; } kk=0; computer.m++; /*加一个牌的容量*/ while(kk!=1) { temp=random(136); /*出牌*/ if(m[temp].data2==0 && m[temp].data1==0) { computer.pp[computer.m].k=m[temp].name; /*把136中之一的牌放到电脑的手上*/ computer.pp[computer.m].oneorfour=m[temp].number; /*判断同一个花色中的第几张*/ computer.pp[computer.m].number=temp; /*第几张,用来排序*/ m[temp].data2=2; /*判断牌是谁的,2为电脑*/ kk=1; } } comlipai(); temp=random(computer.m); /*出牌,等待完善*/ zyy=zyy+9280+20; showcbmp(temp); zyy=zyy-9280; /*****/ rgznme(temp); panduan(); if(me.m==0) if(second==1 && threes==0) printf("you win!"); if(me.m==3) if(second==1 && threes==1) printf("you win!"); if(me.m==6) if(second==1 && threes==2) printf("you win!"); if(me.m==9) if(second==1 && threes==3) printf("you win!"); if(me.m==12) if(second==1 && threes==4) printf("you win!"); kkk=0; kkkk=0; while(kkk<=computer.m) /*把未选的牌放到零时变量*/ { if(kkk!=temp) { comp.pp[kkkk].k=computer.pp[kkk].k; comp.pp[kkkk].oneorfour=computer.pp[kkk].oneorfour; comp.pp[kkkk].number=computer.pp[kkk].number; kkkk++; } else m[computer.pp[kkk].number].data1=1; kkk++; } kkk=0; computer.m=computer.m-1; /*把未选到的剩余牌放入电脑手中*/ while(kkk<=computer.m) { computer.pp[kkk].k=comp.pp[kkk].k; computer.pp[kkk].oneorfour=comp.pp[kkk].oneorfour; computer.pp[kkk].number=comp.pp[kkk].number; kkk++; } fillRectangle(0,0,320,30,0); ll=0; zy=0; while(ll<=computer.m) { zy=zy+20; showybmp(ll); ll++; } sing=0; sing1=1; } if(sing==7) /*如果可以吃的,做相应处理*/ { nn=0; kkk=0; kkkk=0; while(kkk<=computer.m) { if(computer.pp[kkk].c!=1) { comp.pp[kkkk].k=computer.pp[kkk].k; comp.pp[kkkk].oneorfour=computer.pp[kkk].oneorfour; comp.pp[kkkk].number=computer.pp[kkk].number; kkkk++; } else { m[computer.pp[kkk].number].data1=1; dw[nn++]=computer.pp[kkk].number; computer.pp[kkk].c=0; } kkk++; } if(me.pp[every].number<dw[0]) { dw[2]=dw[1]; dw[1]=dw[0]; dw[0]=me.pp[every].number; } if(me.pp[every].number>dw[1]) { dw[2]=me.pp[every].number; } if(me.pp[every].number>dw[0] && me.pp[every].number<dw[1]) { dw[2]=dw[1]; dw[1]=me.pp[every].number; } nn=0; while(nn<3) { zl=zl+20; bmpp(dw[nn]); /*显示吃的牌*/ nn++; } zl=zl+9600-60; kkk=0; computer.m=computer.m-2; while(kkk<=computer.m) { computer.pp[kkk].k=comp.pp[kkk].k; computer.pp[kkk].oneorfour=comp.pp[kkk].oneorfour; computer.pp[kkk].number=comp.pp[kkk].number; kkk++; } ll=0; temp=random(computer.m); /*出牌等待完善*/ zyy=zyy+9280+20; showcbmp(temp); zyy=zyy-9280; /*****/ rgznme(temp); panduan(); if(me.m==0) if(second==1 && threes==0) printf("you win!"); if(me.m==3) if(second==1 && threes==1) printf("you win!"); if(me.m==6) if(second==1 && threes==2) printf("you win!"); if(me.m==9) if(second==1 && threes==3) printf("you win!"); if(me.m==12) if(second==1 && threes==4) printf("you win!"); kkk=0; kkkk=0; while(kkk<=computer.m) { if(kkk!=temp) { comp.pp[kkkk].k=computer.pp[kkk].k; comp.pp[kkkk].oneorfour=computer.pp[kkk].oneorfour; comp.pp[kkkk].number=computer.pp[kkk].number; kkkk++; } else m[computer.pp[kkk].number].data1=1; kkk++; } kkk=0; computer.m=computer.m-1; while(kkk<=computer.m) { computer.pp[kkk].k=comp.pp[kkk].k; computer.pp[kkk].oneorfour=comp.pp[kkk].oneorfour; computer.pp[kkk].number=comp.pp[kkk].number; kkk++; } fillRectangle(0,0,320,30,0); n=computer.m; ll=0; zy=0; while(ll<=n) { zy=zy+20; showybmp(ll); ll++; } getch(); sing=0; sing1=1; } if(sing==0) /*如果没有可以乓或杠的就标明牌无用*/ { kk=0; h=me.pp[every].number; m[h].data1=1; /*此牌已经无用*/ if(sing1!=1) { zyy=zyy+9280+20; showbmpd(every); zyy=zyy-9280; } while(kk!=1) { temp=random(136); if(m[temp].data2==0 && m[temp].data1==0) { me.pp[every].k=m[temp].name; /*把136中之一的牌放到我的手上*/ me.pp[every].oneorfour=m[temp].number; /*判断同一个花色中的第几张*/ me.pp[every].number=temp; /*第几张,用来排序*/ m[temp].data2=1; /*判断牌是谁的*/ kk=1; } if(kk==0) /*判断如果又选择了,就从新再选*/ kk=0; } } sing=0; sing1=0; melipai(); n=13; z1=54400; l=0; g=z; while(l<n) { z=0; z1=z1+20; showbmp(l); l++; } z1=0; z=g; } keyy=0; } getch(); OUTVGA; }
|