亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++ Builder構建算二十四點小游戲

2019-11-17 05:24:15
字體:
來源:轉載
供稿:網友
        所謂算二十四點可能是不少讀者朋友童年喜歡玩的撲克游戲之一,玩法是:把一副撲克牌從A到10選出來均分成兩份,兩個小朋友各持一份即可開始游戲,每人隨機抽兩張出來組成四張牌,把這四張牌加減乘除湊成結果為二十四,先算出來的一方贏得對方的兩張牌,進行下一輪,假如都沒計算出來為和局,直到把對方所有的撲克牌全部繳獲,游戲方告結束。

  想要自己算的最快嗎?那最好是讓程序來替你做個二十四點王。

  用程序實現二十四點的算法很多,但大都比較繁雜。考慮到湊出結果的可能情況并不是太多,在這里我們將主要靠自己窮舉可能的演算式外加循環計算來實現。

  一、四張牌的排列組合

  四張牌A B C D共有多少種排列組合?公式為P44,即1×2×3×4=24共24種組合。

  為什么要把四張牌的所有排列組合都羅列出來呢?因為我們將要采用的算法簡單說就是:窮舉所有算術式,比如A+B+C+D、A+B+C-D等等,讓每一個算術式的四個變量都去排列組合一次,尋找是否存在一個排列組合使算術式的值為24。舉個例子A+B+C-D:

  把四張牌(四個變量)放入表2的(Pos.1、Pos.2、Pos.3、Pos.4)四個位置中去,總共應該有24種放置方法。

  假如在表3內找到一個公式使A+B+C-D的值等于24,則打印出此算術式,否則說明此算術式不滿足需要,再進行下一個算術式的變量的排列組合。假如窮舉所有的算術式都不能滿足要求,那么表示此題無解。

  一、窮舉所有算術式

  這個工作比較煩瑣,但很考驗你的邏輯演算能力。筆者按加、減、乘、除、括號的順序基本羅列完了所有算術式,表4—表6只羅列了一部分,剩下的讀者可以自己來完成:

  二、制作游戲

  有了前面的基礎后,開始編程。筆者在這里使用的是Borland C++ Builder,下面簡單介紹一下制作流程并講解其中的難點:

  1.動手設計一個人性化的界面。

  2.程序編制流程:

  不管是手動輸入四個數還是隨機產生,都把這四個數值存儲起來,然后進行求解。求解時遵循這樣的規律:這里共有45種算術式(包括無解),從第一個算術式開始不斷調用排列組合,假如成立(結果為24),退出求解過程并輸出結果,不成立則嘗試下一個算術式,直到最后一個算術式的調用,假如都不滿足則打印無解。

  3.隨機產生數字:

  產生四個數,一種方式是手動錄入,一種方式是隨機產生,這里只給出隨機產生數字的代碼:(程序里的變量沒作說明均為全局變量)

void __fastcall TForm1::Button2Click(TObject *Sender)
{
flag=false;
randomize();
NumberA=random(10)+1;
NumberB=random(10)+1;
NumberC=random(10)+1;
NumberD=random(10)+1;
Edit1->Text=FloatToStr(NumberA);
Edit2->Text=FloatToStr(NumberB);
Edit3->Text=FloatToStr(NumberC);
Edit4->Text=FloatToStr(NumberD);
Button4->SetFocus();
}

  4.求解過程:

////////////求解
for(j=1;j<=45;j++)
{
switch(j)
{
///////////////
case 2://對應表4的第二種情況
for(i=1;i<=24;i++)//注重case1只循環1次,因為四個變量求和不必考慮變量的位置
{
kind(i);//調用子函數
answer=A+B+C-D;
if(answer==24)
{
flag=true; //設置標志
result=FloatToStr(A)+"+"+FloatToStr(B)+"+"+FloatToStr(C)+"-"+FloatToStr(D)+"=24";
Label1->Caption=result;
Label1->Visible =true;
break;
}
}
if(flag==true)break;//退出switch
……………………//余下的求解算術式的方法與case2相似,這里就不重復了。
case 45:
flag=true;
result="無解";
Label1->Caption=result;
Label1->Visible =true;
break;
if(flag==true)break;
//////////////////////
/////////////////////
}
if(flag==true)//退出循環
break;
}

  子函數:

int kind(int k)
{
switch(k)//排列組合4個數,對應表1
{
case 1:A=NumberA;B=NumberB;C=NumberC;D=NumberD;break;
case 2:A=NumberA;B=NumberB;D=NumberC;C=NumberD;break;
case 3:A=NumberA;C=NumberB;B=NumberC;D=NumberD;break;
case 4:A=NumberA;D=NumberB;B=NumberC;C=NumberD;break;
……
case 22:D=NumberA;B=NumberB;A=NumberC;C=NumberD;break;
case 23:D=NumberA;B=NumberB;C=NumberC;A=NumberD;break;
default:D=NumberA;C=NumberB;B=NumberC;A=NumberD;
}
}
  小結:

  值得注重的是在羅列算術式時既要避免重復,如A+B×C+D與A×B+C+D是一致的,需要丟棄一個,又要列舉全面,還要考慮到排除掉不可能實現的算術式,此程序的算法不難理解,要害在于算術式的準確。理清楚了算法,編程是很快的。


上一篇:GCC 安裝

