久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6400|回復: 4
收起左側

C語言實現24點游戲程序源碼

[復制鏈接]
ID:402345 發表于 2018-9-25 21:07 | 顯示全部樓層 |閱讀模式
本程序特點:
1、計算不用到棧,
2、有界面處理,

1,開始界面:
截圖20.jpg
2,點擊《重新發牌》按鈕:
3,點擊《輸入答案》按鈕:
(1)通過情況:
(2)輸入式子中數字用錯情況:
(3)輸入式子中符號用錯情況:
(4)輸入式子計算錯誤情況:
4,點擊《查看游戲規則》按鈕:
5,點擊《結束游戲》按鈕:


c語言源程序如下:
  1. /*使用說明:
  2.          @請使用(.cpp)文件打開程序。
  3.          @用戶用鼠標點擊《重新發牌》按鈕,電腦將重新發四張牌。
  4.          @用戶用鼠標點擊《輸入答案》按鈕,電腦將彈出一個窗口,用戶輸入認為正確的
  5.                   式子,但只有二次輸入答案的機會,機會用完如果想繼續游戲可以用戶用鼠標點
  6.                   擊《重新發牌》按鈕。
  7.          @用戶用鼠標點擊《查看游戲規則》按鈕,可以查看規則。
  8.          @用戶用鼠標點擊《結束游戲》按鈕,將結束游戲。
  9. */

  10. #include<stdio.h>           //輸入/輸出庫。
  11. #include<stdlib.h>         //標準工具庫函數庫。
  12. #include<string.h>        //字符函數庫。
  13. #include<ctype.h>        //字符函數庫。
  14. #include<time.h>        //時間函數庫。
  15. #include<dos.h>        //系統接口函數庫。
  16. #include<easyx.h>     //繪圖函數庫。
  17. #include<conio.h>    //控制臺輸入/輸出函數庫。

  18.                                 /**@@@@@@@@@@@@@@@@@@@@@預處理@@@@@@@@@@@@@@@@@@@@@@@@@@@**/

  19. #define BeiJingColor1 RGB(225,225,120)        //定義背景色
  20. #define BeiJingColor2 RGB(250,250,250)       //定義背景色
  21. MOUSEMSG Mouse;                                                                //定義鼠標信息變量Mouse
  22.                
  23.                               /**@@@@@@@@@@@@@@@@@@聲明自定義函數程序塊@@@@@@@@@@@@@@@@@@@@**/

  24. void  WindowsInit();                                                                             //窗口初始化函數。
  25. void  DrawPoker(int x,int y,int Length,int Wideth,int Distance);                //繪制撲克牌。
  26. void  DrawButton(int x,int y,int Length,int Wideth,char* String);           //繪制按鈕。
  27. void  ClearMessage1();                                                                          //清空消息區。
  28. void  ClearMessage2(int x,int y,int Length,int Wideth,int Distance); //清空撲克牌。

  29. float jskhsz();                               //去除括號并算括號內的式子,并分離十進制字符和加減乘除等字符,并把十進制字符轉為浮點型的函數。
  30. float jsccsz();                              //計算式子中的乘除的函數。
  31. float jsjjsz();                             //計算式子中的加減函數。
  32. int  fjxt(int K,int L,int i);              //判定系統是否出兩張牌并防止出兩張相同的牌的函數。
  33. void  chupai();                           //出牌函數。

  34. int   yzmysz();                               //檢驗用戶輸入式子是否滿足使用所給的牌值和應用規定的符號的函數。
  35. int   NUM(const void *a,const void *b);      //自定義比較函數
  36. int khpd(int z,int f,int kh1[],int kh2[]);  //判斷括號是否符合規定函數,符合就返回1,不符合就返回0。
  37. void PD24d(float UE);                      //檢驗用戶輸入式子是否等于24點的函數。
  38. void gueize();                           //輸出規則函數。




  39.                   /***@@@@@@@@@@@@@@@@@@@@主函數@@@@@@@@@@@@@@@@@@***/

  40. /**********************************************************************************************
  41. @功能:  主函數。
  42. @形參:  無。
  43. @返回值:無。
  44. **********************************************************************************************/
  45. int main()
  46. {
  47.         int c,i=1;
  48.     initgraph(840, 700);      
  49.     WindowsInit();            //創建窗口。
  50.     chupai();                 //開始出牌。
  51.     gueize();                //說明規則。
  52.         c=1;
  53.     do
  54.         {
  55.         FlushMouseMsgBuffer();                   //清除鼠標信息。
  56.                 Mouse=GetMouseMsg();                    //獲取鼠標信息。
  57.                 if(Mouse.x>700&&Mouse.x<820&&Mouse.mkLButton)   //bool mkLButton;(鼠標左鍵是否按下)
  58.                 {
  59.                         if(Mouse.y>140&&Mouse.y<180)            //《重新出牌》按鈕坐標。
  60.                         {
  61.                                  chupai();
  62.                                  c=1;
  63.                         }
  64.             if(Mouse.y>200&&Mouse.y<240&&c==1)     //《輸入答案》按鈕坐標,其中c控制輸入答案次數。
  65.                         {
  66.                                 yzmysz();
  67.                                 c=0;
  68.                         }
  69.                 }
  70.         if(Mouse.y>300&&Mouse.y<340&&Mouse.mkLButton)   //bool mkLButton;(鼠標左鍵是否按下)
  71.                 {
  72.                         if(Mouse.x>490&&Mouse.x<650)         //《查看游戲規則》按鈕坐標。
  73.                         {
  74.                             gueize();
  75.                         }
  76.             if(Mouse.x>660&&Mouse.x<780)        //《結束游戲》按鈕坐標。
  77.                         {
  78.                                 closegraph();   //關閉界面。
  79.                         }
  80.                 }
  81.                
  82.         }while(i);
  83.   
  84.         return 0;
  85. }


  86.                  /**@@@@@@@@@@@@@@@@@@@@@@@界面程序塊@@@@@@@@@@@@@@@@@@@@@@@@@@***/


  87. /**********************************************************************************************
  88. @功能:  窗口初始化函數。
  89. @形參:  無。
  90. @返回值:無
  91. **********************************************************************************************/
  92. void WindowsInit()
  93. {
  94.         setbkcolor(BeiJingColor1);                                                //更換背景色
  95.         cleardevice();                                  //清除圖形屏幕

  96.         settextstyle(40, 15, _T("微軟雅黑"));                        //繪制標題
  97.         settextcolor(BLACK);
  98.         outtextxy(50,30,"歡迎來到24點游戲!");

  99.         setlinecolor(BLACK);
  100.         DrawButton(700,140,120,40,"重新發牌");                        //繪制按鈕
  101.         DrawButton(700,200,120,40,"輸入答案");
  102.         DrawButton(490,300,160,40,"查看游戲規則");
  103.         DrawButton(660,300,120,40,"結束游戲");

  104.         DrawButton(20,300,150,40,"信息提示區");
  105.         rectangle(20,350,780,680);
  106.         ClearMessage1();

  107.         DrawPoker(20,140,120,140,150);                                        //繪制撲克牌
  108. }
  109. /**********************************************************************************************
  110. @功能:  用于清除信息顯示區的內容。
  111. @形參:  無。
  112. @返回值:無。
  113. **********************************************************************************************/
  114. void ClearMessage1()
  115. {
  116.         setfillcolor(BeiJingColor2);
  117.         solidrectangle(21,351,779,679);
  118. }
  119. /**********************************************************************************************
  120. @功能:   用于清除撲克牌的內容。
  121. @形參:   四張撲克牌的左上角位置x,y,長度Length,寬度Wideth,間距Distance。
  122. @返回值: 無。
  123. **********************************************************************************************/
  124. void ClearMessage2(int x,int y,int Length,int Wideth,int Distance)
  125. {
  126.         int i;
  127.         setfillcolor(BeiJingColor1);
  128.     for(i=0;i<4;i++)
  129.         {
  130.                 solidrectangle(x+Distance*i+1,y+1,x+Wideth+Distance*i-1,y+Length-1);
  131.         }
  132. }
  133. /**********************************************************************************************
  134. @功能:  繪制撲克牌圖像。
  135. @形參:  四張撲克牌的左上角位置x,y,長度Length,寬度Wideth,間距Distance。
  136. @返回值:四個矩形方框(撲克牌外形)。
  137. **********************************************************************************************/
  138. void DrawPoker(int x,int y,int Length,int Wideth,int Distance)
  139. {
  140.         int i;
  141.         for(i=0;i<4;i++)
  142.         {
  143.                 rectangle(x+Distance*i,y,x+Wideth+Distance*i,y+Length);
  144.         }
  145. }
  146. /**********************************************************************************************
  147. @功能:  繪制一個按鈕
  148. @形參:  按鈕左上角坐標x,y,按鈕長度Length,寬度Wideth,按鈕中內容String
  149. @返回值:一個按鈕和其內容。
  150. **********************************************************************************************/
  151. void        DrawButton(int x,int y,int Length,int Wideth,char* String)
  152. {
  153.         rectangle(x,y,x+Length,y+Wideth);
  154.         settextstyle(24, 0, _T("宋體"));
  155.         outtextxy(x+10,y+10,String);
  156. }

  157.                      /**@@@@@@@@@@@@@@@@計算式子程序塊@@@@@@@@@@@@@@@@@@@@**/
  158. int n;
  159. char mysz[20];      //定義一數組存放用用戶輸入的式子。
  160. /**********************************************************************************************
  161. @功能:  去除括號并算括號內的式子,并分離十進制字符和加減乘除等字符,并把十進制字符轉為浮點型。
  162. @形參:  無。
  163. @返回值:式子中的數或括號內的結果。
  164. **********************************************************************************************/   
  165. float jskhsz()         
  166. {
  167.         char sz[20];
  168.     float sumf;
  169.         int i;
  170.     if(mysz[n]=='(')                  //計算括號內的式子。
  171.         {
  172.        n++;
  173.        sumf=jsjjsz();
  174.         }
  175.     if(mysz[n]==')')
  176.        n++;  
  177.     for(i=0;isdigit(mysz[n])!=0;n++)     //判斷用戶輸入式子是否有十進制字符,有則執行。(P53.isdigit()函數:判斷字符是否是十進制字符,是則返回非0,否返回0。)
  178.         {
  179.        sz[i]=mysz[n];
  180.            i++;
  181.        sz[i]='\0';
  182.        sumf=(float)atoi(sz);        //(float)強制轉浮點型,(P320.atoi()函數:將字符串轉整型。)
  183.         }
  184.     return(sumf);
  185. }
  186. /**********************************************************************************************
  187. @功能:  計算式子中的乘除。
  188. @形參:  無。
  189. @返回值:乘除所得的值。
  190. **********************************************************************************************/
  191. float jsccsz()         
  192. {
  193.     float sumc;
  194.     sumc=jskhsz();       //括號內式子優先級高,所以先運行flsf()函數。
  195.     while(mysz[n]=='*'||mysz[n]=='/')
  196.         {
  197.                 if(mysz[n]=='*')
  198.                 {
  199.                    n++;
  200.                sumc=sumc*jskhsz();     //遇到乘號先調用flsf()函數檢驗下面式子是否有括號。
  201.                 }
  202.         if(mysz[n]=='/')
  203.                 {
  204.                    n++;
  205.                sumc=sumc/jskhsz();
  206.                 }
  207.         }
  208.     return(sumc);
  209. }
  210. /**********************************************************************************************
  211. @功能:  計算式子中的加減。
  212. @形參:  無。
  213. @返回值:式子總值。
  214. **********************************************************************************************/
  215. float jsjjsz()      
  216. {
  217.    float sumj;
  218.    sumj=jsccsz();     //乘除的優先級更高,所以先運行chengchu()函數。
  219.    while(mysz[n]=='-'||mysz[n]=='+')
  220.    {
  221.            if(mysz[n]=='+')
  222.            {
  223.                   n++;
  224.           sumj=sumj+jsjjsz();   //遇到加號先調用chenchu()函數檢驗下面式子是否有乘號。
  225.            }
  226.        if(mysz[n]=='-')
  227.            {
  228.                   n++;
  229.           sumj=sumj-jsjjsz();
  230.            }
  231.          
  232.    }
  233.    return(sumj);
  234. }


  235.                        /***********************發牌與處理牌程序塊************************/


  236. int cpz[4],CP1[5],CP2[5];        //定義數組cpz[4]存放四張牌對應的值。
  237. /**********************************************************************************************
  238. @功能:  判定系統是否出兩張相同的牌并防止出兩張相同的牌。
  239. @形參:  確定牌第一字母的變量K,確定牌第二字母的變量J,確定發到第幾張牌的變量i。
  240. @返回值:1(當前牌與前面牌有相同),0(當前牌與前面牌不相同)
  241. **********************************************************************************************/
  242. int fjxt(int K,int L,int i)     
  243. {
  244.         int p=0,j,t;
  245.         if(i==0)   
  246.         {
  247.             p=1;
  248.         }
  249.         else
  250.         {
  251.         for(j=0;j<i;j++)        //防止出兩張相同的牌。
  252.                 {
  253.             if(K==CP1[j])       //先判定是否與第一個字符相同。
  254.                         {
  255.                                 for(t=0;t<i;t++)   //在判定是否與第二個字符相同。
  256.                                 {
  257.                                if(L==CP2[t])
  258.                                    {
  259.                                            goto kl;
  260.                                    }
  261.                                 }
  262.                         }
  263.                 }
  264.         kl:if(j==i)    //若能運行完上面程序段,就可以輸出。
  265.                 {
  266.             p=1;
  267.                 }
  268.         }
  269.         return(p);
  270. }
  271. /**********************************************************************************************
  272. @功能:  出牌函數。
  273. @形參:  無。
  274. @返回值:無。
  275. **********************************************************************************************/
  276. void chupai()      
  277. {
  278.    
  279.     time_t t;
  280.     int X,Y,K,L,i,p;
  281.         char pai1[5]={'S','H','D','C','Q'};
  282.         char pai2[14][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
  283.     char pai3[5]={'1','2'};
  284.         char cpai[1];

  285.     X=0;Y=0;   //變量賦初值。

  286.     srand((unsigned)time(&t));    //初始化隨機數發生器。(P343.srand():初始化隨機數發生器函數。)
  287.     ClearMessage2(20,140,120,140,150);
  288.         for(i=0;i<4;i++)
  289.         {
  290.       
  291.         K=rand()%5;      //隨機出一個0 ~ 4范圍內的數,對應pai1數組中對應牌的第一字符。(P339.rand():隨機數發生器函數。)
  292.         CP1[i]=K;
  293.                 if(K!=4)
  294.                 {
  295.                         L=rand()%13;      //隨機出一個0 ~ 12范圍內的數,對應pai2數組中對應牌的第二字符。
  296.                         CP2[i]=L;
  297.             p=fjxt(K,L,i);
  298.                         if(p==1)
  299.                         {
  300.                 cpz[i]=L+1;     //L+1為每張牌相應的值。
  301.                     setbkcolor(BeiJingColor1);
  302.                         _stprintf(cpai, _T("%c%s"),pai1[K],pai2[L]);
  303.                         settextstyle(80, 0, _T("微軟雅黑"));
  304.                         outtextxy(40+i*145,150,cpai);
  305.                         }
  306.                         else
  307.                                 i--;
  308.                 }
  309.                 else                     //大鬼Q1和小鬼Q2兩張牌處理和輸出。
  310.                 {
  311.                         Y++;      
  312.                         if(Y==1)            //大鬼Q1和小鬼Q2就兩張牌,第一次無條件輸出。
  313.                         {
  314.                 L=rand()%2;    //隨機出一個0 ~ 1范圍內的數,對應pai3數組中對應大鬼Q1和小鬼Q2的第二字符。
  315.                             X=L;          //變量X存放第一次隨機輸出的值。
  316.                 cpz[i]=1;
  317.                     setbkcolor(BeiJingColor1);
  318.                         _stprintf(cpai, _T("%c%c"),pai1[K],pai3[L]);
  319.                         settextstyle(80, 0, _T("微軟雅黑"));
  320.                         outtextxy(40+i*145,150,cpai);
  321.                         }
  322.                         else
  323.                             if(Y==2)
  324.                                 {
  325.                     L=rand()%2;
  326.                                     if(X!=L)     //與第一次隨機輸出的值對比,若不相同則可以輸出。
  327.                                         {
  328.                        cpz[i]=1;
  329.                            setbkcolor(BeiJingColor1);
  330.                                _stprintf(cpai, _T("%c%c"),pai1[K],pai3[L]);
  331.                                settextstyle(80, 0, _T("微軟雅黑"));
  332.                                outtextxy(40+i*145,150,cpai);
  333.                                         }
  334.                                         else
  335.                                                 i--;
  336.                                 }
  337.                                 else
  338.                                         i--;
  339.                 }
  340.         }
  341.     ClearMessage1();
  342. }
  343.    
  344.               /**@@@@@@@@@@@輸入式子與檢驗用戶輸入式子是否正確程序塊@@@@@@@@*/


  345. int s1=0;
  346. /**********************************************************************************************
  347. @功能:  輸入式子與檢驗用戶輸入式子是否滿足使用所給的牌值和應用規定的符號。
  348. @形參:  無。
  349. @返回值:無。
  350. **********************************************************************************************/
  351. int yzmysz()
  352. {
  353.     char sz[5],szz[10];
  354.         int p,q,Q,M,MN,i,x,sc,KJ,z,f,zf,h1,h2,kh1[5],kh2[5];
  355.         int m,mypz[4];
  356.         float A;
  357.    
  358.   loop:InputBox(mysz,20,"請輸入您以為正確的式子","輸入","",0,0,true );
  359.     settextstyle(30, 0, _T("微軟雅黑"));
  360.     outtextxy(30,360,"正在檢驗您的式子。。。。");

  361.     p=0;q=0;Q=0;M=0;MN=0;sc=1;KJ=0;z=0;f=0;h1=0;h2=0;     //變量賦初值。
  362.         for(x=0,i=4;mysz[x]!='\0';)              //檢驗用戶輸入牌值與電腦給出的牌值是否相等。
  363.                 {
  364.                     if(isdigit(mysz[x])==0)
  365.                                 x++;
  366.                     if(isdigit(mysz[x])!=0)
  367.                             i--;
  368.                     for(m=0;isdigit(mysz[x])!=0;x++)    //(isdigit()函數:判斷字符是否是十進制數,是則執行函數,否則跳出。)
  369.                         {
  370.                             sz[m]=mysz[x];
  371.                     m++;
  372.                 sz[m]='\0';
  373.                 mypz[i]=atoi(sz);               //(atoi()函數:字符串轉整型值。)
  374.                         }
  375.                 }
  376.             qsort(cpz,4,sizeof(cpz[0]),NUM);        //快速排序。(P338.qsort()函數:快速排序函數。)
  377.             qsort(mypz,4,sizeof(mypz[0]),NUM);
  378.             for(i=0;i<4;i++)                        //用戶輸入的牌值和電腦出的牌值對比。
  379.                 {

  380.                         if(i>=4)
  381.                         {
  382.                                 p=1;
  383.                         }
  384.                         else
  385.                        if(cpz[i]!=mypz[i])
  386.                            {
  387.                                    p=1;                            //出現不相等p等于1。
  388.                            }
  389.                 }
  390.         for(x=0;mysz[x]!='\0';x++)              //檢驗用戶輸入式子的數字是否超過四個,超過為錯。
  391.                 {
  392.                     if(isdigit(mysz[x])==0)//(isdigit()函數:判斷字符是否是十進制數,是則執行函數,否則跳出。)
  393.                         {
  394.                 sc++;
  395.                         }
  396.                         if(sc>4)
  397.                         {
  398.                                 p=1;
  399.                         }
  400.                 }
  401.             if(p==1)                    //p=1用戶使用數不對。
  402.                 {
  403.                 setbkcolor(BeiJingColor2);
  404.                     s1++;
  405.                         ClearMessage1();
  406.             outtextxy(30,360,"您使用數不對哦。!");
  407.                 outtextxy(30,400,"您還有一次重新輸入的機會!!");
  408.                 outtextxy(30,440,"您所輸入式子為:");
  409.             outtextxy(30,480,mysz);
  410.             if(s1<=1)               //判斷輸入次數是否超過設定的兩次。
  411.                             goto loop;
  412.                 else
  413.                         {
  414.                     setbkcolor(BeiJingColor2);
  415.                                 ClearMessage1();
  416.                             outtextxy(30,360,"您使用數不對并且次數用完!");
  417.                 outtextxy(30,400,"本次游戲結束。");
  418.                     outtextxy(30,440,"您所輸入式子為:");
  419.                 outtextxy(30,480,mysz);
  420.                 outtextxy(30,520,"如果想繼續游戲請按《重新發牌》。");
  421.                 s1=0;
  422.                             goto ex;
  423.                         }
  424.                 }
  425.             else
  426.                         if(p==0)                    //p=0用戶使用數正確,判斷用戶使用符號是否有錯誤。
  427.                         {
  428.                     for(x=0;mysz[x]!='\0';x++)   
  429.                                 {
  430.                     if(isdigit(mysz[x])==0)
  431.                                         {
  432.                         if(mysz[x]<40||mysz[x]>47||mysz[x]==44||mysz[x]==46)  //檢驗用戶輸入加減乘除等符號與規定的符號是否相等(用ASCII檢驗)
  433.                                                 {
  434.                             KJ=1;
  435.                                             goto sood;
  436.                                                 }
  437.                                                 else
  438.                                                         if(mysz[x]==42||mysz[x]==43||mysz[x]==45||mysz[x]==47)   //'+''-''*''/'
  439.                                                    {
  440.                                                                 if(isdigit(mysz[x-1])==0&&mysz[x-1]!=41)       //'+''-''*''/'前只能為十進制字符和')'
  441.                                                                 {
  442.                                      KJ=1;
  443.                                                              goto sood;
  444.                                                                 }
  445.                                                                 if(isdigit(mysz[x+1])==0&&mysz[x+1]!=40)       //'+''-''*''/'后只能為十進制字符和'('
  446.                                                                 {
  447.                                      KJ=1;
  448.                                                              goto sood;
  449.                                                                 }
  450.                                                    }
  451.                                        else
  452.                                                    {
  453.                                                 if(mysz[x]==40)            
  454.                                                                 {
  455.                                                                     if(mysz[x+1]==41)        //出現'()'為錯。
  456.                                                                         {
  457.                                                                             KJ=1;
  458.                                                                     goto sood;
  459.                                                                         }
  460.                                                         z++;                      //記錄'('的個數。
  461.                                                         kh1[h1]=x;                //記錄'('的位置。
  462.                                                         h1++;
  463.                                                                 }
  464.                                                 if(mysz[x]==41)
  465.                                                                 {
  466.                                                         f++;                     //記錄')'的個數。
  467.                                                     kh2[h2]=x;               //記錄')'的位置。
  468.                                                         h2++;
  469.                                                                 }

  470.                                                    }
  471.                                         }  
  472.                                 }
  473.                 zf=khpd(z,f,kh1,kh2);
  474.             sood:if(KJ==1||zf==0)
  475.                                  {
  476.                          setbkcolor(BeiJingColor2);
  477.                              s1++;
  478.                                  ClearMessage1();
  479.                      outtextxy(30,360,"您的符號使用號有錯誤哦。!");
  480.                          outtextxy(30,400,"您還有一次重新輸入的機會。");
  481.                          outtextxy(30,440,"您所輸入式子為:");
  482.                      outtextxy(30,480,mysz);
  483.                      if(s1<=1)                           //判斷輸入次數是否超過設定的兩次。
  484.                                       goto loop;
  485.                          else                          
  486.                                          {
  487.                               setbkcolor(BeiJingColor2);
  488.                                           ClearMessage1();
  489.                                       outtextxy(30,360,"您的符號使用有錯誤并且次數用完!");
  490.                           outtextxy(30,400,"本次游戲結束。");
  491.                               outtextxy(30,440,"您所輸入式子為:");
  492.                           outtextxy(30,480,mysz);
  493.                           outtextxy(30,520,"如果想繼續游戲請按《重新發牌》。");
  494.                           s1=0;
  495.                                       goto ex;
  496.                                          }
  497.                                  }
  498.                         }

  499.     setbkcolor(BeiJingColor2);   
  500.         ClearMessage1();
  501.     outtextxy(30,360,"正在檢驗您輸入的式子是否等于24。。。");
  502.         outtextxy(30,400,"您所輸入式子為:");
  503.     outtextxy(30,440,mysz);
  504.     n=0;                                            //每次運行jiajian()函數都把n重新賦0值。
  505.     sprintf(szz,"%f",jsjjsz());                   //把式子結果存于szz數組。
  506.     outtextxy(30,480,"計算結果為:\n");
  507.     outtextxy(30,520,szz);
  508.     n=0;
  509.         A=jsjjsz();                           //計算用戶輸入式子。
  510.     PD24d(A);                            //調用PD24d()函數判斷用戶輸入式子是否等于24點。
  511. ex:return 0;
  512. }
  513. /**********************************************************************************************
  514. @功能:  自定義比較函數。
  515. @形參:  數a,數b。
  516. @返回值:數a與數b的差值。
  517. **********************************************************************************************/
  518. int NUM(const void *a,const void *b)      
  519. {
  520.     return *(int *)a-*(int *)b;
  521. }
  522. /**********************************************************************************************
  523. @功能:  判斷括號是否符合規定。
  524. @形參:  "("的個數z,")"的個數f,存放'('位置的數組kh1[],存放')'位置的數組kh2[]。
  525. @返回值:1(括號使用正確),0(括號使用錯誤)
  526. **********************************************************************************************/
  527. int khpd(int z,int f,int kh1[],int kh2[])     
  528. {
  529.         int i,zf=1;
  530.         if(z!=f)         //'('和')'個數比較。
  531.         {
  532.                 zf=0;
  533.         }
  534.         else
  535.         {
  536.                 for(i=0;i<z;i++)
  537.                 {
  538.                         if(kh1[i]>kh2[i])    //'('和')'位置比較。
  539.                         {
  540.                                 zf=0;
  541.                         }
  542.                 }
  543.         }
  544.         return(zf);
  545. }



  546. /**********************************************************************************************
  547. @功能:  檢驗用戶輸入式子結果是否等于24點。
  548. @形參:  式子總值UE。
  549. @返回值:無。
  550. **********************************************************************************************/
  551. void PD24d(float UE)
  552. {
  553.     if(UE==24.000000)
  554.         {
  555.         outtextxy(30,560,"恭喜您通過。!");
  556.         }
  557.     else
  558.         {
  559.             outtextxy(30,560,"您的計算有誤。!");
  560.                 outtextxy(30,600,"本次游戲結束。");
  561.         }
  562. }

  563.                 /***@@@@@@@@@@@@@@@@@@@@@輸出規則的程序塊@@@@@@@@@@@@@@@@@@@@@@@@***/

  564. /**********************************************************************************************
  565. @功能:  將規則輸出到信息提示區。
  566. @形參:  無。
  567. @返回值:無。
  568. **********************************************************************************************/
  569. void gueize()
  570. {
  571.     ClearMessage1();
  572.     setbkcolor(BeiJingColor2);
  573.     settextstyle(20, 0, _T("微軟雅黑"));
  574.     outtextxy(30,360,"請仔細閱讀規則:");
  575.     outtextxy(30,380,"一副牌54張牌,黑桃(SA,SK,SQ,SJ,S10,……,S2),");
  576.     outtextxy(30,400,"              紅桃(HA,HK,HQ,HJ,H10,……,H2),");
  577.     outtextxy(30,420,"              方塊(DA,DK,DQ,DJ,D10,……,D2),");
  578.     outtextxy(30,440,"              草花(CA,CK,CQ,CJ,C10,……,C2),");
  579.     outtextxy(30,460,"              以及大鬼Q1和小鬼Q2。");
  580.     outtextxy(30,480,"其中,A,K,Q,J及Q1,Q2的點值分別為:1,13,12,11,1,1。其余點值就是牌值。");
  581. }

復制代碼
0.png
所有資料51hei提供下載:
程序.zip (676.75 KB, 下載次數: 13)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:513468 發表于 2019-4-16 11:42 | 顯示全部樓層
很棒
回復

使用道具 舉報

ID:513468 發表于 2019-4-16 11:42 | 顯示全部樓層
很專業,但好像不是全用的C語言打的把
回復

使用道具 舉報

ID:402345 發表于 2019-6-8 22:32 | 顯示全部樓層

謝謝      
回復

使用道具 舉報

ID:402345 發表于 2019-8-1 21:26 | 顯示全部樓層
1163960308 發表于 2019-4-16 11:42
很專業,但好像不是全用的C語言打的把

有些函數用到c++  但很淺 會c查一下就懂了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品99久久久久久www | 日韩在线播放中文字幕 | 精品国产一区一区二区三亚瑟 | 久久久av | 三级在线免费观看 | 成人在线视频一区 | 91精品国产91久久久久久吃药 | 91精品国产综合久久久久久丝袜 | 在线亚洲欧美 | 一区二区三区欧美在线观看 | 欧美黑人狂野猛交老妇 | 欧美一区二区三区在线 | 色婷婷婷婷色 | 97色在线视频 | 神马福利| 日韩手机视频 | 国产一级特黄aaa大片评分 | 色婷婷综合久久久中字幕精品久久 | 成人国产精品免费观看 | 久久久久久91香蕉国产 | 午夜理伦三级理论三级在线观看 | 免费一级毛片 | 欧美视频免费 | 中文字幕免费观看 | 成人精品一区二区三区四区 | 日本福利片 | 国产xxxx岁13xxxxhd | 欧美日韩亚洲一区 | 91麻豆精品国产91久久久更新资源速度超快 | 美女国产一区 | 欧美日韩在线观看一区二区三区 | 亚洲在线看 | 国产精品99免费视频 | 欧美成人在线免费 | 一区二区三区欧美在线 | 国产精品色一区二区三区 | 欧美日韩久久久 | 亚洲精品福利视频 | 国产一区 | 久草视| 亚洲综合免费 |