C++Builder構(gòu)建算二十四點(diǎn)小游戲

字號(hào):

所謂算二十四點(diǎn)可能是不少讀者朋友童年喜歡玩的撲克游戲之一,玩法是:把一副撲克牌從A到10選出來均分成兩份,兩個(gè)小朋友各持一份即可開始游戲,每人隨機(jī)抽兩張出來組成四張牌,把這四張牌加減乘除湊成結(jié)果為二十四,先算出來的一方贏得對(duì)方的兩張牌,進(jìn)行下一輪,如果都沒計(jì)算出來為和局,直到把對(duì)方所有的撲克牌全部繳獲,游戲方告結(jié)束。
    想要自己算的最快嗎?那是讓程序來替你做個(gè)二十四點(diǎn)王。
    用程序?qū)崿F(xiàn)二十四點(diǎn)的算法很多,但大都比較繁雜。考慮到湊出結(jié)果的可能情況并不是太多,在這里我們將主要靠自己窮舉可能的演算式外加循環(huán)計(jì)算來實(shí)現(xiàn)。
    一、四張牌的排列組合四張牌A B C D共有多少種排列組合?公式為P44,即1×2×3×4=24共24種組合。
    為什么要把四張牌的所有排列組合都羅列出來呢?因?yàn)槲覀儗⒁捎玫乃惴ê?jiǎn)單說就是:窮舉所有算術(shù)式,比如A+B+C+D、A+B+C-D等等,讓每一個(gè)算術(shù)式的四個(gè)變量都去排列組合一次,尋找是否存在一個(gè)排列組合使算術(shù)式的值為24.舉個(gè)例子A+B+C-D:把四張牌(四個(gè)變量)放入表2的(Pos.1、Pos.2、Pos.3、Pos.4)四個(gè)位置中去,總共應(yīng)該有24種放置方法。
    如果在表3內(nèi)找到一個(gè)公式使A+B+C-D的值等于24,則打印出此算術(shù)式,否則說明此算術(shù)式不滿足需要,再進(jìn)行下一個(gè)算術(shù)式的變量的排列組合。如果窮舉所有的算術(shù)式都不能滿足要求,那么表示此題無解。
    一、窮舉所有算術(shù)式這個(gè)工作比較煩瑣,但很考驗(yàn)?zāi)愕倪壿嬔菟隳芰Α9P者按加、減、乘、除、括號(hào)的順序基本羅列完了所有算術(shù)式,表4—表6只羅列了一部分,剩下的讀者可以自己來完成:二、制作游戲有了前面的基礎(chǔ)后,開始編程。筆者在這里使用的是Borland C++ Builder,下面簡(jiǎn)單介紹一下制作流程并講解其中的難點(diǎn):1.動(dòng)手設(shè)計(jì)一個(gè)人性化的界面。
    2.程序編制流程:不管是手動(dòng)輸入四個(gè)數(shù)還是隨機(jī)產(chǎn)生,都把這四個(gè)數(shù)值存儲(chǔ)起來,然后進(jìn)行求解。求解時(shí)遵循這樣的規(guī)律:這里共有45種算術(shù)式(包括無解),從第一個(gè)算術(shù)式開始不斷調(diào)用排列組合,如果成立(結(jié)果為24),退出求解過程并輸出結(jié)果,不成立則嘗試下一個(gè)算術(shù)式,直到最后一個(gè)算術(shù)式的調(diào)用,如果都不滿足則打印無解。