您好,欢迎访问三七文档
#includestdio.h#includestdlib.h#includeconio.h#includedos.h#defineKEY_P0x1970#defineKEY_R0x1372#defineKEY_Y0x1579#defineKEY_ENTER0x1c0d#defineKEY_ESC0x11B#definecard_size10//牌体大小intmain(){voidput_card(intcolor,intnumber,intcard_x,intcard_y);/*color:0背景牌3红桃4方片5米花6黑桃,number:1到13,card_x,y:扑克左上角位置坐标*/voidput_player_info(intpc_pl,intscore,intwin,intinfo_x,intinfo_y);//pc_pl电脑_人,score分数,win0电脑赢,1人赢,xy画图位置voidgame_again(intplayer_score[],intcard_info[]);intpc_pl_bet(intz[]);voidGAME_OVER();voidgame_control(intplayer_bet_money[],inty[]);voidinformation();voidstate();//声明函数intcard_color_number[12]={0,0,0,0,0,0,0,0,0,0,0,0};intplayer_money[2]={1000,1000};game_again(player_money,card_color_number);//初始化扑克,花色,钱game_control(player_money,card_color_number);return0;}voidgame_again(intplayer_score[],intcard_info[]){inti;//i控制循环,对应按键扫描码srand((unsigned)time(NULL));//随机数起点for(i=0;i12;i=i+2){card_info[i]=rand()%4+3;//随机产生花色card_info[i+1]=rand()%13+1;//随即产生数值}put_card(0,0,10,2);put_card(0,0,19,2);put_card(0,0,28,2);//打印背景牌put_player_info(0,player_score[0],1,37,2);//打印小电脑put_card(card_info[6],card_info[7],10,11);put_card(card_info[8],card_info[9],19,11);put_card(card_info[10],card_info[11],28,11);//利用函数调用,打印任意位置,任意大小,任意花色的扑克put_player_info(1,player_score[1],1,37,11);//打印小孩}voidstate(){window(30,21,60,21);textcolor(BLACK);textbackground(WHITE);clrscr();}voidgame_control(intplayer_bet_money[],inty[]){intch,bet_money;intwin;while(1){information();ch=bioskey(0);//得到按键switch(ch){caseKEY_P:{state();printf(Restartthegame?(KEYPagain));ch=bioskey(0);if(ch==KEY_P){player_bet_money[0]=1000;player_bet_money[1]=1000;game_again(player_bet_money,y);}else{delline();gotoxy(1,1);}}break;//按P键重新开始游戏caseKEY_R:{state();printf(Freshthecord?(KEYRagain));ch=bioskey(0);if(ch==KEY_R)game_again(player_bet_money,y);else{delline();gotoxy(1,1);}}break;//按R键重新发牌caseKEY_ENTER:{state();printf(Bet?(KEYENTERagain));ch=bioskey(0);if(ch==KEY_ENTER){state();printf(HowMuch:);scanf(%d,&bet_money);win=pc_pl_bet(y);if(win==0){player_bet_money[0]+=bet_money;player_bet_money[1]-=bet_money;}elseif(win==1){player_bet_money[1]+=bet_money;player_bet_money[0]-=bet_money;}else{state();printf(Dogfall);}put_player_info(0,player_bet_money[0],win,37,2);//打印小电脑put_player_info(1,player_bet_money[1],win,37,11);//打印小孩getch();game_again(player_bet_money,y);if((player_bet_money[0]=0)||(player_bet_money[1]=0)||(player_bet_money[0]=2000)||(player_bet_money[1]=2000))GAME_OVER(player_bet_money);}else{delline();gotoxy(1,1);}}break;//按ENTER键下注,并比出结果caseKEY_ESC://按两次ESC键退出游戏{state();printf(Endthegame?(KEYESCagain));ch=bioskey(0);if(ch==KEY_ESC)exit(0);else{delline();gotoxy(1,1);}}}}}intpc_pl_bet(intz[]){intpc_pl;inti,j;put_card(z[0],z[1],10,2);put_card(z[2],z[3],19,2);put_card(z[4],z[5],28,2);//打印电脑牌for(i=1;i6;i+=2)for(j=1;j6-i;j+=2){if(z[j]z[j+2])//冒泡排序{pc_pl=z[j];z[j]=z[j+2];z[j+2]=pc_pl;//排列电脑三张牌}if(z[j+6]z[j+8]){pc_pl=z[j+6];z[j+6]=z[j+8];z[j+8]=pc_pl;//排列玩家三张牌}}if(z[0]==z[2]&&z[2]==z[4])z[0]=4;elsez[0]=0;if(z[6]==z[8]&&z[8]==z[10])z[6]=4;elsez[6]=0;//同花顺,牌权放在z[0]、z[6]中z[2]=z[1]-z[3];z[4]=z[3]-z[5];z[8]=z[7]-z[9];z[10]=z[9]-z[11];if(z[2]==0&&z[4]==0)z[0]=16;if(z[8]==0&&z[10]==0)z[6]=16;if(z[2]==1&&z[4]==1)z[0]+=8;if(z[8]==1&&z[10]==1)z[6]+=8;if((z[2]&&z[4])==0)z[0]+=2;if((z[8]&&z[10])==0)z[6]+=2;if((z[2]*z[4])1)z[0]+=2;if((z[8]*z[10])1)z[6]+=2;if(z[0]z[6])return0;elseif(z[0]z[6])return1;else{if((z[0]==16)||(z[0]==12)||(z[0]==8))//比“炸”比“顺连”比“连”{if(z[1]z[7])return0;elsereturn1;}//当牌权相等时候,判断,待完~if(z[0]==6)//比“顺对”{if(z[1]z[7])return0;elsereturn1;}if(z[0]==2)//比“对”{if(z[1]z[7])return0;elsereturn1;}if(z[0]==1)//比“单”{if(z[1]z[7])return0;elseif((z[1]==z[7])&&(z[3]z[9]))return0;elseif((z[1]==z[7])&&(z[3]==z[9])&&(z[3]z[9]))return0;elseif((z[1]==z[7])&&(z[3]==z[9])&&(z[3]==z[9]))return3;elsereturn1;}}}voidput_player_info(intpc_pl,intscore,intwin,intinfo_x,intinfo_y)//pc_pl电脑_人,score钱,win0电脑赢,1人赢,xy画图位置{window(info_x,info_y,info_x+card_size-1,info_y+card_size-2);textcolor(BLACK);textbackground(WHITE);clrscr();if(pc_pl==0){cprintf(______);gotoxy(1,2);cprintf(|____|);gotoxy(1,3);if(win==0)cprintf(||$$||);elsecprintf(||||);gotoxy(1,4);cprintf(||____||);gotoxy(1,5);cprintf(|_____|);gotoxy(3,5);textcolor(RED);putch('*');textcolor(BLACK);gotoxy(1,6);cprintf(/\\\\\\);gotoxy(1,7);cprintf((________));gotoxy(1,8);cprintf(Money:%d,score);}else{gotoxy(1,2);cprintf(_);gotoxy(1,3);cprintf(.''.);gotoxy(1,4);if(win==1)cprintf(/$$\\);elsecprintf(/oo\\);gotoxy(1,5);cprintf(((_));gotoxy(1,6);cprintf(\\_/);gotoxy(1,7);cprintf(`._.');gotoxy(1,9);cprintf(Money:%d,score);}}voidGAME_OVER(intplayer_end_money[]){intch;intmoney[2]={1000,1000},y[12]={0,0,0,0,0,0,0,0,0,0,0,0};window(1,1,80,25);textcolor(RED);textbackground(WHITE);clrscr();gotoxy(10,4);printf(---------------------);gotoxy(10,6);printf(COM%d,player_end_money[0]);gotoxy(10,8);printf(---------------------);gotoxy(10,10);printf(YOU%d,player_end_money[1]);gotoxy(10,12);printf(---------------------);gotoxy(16,16);printf(PlayAgain?(ENTER));ch=bioskey(0
本文标题:炸金花源码
链接地址:https://www.777doc.com/doc-3655047 .html