vc++24點(diǎn)游戲的開(kāi)發(fā)和實(shí)現(xiàn).doc_第1頁(yè)
vc++24點(diǎn)游戲的開(kāi)發(fā)和實(shí)現(xiàn).doc_第2頁(yè)
vc++24點(diǎn)游戲的開(kāi)發(fā)和實(shí)現(xiàn).doc_第3頁(yè)
vc++24點(diǎn)游戲的開(kāi)發(fā)和實(shí)現(xiàn).doc_第4頁(yè)
vc++24點(diǎn)游戲的開(kāi)發(fā)和實(shí)現(xiàn).doc_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

124點(diǎn)游戲的開(kāi)發(fā)和實(shí)現(xiàn)摘要:近年來(lái),隨著經(jīng)濟(jì)的日益發(fā)展,人們的生活水平不斷提高,生活質(zhì)量也在漸漸的改善。適當(dāng)?shù)膴蕵?lè)游戲?qū)θ藗兊臉I(yè)余生活是不可必缺的。說(shuō)到娛樂(lè)游戲,人們可能會(huì)想到網(wǎng)絡(luò)上許許多多讓人迷戀的網(wǎng)絡(luò)游戲,比如說(shuō),傳奇,奇跡,cs等等。是的,的確這些游戲給人們的業(yè)余生活添加了很多樂(lè)趣。借鑒網(wǎng)上的邊鋒游戲,我用vc+開(kāi)發(fā)設(shè)計(jì)了24點(diǎn)游戲的實(shí)現(xiàn)算法,并在windows圖形環(huán)境下設(shè)計(jì)出一個(gè)人機(jī)交互的游戲系統(tǒng)(類(lèi)似于紙牌游戲)。關(guān)鍵詞:窮舉法棧遞歸函數(shù)Thedevelopmentandrealizationof24piontsgameAbstract:Recently,withthedevelopmentofeconomic,thepeopleslifebecomesbetterandbetter,lifeconditionalsoisimprovingmoreandmore.Properrecreationisindispensableinthepeoplespasttimelife.Mentionedtothegame,peoplemayassociatemanyfascinatedonlinegames,suchasLegend,MU,CSandsoon.Certainly,thesegamesenrichpeopleslifewithmoreandmorejoys.Usingthewinggameforreference,Idevelopedanddesignedtherealizationarithmeticof24pointsgame.NextIdesignedahuman-computeralternantgamesystem(similartocardgame).Keyword:enumeratingmethodstackrecursivefunction2124點(diǎn)游戲算法實(shí)現(xiàn)1.124點(diǎn)游戲簡(jiǎn)介要開(kāi)發(fā)一個(gè)游戲不是那么容易的,哪怕是簡(jiǎn)單的算術(shù)游戲。要是沒(méi)有一定的專業(yè)知識(shí),沒(méi)有一定的思維能力是不行的。24點(diǎn)游戲是一個(gè)傳統(tǒng)的算術(shù)游戲,其游戲之精髓就是考驗(yàn)人腦的反應(yīng)能力。所謂24點(diǎn)游戲,就是通過(guò)加,減,乘,除4則運(yùn)算,將給定的4個(gè)整數(shù)算出24。當(dāng)然,傳統(tǒng)的紙牌游戲其數(shù)字是有限定范圍的,一般是從1到13。經(jīng)統(tǒng)計(jì),當(dāng)算的目標(biāo)數(shù)把24改為2的時(shí)候,獨(dú)立解數(shù)更多,就是解的形式趣于集中化,大多數(shù)最后一步用減法(如:2*8-3*5)。游戲時(shí)會(huì)感到單調(diào)。由于24的因數(shù)多,解的形式就豐富,能充分發(fā)掘游戲者數(shù)學(xué)發(fā)散思維能力。要做好一個(gè)簡(jiǎn)單的24點(diǎn)游戲要具備很多知識(shí)。其中最主要的思想就是,24點(diǎn)的表達(dá)式要怎樣行成,這是此游戲的關(guān)鍵。而要做一個(gè)完美的24點(diǎn)紙牌游戲,則需要的知識(shí)將會(huì)更多。現(xiàn)今,網(wǎng)絡(luò)上的紙牌游戲數(shù)不甚數(shù),比較出名的有聯(lián)眾游戲,邊鋒游戲,qq游戲。當(dāng)然,他們的開(kāi)發(fā)隊(duì)伍龐大之極不是我們個(gè)人可以比及的。因此要一個(gè)人做好一個(gè)比較完美的游戲,是需要一定的游戲天分。以下我就開(kāi)發(fā)24點(diǎn)游戲的幾個(gè)關(guān)鍵算法和分析做詳細(xì)的剖析。1.224點(diǎn)游戲的算法1.2.124點(diǎn)算法(1)24點(diǎn)游戲的算法,其中最主要的思想就是窮舉法。所謂窮舉法就是列出4個(gè)數(shù)字加減乘除的各種可能性,包括括號(hào)的算法。我們可以將表達(dá)式分成以下幾種:首先我們將4個(gè)數(shù)設(shè)為a,b,c,d,,其中算術(shù)符號(hào)有+,*,/,(,)。其中有效的表達(dá)式有a*(b-c/b),a*b-c*d,等等。列出所有有效的表達(dá)式。其中我們用枚舉類(lèi)型將符號(hào)定義成數(shù)字常量,比如用1表示+,2表示-等。如下是我對(duì)窮舉法的一種編程語(yǔ)言。在編程的頭部要對(duì)變量做下定義。其中a,b,c,d的范圍是1到13。因?yàn)閭鹘y(tǒng)的24點(diǎn)游戲是紙牌游戲,而紙牌游戲的數(shù)字就是從1到13,其中a是1,K是13,Q是12,J是11,其他的就是牌面的數(shù)字。這就需要在定義變量的時(shí)候要有限制。在vc+中的MFC編程中,在定義控件的變量范圍可以直接填寫(xiě)變量的最大和最小,在此編程中的最大是13,最小是1。這就給編程寫(xiě)語(yǔ)句帶3來(lái)了方便(因?yàn)槠渥詣?dòng)會(huì)生成語(yǔ)句)。下面我介紹下窮舉法的主要實(shí)現(xiàn),我們知道要實(shí)現(xiàn)24點(diǎn)的算法,就是通過(guò)4個(gè)數(shù)字,4個(gè)運(yùn)算符號(hào)和2對(duì)括號(hào)(最多為2對(duì)),通過(guò)各種組合判斷其結(jié)果是否為24。我們用a,b,c,d代替4個(gè)數(shù)字。考慮每種可能,總的算法就有7種可能。分別為:1,沒(méi)括號(hào)的(形如a*b*c*d);2有括號(hào)的(形如(a*b)*c*d);3有括號(hào)的(形如(a*b*c)*d);4有括號(hào)的(形如a*(b*c)*d);5有括號(hào)的(形如(a*b)*(c*d));6有括號(hào)的(形如(a*b)*c)*d);7有括號(hào)的(形如(a*(b*c)*d)。接下來(lái)就是對(duì)每一種進(jìn)行分析判斷。我們拿2種情況做為例子,一種是沒(méi)括號(hào)的,一種有括號(hào)的。先拿沒(méi)括號(hào)的分析。我們知道沒(méi)括號(hào)的式子包括其運(yùn)算符和數(shù)字總共為7個(gè)(3個(gè)運(yùn)算符,4個(gè)數(shù)字),于是我們定義一個(gè)數(shù)組,用于存放運(yùn)算符和數(shù)字。運(yùn)算符我們可以用枚舉變量來(lái)定義,首先我們通過(guò)循環(huán)語(yǔ)句形成一個(gè)表達(dá)式子(但這個(gè)表達(dá)式的運(yùn)算循序是亂的)。表達(dá)式子有很多種情況,利用循環(huán)語(yǔ)句我們可以一一將其寫(xiě)出,例如(a+b+c+d,a+b+c-d,a+b+c*d,a+b+c/d.等等)生成表達(dá)式子的后,接著就是判別運(yùn)算順序。在沒(méi)有括號(hào)存在的情況下,我們令其先運(yùn)算*,/。這個(gè)順序的選擇很輕松,我們可以定義一個(gè)bool類(lèi)型的函數(shù),我們對(duì)數(shù)組進(jìn)行掃描,當(dāng)掃描到/,*,其返回真值,就直接進(jìn)行運(yùn)算。依次照樣進(jìn)行掃描,當(dāng)所有的/,*運(yùn)算都進(jìn)行為止,接著將/,*運(yùn)算生成的結(jié)果合并棧(即將運(yùn)算的結(jié)果放在一個(gè)變量中),接著就對(duì)其與下一個(gè)數(shù)字進(jìn)行運(yùn)算,直到所有的值都計(jì)算出來(lái)了,最后將最后運(yùn)算結(jié)果放于一個(gè)變量中。我們將這個(gè)變量的值和24相減,假如其值是在1E-6之外,則說(shuō)明此運(yùn)算式能計(jì)算出24。接下來(lái)我們來(lái)做第2種有括號(hào)的算法,有括號(hào)的算法和沒(méi)括號(hào)的算法就是在判斷運(yùn)算循序的時(shí)候有所差別。我們知道,括號(hào)就是用來(lái)改變運(yùn)算順序而添加的。判斷括號(hào)的先后順序,我們同樣可以用一個(gè)bool類(lèi)型的函數(shù)來(lái)判別,在生成表達(dá)式要判斷其運(yùn)算順序時(shí),我們首先掃描表達(dá)式存放的數(shù)組,假如掃描到左括號(hào),則將先對(duì)左括號(hào)后面的式子進(jìn)行運(yùn)算,接著在是對(duì)/,*的優(yōu)先級(jí)進(jìn)行計(jì)算。在第2種(形如(a*b)*c*d)的情況下,我們先將a,b先進(jìn)行運(yùn)算,生成其值,并將結(jié)果存放與另一個(gè)變量中,接著將得到的初步結(jié)果和c和d進(jìn)行運(yùn)算,最后得到總的結(jié)果。將其總結(jié)果和24相減,若其值小于1E-6則說(shuō)明此表達(dá)式能算出24。接下來(lái)幾種有括號(hào)的算法和第2種情況類(lèi)似,我們不做詳細(xì)的說(shuō)明。以上就是窮舉法的基本實(shí)現(xiàn)算法。41.2.224點(diǎn)游戲算法(2)24點(diǎn)游戲的算法各種各樣,各有千秋,現(xiàn)在讓我們來(lái)討論另一種24點(diǎn)游戲算法。此算法是在dos下實(shí)現(xiàn)的,但其思想明確,語(yǔ)句簡(jiǎn)短。其主要思想是簡(jiǎn)化算法,他將24點(diǎn)的算法排序分成如下幾種,如下我們用a,b來(lái)代替變量。他將其分成如下6種情況,分別是a+b,a-b,b-a,a*b,a/b,b/a這6種情況,我們知道a+b和b+a是一樣的,a*b和b*a是一樣的。這樣就可以省去2種算法。提高系統(tǒng)的使用效率,內(nèi)存占用量小。還有其第2個(gè)思想是在判別24點(diǎn)正確與否的時(shí)候,采用了與24點(diǎn)相減絕對(duì)直在1E-6之外則判別其為正確,這就給運(yùn)算帶來(lái)了精確度,就如5551等的數(shù)字也可以輕松算出,不會(huì)略過(guò)了。如下我們通過(guò)一段程序來(lái)看看其主程序段。boolSearch(intn)if(n=1)if(fabs(number0-NUMBER_TO_CAL)PRECISION)coutexpression0endl;returntrue;elsereturnfalse;for(inti=0;in;i+)for(intj=i+1;jn;j+)doublea,b;stringexpa,expb;a=numberi;b=numberj;numberj=numbern-1;expa=expressioni;expb=expressionj;express

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論