下一篇:在 C++ 中控制Windows關機

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美伦理91i| 亚洲肉体裸体xxxx137| 欧美极品少妇xxxxⅹ裸体艺术| 日韩av在线影院| 国产极品精品在线观看| 欧美日韩国产在线看| 日韩欧美在线国产| 国产精品高清在线| 亚洲成人网在线观看| 国产精品亚洲视频在线观看| 久久久国产在线视频| 亚洲精品www久久久久久广东| 孩xxxx性bbbb欧美| 全亚洲最色的网站在线观看| 中文字幕在线观看亚洲| 国产精品亚发布| 国产精品电影在线观看| 国产美女91呻吟求| 精品露脸国产偷人在视频| 国产在线高清精品| 亚洲第一区中文99精品| 亚洲欧美国产精品| 国产成人av在线| 久久久噜噜噜久久中文字免| 精品人伦一区二区三区蜜桃免费| 一本一道久久a久久精品逆3p| 日韩av电影手机在线| 成人免费直播live| 91高清免费在线观看| 亚洲a在线观看| 欧美人在线视频| 性欧美xxxx交| 日韩一区二区三区在线播放| 欧美高跟鞋交xxxxxhd| 国产成人91久久精品| 热久久99这里有精品| 日韩在线免费高清视频| 国产精品久久久久99| 成人免费看黄网站| 久久免费视频观看| 97av在线视频免费播放| 91亚洲va在线va天堂va国| 国产精品亚洲欧美导航| 久久五月天色综合| 91成人天堂久久成人| 欧美日韩在线免费观看| 欧美日韩国产91| 欧美激情精品久久久久| 亚洲国产精品久久久| 欧美激情一级精品国产| 在线看欧美日韩| 高清亚洲成在人网站天堂| 98视频在线噜噜噜国产| 久久全球大尺度高清视频| 日韩欧美国产骚| 久久免费视频在线| 最近中文字幕2019免费| 91在线高清视频| 日韩在线视频免费观看高清中文| 久久久av免费| 91久久久久久| 国产91色在线|| 久久综合伊人77777蜜臀| 2019中文字幕在线| 久久伊人精品视频| 国产成人免费av| 久久精品91久久久久久再现| 日韩精品在线视频| 自拍亚洲一区欧美另类| 日韩欧美福利视频| 亚洲国产一区二区三区四区| 亚洲视频axxx| 亚洲国产美女精品久久久久∴| 国产亚洲欧洲高清一区| 欧美性猛交xxxx免费看漫画| 日韩中文字幕国产| 亚洲免费av网址| 色哟哟网站入口亚洲精品| 亚洲欧洲在线播放| 国产一区二区三区视频免费| 日韩av电影手机在线| 久久久免费精品视频| 亚洲欧美国产精品久久久久久久| 亚洲欧洲av一区二区| 91在线中文字幕| 欧美日韩国产综合视频在线观看中文| 在线亚洲国产精品网| 日本不卡高字幕在线2019| 欧美一级黑人aaaaaaa做受| 性欧美暴力猛交69hd| 91丝袜美腿美女视频网站| 国产精品a久久久久久| 欧美日韩一区二区免费视频| 久久久久久久影院| 成人午夜激情网| 亚洲欧美成人在线| 欧美一级淫片videoshd| 亚洲影院高清在线| 91中文在线视频| 欧美性xxxxxxxxx| 日韩欧美成人免费视频| 最近中文字幕2019免费| 亚洲大胆美女视频| 日韩在线欧美在线国产在线| 亚洲午夜未删减在线观看| 欧美日韩在线影院| 在线观看日韩视频| 尤物yw午夜国产精品视频| 欧美成人免费一级人片100| 在线精品播放av| 日本一本a高清免费不卡| 欧美成人免费全部| 日本一区二区不卡| 亚洲日本中文字幕免费在线不卡| www欧美日韩| 色视频www在线播放国产成人| 在线成人激情黄色| 国产一区二区成人| 国产精品久久久久久亚洲影视| 欧美日韩国产在线| 日本一区二区在线免费播放| 日韩精品视频在线播放| 亚洲精品一区二三区不卡| 欧洲美女7788成人免费视频| 777午夜精品福利在线观看| 亚洲精品视频播放| 中日韩午夜理伦电影免费| 国产亚洲一区精品| 中文国产成人精品| 国自在线精品视频| 欧美电影免费观看| 热re99久久精品国产66热| 久久久免费观看| 国产精品久久久久久久7电影| 亚洲高清不卡av| 亚洲欧美国产日韩天堂区| 国产精品扒开腿做| 国产精品久久久久久久一区探花| 亚洲欧美日韩网| 久久网福利资源网站| 欧美精品videos另类日本| 国产在线观看一区二区三区| 国产精品啪视频| 亚洲理论电影网| 欧美成人性生活| 91精品国产91久久久久久久久| 国产a级全部精品| xvideos亚洲| 国产精品久久久一区| 亚洲精品视频中文字幕| 国产91精品青草社区| 国产精品海角社区在线观看| 国产一区二区三区毛片| 久久久国产精品免费| 九九九久久国产免费| 免费不卡在线观看av| 韩国一区二区电影| 亚洲免费视频在线观看| 欧美激情精品久久久| 富二代精品短视频| 麻豆乱码国产一区二区三区| 欧美日韩国产在线看| 成人国产精品久久久| 亚洲一区二区三区乱码aⅴ|