freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于qt的黑白棋游戲開(kāi)發(fā)畢業(yè)論文(參考版)

2025-06-30 18:26本頁(yè)面
  

【正文】 由于我的水平有限,論文難免出現(xiàn)差錯(cuò)和遺漏,敬請(qǐng)老師批評(píng)指正。感謝互聯(lián)網(wǎng)上的前輩們,為我樹(shù)立了榜樣,同時(shí)留下了可供我參考的寶貴的資料和程序。 感謝所有幫助過(guò)我的其他人。 感謝三年來(lái)教我知識(shí)的其他老師,在即將完成學(xué)業(yè)的時(shí)刻,我向所有教過(guò)我的老師表示衷心的感謝和崇高的敬意。如果沒(méi)老師們的悉心指導(dǎo)也不會(huì)寫(xiě)出本程序,更不會(huì)學(xué)到Linux的編程和相關(guān)知識(shí)。感謝我的指導(dǎo)老師:佘老師。致謝必須感謝老師對(duì)我學(xué)習(xí)的支持,精神的支持。那么提高算法的精確度,避免無(wú)謂的搜索是計(jì)算機(jī)下棋技術(shù)下一個(gè)需要解決的問(wèn)題。 人工智能下棋技術(shù)經(jīng)過(guò)十余年的發(fā)展,取得了很多非常優(yōu)秀的研究成果。我們專(zhuān)業(yè)并未開(kāi)設(shè)過(guò)與人工智能相關(guān)的課程,但由于我對(duì)此感興趣,在論文選題時(shí)毅然選擇了這個(gè)挑戰(zhàn)非常大的關(guān)于人工智能的題目,由于我自學(xué)能力和時(shí)間有限,現(xiàn)在的黑白棋AI部分還處于初級(jí)階段,但我會(huì)堅(jiān)持不懈的努力,將黑白棋程序不斷完善。 對(duì)于計(jì)時(shí)功能和先后手選擇,很容易實(shí)現(xiàn)。本程序可以實(shí)現(xiàn)雙人對(duì)戰(zhàn)、人機(jī)對(duì)戰(zhàn)、全局棋盤(pán)悔棋等黑白棋功能,界面友好。單人模式下存在一處bug,但影響到程序的可執(zhí)行性,應(yīng)該得到修正。 悔棋測(cè)試由于單人模式每次需要同時(shí)悔棋兩步,因此也要單獨(dú)測(cè)試,經(jīng)過(guò)測(cè)試,符合要求,測(cè)試成功! 綜合測(cè)試報(bào)告從以上的測(cè)試方法和測(cè)試結(jié)果可以看出,該游戲的在雙人模式下能完全正確的運(yùn)行,與當(dāng)初的預(yù)想一致。 測(cè)試失敗。 查找原因,每次電腦思考都是固定套用每次落子切換走棋方的方法,致使一方PASS,本不該切換走棋方的,仍然切換的錯(cuò)誤情況,后經(jīng)改進(jìn)為每步棋由哪方走棋的數(shù)組記錄,錯(cuò)誤得以解決。 PASS情況的測(cè)試由于單人模式需要進(jìn)行思考,所以中途可能會(huì)造成遇到PASS情況,致使該步走棋方發(fā)生錯(cuò)誤,比如本來(lái)該白棋走的結(jié)果卻是黑棋走。 單人模式下的測(cè)試單人模式是雙人模式的一個(gè)特殊情況,因此有些測(cè)試和雙人模式相同,不用反復(fù)測(cè)試,只需測(cè)試對(duì)方走棋是否符合規(guī)則就行。在悔棋中途,如果玩家改變落子,則只能恢復(fù)至該處,不能也不應(yīng)該繼續(xù)回復(fù)原本沒(méi)有恢復(fù)的棋步。雙人模式是游戲進(jìn)行的基礎(chǔ),因此此部分的測(cè)試較多,且具有代表性。大量統(tǒng)計(jì)資料表明,系統(tǒng)測(cè)試的工作量往往占管理系統(tǒng)開(kāi)發(fā)總工作量的40%以上。系統(tǒng)中通??赡茈[藏著錯(cuò)誤和缺陷,若將未經(jīng)周密測(cè)試的系統(tǒng)投入運(yùn)行,將會(huì)造成難以想象的后果。早在1973年, ,測(cè)試是對(duì)程序或系統(tǒng)能否完成特定任務(wù)建立信心的過(guò)程。第六章 系統(tǒng)測(cè)試系統(tǒng)測(cè)試的目的主要在于發(fā)現(xiàn)錯(cuò)誤,找出軟件的缺陷和隱患,是確保軟件質(zhì)量的重要方法。 而在中期時(shí)則以多種估值通過(guò)賦予權(quán)值,統(tǒng)計(jì)出綜合估值,選取最大估值位置落棋。}使用了一些戰(zhàn)術(shù),使計(jì)算機(jī)能夠了解當(dāng)前棋局的情況,最終的目的讓計(jì)算機(jī)能夠選擇一個(gè)合理的位置落子。 } if (weizhi[i][j].state==0) move++。j++)i++) for (int j=0。 for (int i=0。 int move = 0。如此對(duì)所有能落子的位置進(jìn)行檢測(cè),找出一個(gè)能讓對(duì)手行動(dòng)力變得最小的位置落子,該函數(shù)mobility()原理為對(duì)棋盤(pán)進(jìn)行搜索,找出所有標(biāo)志為0的格子的個(gè)數(shù),即為該處行動(dòng)力。分析的過(guò)程就是先假設(shè)計(jì)算機(jī)在某個(gè)位置上落子,然后馬上再次調(diào)用檢測(cè)行動(dòng)力函數(shù),不過(guò)這次是檢測(cè)對(duì)手的行動(dòng)力。那么如何能讓計(jì)算機(jī)懂得這個(gè)道理呢?這就要求計(jì)算機(jī)具有“思考”的能力。前面已經(jīng)介紹了通過(guò)cube(int x,int y)和canbedrop(int x,int y,int whom)進(jìn)行掃描的方法,對(duì)棋盤(pán)的掃描工作就比較簡(jiǎn)單了,這里就不再累述。 電腦戰(zhàn)術(shù)分析在這一節(jié)中將介紹計(jì)算機(jī)是如何對(duì)棋盤(pán)進(jìn)行分析,然后選擇一個(gè)合理的位置進(jìn)行下棋的。 游戲結(jié)束時(shí),直觀顯示雙方棋子個(gè)數(shù),由于黑白棋是靠子數(shù)多少?zèng)Q定勝負(fù),因此為了美觀我沒(méi)有加入對(duì)話(huà)框提示輸贏。 在這些算法中還會(huì)用到如下一些子函數(shù):count(int x)統(tǒng)計(jì)標(biāo)記為x的一方棋子個(gè)數(shù);middlemain(int x)中期搜索函數(shù)的主要搜索過(guò)程;endmain()終局搜索函數(shù)的主要搜索過(guò)程;valuemiddle()中期搜索的綜合估值函數(shù);mobility()行動(dòng)力函數(shù);danger()危險(xiǎn)位置函數(shù)。AI算法分為startserch(),負(fù)責(zé)開(kāi)局110步,middleserch()負(fù)責(zé)1150步,50步以后直至終局由endserch()負(fù)責(zé)。 每走一步棋,自動(dòng)調(diào)用繪圖函數(shù)(paintEvent(QPaintEvent *e))進(jìn)行界面重繪。 走棋行進(jìn)過(guò)程中,可隨時(shí)通過(guò)點(diǎn)擊棋盤(pán)上方的功能控制菜單,進(jìn)行悔棋(backward())、悔棋回復(fù)(forward())、單人雙人模式切換(doubletosingle())、難度選擇、顯示提示位置等功能。 } 而判斷可下子位置函數(shù)canbedrop(int x,int y,int whom)的思路和翻轉(zhuǎn)函數(shù)類(lèi)似,也是進(jìn)行8方向的判斷。 } weizhi[x][yi].state = whom。i++) for (int i = 1。 if (weizhi[x][yk].state == whom) if (weizhi[x][yk].state == 0 || weizhi[x][yk].state == 2 ||weizhi[x][yk].state == 2) break。k++) for (int k=2。 weizhi[x][y1].state == (1)*whom) //if (y1 amp。在調(diào)用onestep(int x,int y)函數(shù)時(shí),程序首先通過(guò)mousePressEvent(QMouseEvent *e)函數(shù)獲得的(x,y)坐標(biāo),在棋盤(pán)(x,y)位置放置一枚該方棋子,然后檢測(cè)周?chē)芊D(zhuǎn)的棋子并翻轉(zhuǎn)(reverse(int x,int y,int whom))、之后判斷出對(duì)方可走棋位置(canbedrop(int x,int y,int whom)),并交由對(duì)方走棋。玩家走一步棋之后,如果是單人模式執(zhí)行,則交由電腦走棋。) mousePressEvent(QMouseEvent *e)函數(shù)的執(zhí)行過(guò)程如下:首先通過(guò)點(diǎn)擊鼠標(biāo)位置獲取點(diǎn)擊坐標(biāo),并判斷該處是否能下子,不能下子退出該函數(shù)。 程序首次打開(kāi),執(zhí)行initialize()函數(shù)初始化棋局,用戶(hù)可以直接走棋或者選擇單人模式等一些功能,當(dāng)用戶(hù)點(diǎn)擊棋盤(pán)某一位置時(shí),響應(yīng)mousePressEvent(QMouseEvent *e)函數(shù),判斷鼠標(biāo)點(diǎn)擊位置,如果能下棋則執(zhí)行onestep(int x,int y)函數(shù)在該方格內(nèi)走一步棋。QObject::connect(radio_single, SIGNAL(clicked()), Form, SLOT(doubletosingle())),該處選中,執(zhí)行雙人到單人模式切換函數(shù)doubletosingle(),判斷如果該電腦走棋,則電腦走一步棋。QObject::connect(radio_double, SIGNAL(clicked(bool)), radioButton_lv3, SLOT(setDisabled(bool)))。QObject::connect(radio_double, SIGN
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1