第一篇:【精美排版】軟件考試掃雷游戲
軟件測試--掃雷游戲
2
———————————————————————————————— 作者:
———————————————————————————————— 日期:
3
軟件測試 實(shí) 驗(yàn) 報(bào) 告(20 15
-20 16 學(xué)年第 2 學(xué)期)
學(xué)
號(hào):
學(xué)生姓名:
專業(yè)班級(jí):
學(xué)
院:
學(xué)生成績:
41..引 言1.1
編寫 目的編寫該測試報(bào)告目的為:
(1).查找并總結(jié)該模塊程序所存在的問題;(2).為更改存在的問題,提供參考。
(3).評(píng)估測試測試執(zhí)行和測試計(jì)劃是否符合1.2 程序 功能
掃雷游戲中各個(gè)功能實(shí)現(xiàn)
1.3 測試 對(duì)象
掃雷軟件游戲規(guī)則測試
1.4 測試 方法
黑盒測試
2.測試 計(jì)劃
2.1、條件:
? 方塊當(dāng)前狀態(tài):標(biāo)識(shí)問號(hào)方塊、方塊初始狀態(tài)、方塊標(biāo)識(shí)紅旗、標(biāo)識(shí)數(shù)字 X 且周圍已標(biāo)記了 X 個(gè)雷、標(biāo)識(shí)數(shù)字 X 且周圍沒有標(biāo)記完 X 個(gè)雷,標(biāo)識(shí)數(shù)字 X 標(biāo)雷錯(cuò)誤 ? 鼠標(biāo)操作:左鍵、右鍵、雙擊 ? 方塊狀態(tài):有雷、無雷 2.2、動(dòng)作:
? 方塊白色 ? 方塊標(biāo)識(shí)問號(hào) ? 方塊標(biāo)識(shí)數(shù)字 ? 方塊旗子 ? 炸彈爆炸,游戲結(jié)束
5
? 未標(biāo)識(shí)方塊閃速 ? 周圍所有的非雷顯示 2.3、規(guī)則:
鼠標(biāo)當(dāng)前狀態(tài) A 1、標(biāo)識(shí)問號(hào)方塊=A1 2、方塊標(biāo)識(shí)紅旗=A2 3、方塊初始狀態(tài)=A3 4、標(biāo)識(shí)數(shù)字 X 且周圍已標(biāo)記正確了 X 個(gè)雷=A4 5、標(biāo)識(shí)數(shù)字 X 且周圍沒標(biāo) X 個(gè)雷=A5 6,標(biāo)識(shí)數(shù)字 X 且周圍標(biāo)雷錯(cuò)誤=A6 鼠標(biāo)動(dòng)作 B 1、點(diǎn)擊左鍵=B1 2、點(diǎn)擊右鍵=B2 3、雙擊左右鍵=B3 當(dāng)前方塊狀態(tài) 1、有雷 2、無雷
2.4、簡化公式:
6*3*2 =(1+1+1+1+1+1)*3*2 =1*3*2+1*2*2+1*3*2+1*1*1+1*1*1+1*1*1 =6+4+6+1+1+1 =19
6
7
2.5、掃雷判定表 鼠標(biāo)當(dāng)前狀態(tài) A1 A1 A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3 A3 A3 A4 A5 A6 鼠標(biāo)動(dòng)作 B1 B1 B2 B2 B3 B3 B2 B2 B3 B3 B1 B1 B2 B2 B3 B3 B3 B3 B3 方塊當(dāng)前狀態(tài) 有雷 無雷 有雷 無雷 有雷 無雷 有雷 無雷 有雷 無雷 有雷 無雷 有雷 無雷 有雷 無雷 無雷 無雷 無雷 回到初始
Y Y
方塊標(biāo)識(shí)紅旗
Y Y
方塊標(biāo)識(shí)問號(hào)
Y Y
方塊標(biāo)識(shí)數(shù)字
Y
Y
炸 彈 爆炸,游戲結(jié)束 Y
Y
Y 方塊閃速
Y Y
Y Y
Y Y
Y
周圍所有的非雷顯示
Y
2.6、化簡合并 鼠標(biāo)當(dāng)前狀態(tài) A1 A1 A1 A1 A2 A2 A3 A3 A3 A3 A4 A5 A6 鼠標(biāo)動(dòng)作 B1 B1 B2 B3 B2 B3 B1 B1 B2 B3 B3 B3 B3 方塊及周圍有無未發(fā)現(xiàn)的雷 有雷 無雷----------有雷 無雷------無雷 有雷 無雷 回到初始
Y
方塊標(biāo)識(shí)紅旗
Y
方塊標(biāo)識(shí)問號(hào)
Y
方塊標(biāo)識(shí)數(shù)字
Y
Y
Y
炸彈爆炸,游戲結(jié)束 Y
Y
Y Y 方塊閃速
Y
Y
Y
8
2.7、用例 編號(hào) 預(yù)置條件鼠標(biāo)當(dāng)前狀態(tài)
輸入 預(yù)期結(jié)果 1 標(biāo)識(shí)問號(hào)方塊 鼠標(biāo)左擊 點(diǎn)中炸彈,游戲結(jié)束 2 標(biāo)識(shí)問號(hào)方塊 鼠標(biāo)左擊 沒點(diǎn)中炸彈,方塊顯示數(shù)字 3 標(biāo)識(shí)問號(hào)方塊 鼠標(biāo)右擊 恢復(fù)到初始狀態(tài) 4 標(biāo)識(shí)問號(hào)方塊 雙擊左右鍵 方塊閃爍 5 方塊標(biāo)識(shí)紅旗 鼠標(biāo)右擊 方塊標(biāo)識(shí)變成問號(hào) 6 方塊標(biāo)識(shí)紅旗 雙擊左右鍵 方塊閃爍 7 方塊初始狀態(tài) 鼠標(biāo)左擊 點(diǎn)中炸彈,游戲結(jié)束 8 方塊初始狀態(tài) 鼠標(biāo)左擊 方塊標(biāo)識(shí)變成數(shù)字 9 方塊初始狀態(tài) 鼠標(biāo)右擊 方塊標(biāo)識(shí)變成紅旗 10 方塊初始狀態(tài) 雙擊左右鍵 方塊閃爍 11 標(biāo)識(shí)數(shù)字 X 且周圍已標(biāo)記正確了X 個(gè)雷 雙擊左右鍵 周圍初始狀態(tài)的方塊顯示數(shù)字 12 標(biāo)識(shí)數(shù)字 X 且周圍沒標(biāo) X 個(gè)雷 雙擊左右鍵 方塊閃爍 13 標(biāo)識(shí)數(shù)字 X 且周圍標(biāo)雷錯(cuò)誤 雙擊左右鍵 點(diǎn)中炸彈,游戲結(jié)束3 .測試 結(jié)果分析
3.1
結(jié)果 分析
在程序代碼基本完成后,經(jīng)過不斷的調(diào)試和修改,最后測試本次所設(shè)計(jì)的掃雷游戲能夠正常運(yùn)行,沒有出現(xiàn)明顯的錯(cuò)誤和漏洞,但是在一些細(xì)節(jié)方面仍然需要完善,總的來說本次設(shè)計(jì)在功能上已經(jīng)基本達(dá)到要求,在其他細(xì)節(jié)方面有待以后完善。
3.2 修改 建議
1.在游戲中可以假如一些聲音的提示,在游戲完成和失敗的時(shí)候彈出一些小的 Flash 動(dòng)畫。
2.完善一下掃雷英雄榜等。4..測試 評(píng)估
4.1
測試 任務(wù)評(píng)估
本次測試執(zhí)行準(zhǔn)備充足,完成了既定目標(biāo)。4.2 測試對(duì)象評(píng)估
測試對(duì)象尚未完善,不符合現(xiàn)階段測試質(zhì)量要求,存在著一些缺陷,本測試需要進(jìn)一步修正,重新進(jìn)行測試。
第二篇:C語言程序設(shè)計(jì)掃雷游戲?qū)嶒?yàn)報(bào)告
中南大學(xué)
程序設(shè)計(jì)基礎(chǔ)實(shí)踐報(bào)告
學(xué)生姓名 張?zhí)m蘭 學(xué) 院 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí) 物聯(lián)網(wǎng)工程1301班 完成時(shí)間 2014.1 題 目 設(shè)計(jì)一個(gè)和window系統(tǒng)類似的小游戲【挖地雷】
《計(jì)算機(jī)程序設(shè)計(jì)實(shí)踐》403591717.docx 目錄
1.課程設(shè)計(jì)內(nèi)容.............................................................................................3 2.課程設(shè)計(jì)目的.............................................................................................3 3.背景知識(shí)....................................................................................................3 4.工具/準(zhǔn)備工作............................................................................................5 5.設(shè)計(jì)步驟、方法.........................................................................................5
5.1.步驟1:步驟名稱(二級(jí)標(biāo)題).......................................................錯(cuò)誤!未定義書簽。
步驟1.1:步驟名稱(三級(jí)標(biāo)題)..............................................................................5 5.1.1.5.2.5.3.步驟2:步驟名稱..........................................................................錯(cuò)誤!未定義書簽。步驟n:步驟名稱..........................................................................錯(cuò)誤!未定義書簽。
6.設(shè)計(jì)結(jié)果及分析.........................................................................................5 7.設(shè)計(jì)結(jié)論..................................................................................................15 8.問題及心得體會(huì).......................................................................................16 9.對(duì)本設(shè)計(jì)過程及方法、手段的改進(jìn)建議....................................................17 10.參考文獻(xiàn)..................................................................................................17
《計(jì)算機(jī)程序設(shè)計(jì)實(shí)踐》403591717.docx
printf(“請(qǐng)輸入棋盤行列數(shù)(小于20且用逗號(hào)隔開):”);
scanf(“%d,%d”,&x,&y);
getchar();
printf(“請(qǐng)輸入雷的個(gè)數(shù):”);
scanf(“%d”,&b);
getchar();
break;
}
break;
}
else
{
printf(“輸入錯(cuò)誤請(qǐng)重新輸n”);
}
} while(begin){
system(“cls”);
InitialValue_game(&g);
InitialMine_game(&g);
print_game(&g,2);
NO=1;
while(NO)
{
printf(“Please choose:”);
scanf(“%d,%d”,&i,&j);getchar();if(-1 { switch(openmap(&g,i-1,j-1)) { case 1: print_game(&g,1); printf(“游戲結(jié)束!按回車鍵再來一局n”); 《計(jì)算機(jī)程序設(shè)計(jì)實(shí)踐》403591717.docx if(getchar()=='n')begin=1; else begin=0; NO=0; break; case 2: if(judge_game(&g)==b) { printf(“win!n”); print_game(&g,1); printf(“按回車鍵再來一局n”); if(getchar()=='n')begin=1; else begin=0; NO=0; break; } else print_game(&g,2);NO=1;break; default:break; } } else { printf(“你輸入錯(cuò)誤!請(qǐng)重新輸入n”); } } } } C語言程序設(shè)計(jì)報(bào)告 題目: 掃雷小游戲設(shè)計(jì) 電子通信與物理學(xué)院 日期:2018年7月 12 日 指導(dǎo)教師評(píng)語 目錄 1.課程設(shè)計(jì)內(nèi)容...........................................................................................................1 2.課程設(shè)計(jì)目的...........................................................................................................1 3.背景知識(shí)..................................................................................................................1 4.工具/準(zhǔn)備工作..........................................................................................................3 5.設(shè)計(jì)步驟、方法.....................................................................................................3 5.1........................................................................................................................3 5.2定義全局變量..................................................................................................4 5.3挖雷部分函數(shù)的分析.......................................................................................5 6.設(shè)計(jì)結(jié)果及分析.....................................................................................................11 7.設(shè)計(jì)結(jié)論...............................................................................................................16 8.參考文獻(xiàn)...............................................................................................................17 附錄...........................................................................................................................17 1.課程設(shè)計(jì)內(nèi)容 在計(jì)算機(jī)逐步滲入社會(huì)生活各個(gè)層面的今天,計(jì)算機(jī)已經(jīng)成為人們?nèi)粘I畹囊环郑絹碓蕉嗟娜耸褂糜?jì)算機(jī)辦公、娛樂等等。 掃雷游戲是Windows操作系統(tǒng)自帶的一款小游戲,在過去的幾年里,Windows操作系統(tǒng)歷經(jīng)數(shù)次換代更新,變得越來越龐大、復(fù)雜,功能也越來越強(qiáng)大,但是這款小游戲依然保持原來的容貌,可見這款小游戲受到越來越多人的喜愛。我利用C-free編寫了與它功能相仿的挖地雷游戲,寓學(xué)于樂。 即:設(shè)計(jì)一個(gè)功能與Windows中的挖雷游戲相同的小游戲。 2.課程設(shè)計(jì)目的 1.培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。 2.試學(xué)生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)思想和方法。3.提高對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛,協(xié)作攻關(guān)的基本素質(zhì)。4.培養(yǎng)勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來檢驗(yàn)理論,全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。 5.培養(yǎng)從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高從別人經(jīng)驗(yàn)中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。 6.對(duì)掌握知識(shí)的深度、運(yùn)用理論去處理問題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力、書面及口頭表達(dá)能力進(jìn)行考核 3.背景知識(shí) 游戲區(qū)包括雷區(qū)、地雷計(jì)數(shù)器(位于左上角,記錄剩余地雷數(shù))和計(jì)時(shí)器(位于 右上角,記錄游戲時(shí)間),確定大小的矩形雷區(qū)中隨機(jī)布置一定數(shù)量的地雷(初級(jí)為9*9個(gè)方塊10個(gè)雷,中級(jí)為16*16個(gè)方塊40個(gè)雷,高級(jí)為16*30個(gè)方塊99個(gè)雷,自定義級(jí)別可以自己設(shè)定雷區(qū)大小和雷數(shù),但是雷區(qū)大小不能超過24*30),玩家需要盡快找出雷區(qū)中的所有不是地雷的方塊,而不許踩到地雷。 游戲的基本操作包括左鍵單擊(Left Click)、右鍵單擊(Right Click)、雙擊(Chording)三種。其中左鍵用于打開安全的格子,推進(jìn)游戲進(jìn)度;右鍵用于標(biāo)記地雷,以輔助判斷,或?yàn)榻酉聛淼碾p擊做準(zhǔn)備;雙擊在一個(gè)數(shù)字周圍的地雷標(biāo)記完時(shí),相當(dāng)于對(duì)數(shù)字周圍未打開的方塊均進(jìn)行一次左鍵單擊操作: 左鍵單擊:在判斷出不是雷的方塊上按下左鍵,可以打開該方塊。如果方塊上出現(xiàn)數(shù)字,則該數(shù)字表示其周圍3×3區(qū)域中的地雷數(shù)(一般為8個(gè)格子,對(duì)于邊塊為5個(gè)格子,對(duì)于角塊為3個(gè)格子。所以掃雷中最大的數(shù)字為8);如果方塊上為空(相當(dāng)于0),則可以遞歸地打開與空相鄰的方塊;如果不幸觸雷,則游戲結(jié)束。 雙擊:同時(shí)按下左鍵和右鍵完成雙擊。當(dāng)雙擊位置周圍已標(biāo)記雷數(shù)等于該位置數(shù)字時(shí)操作有效,相當(dāng)于對(duì)該數(shù)字周圍未打開的方塊均進(jìn)行一次左鍵單擊操作。地雷未標(biāo)記完全時(shí)使用雙擊無效。若數(shù)字周圍有標(biāo)錯(cuò)的地雷,則游戲結(jié)束,標(biāo)錯(cuò)的地雷上會(huì)顯示一個(gè)“ ×”(見下圖) 掃雷的設(shè)計(jì)原理: 掃雷游戲分為幾個(gè)步驟: 第一步,使用二維數(shù)組表示地圖; 第二步,隨機(jī)生成幾個(gè)地雷; 第三步,點(diǎn)擊方格的反應(yīng),計(jì)算每個(gè)非雷區(qū)方格點(diǎn)開后的數(shù)字; 第四步,當(dāng)方格數(shù)字為0的情況; 第五步,當(dāng)方格為地雷的情況。 第一步地圖的大小和第二步地雷的數(shù)量都應(yīng)該是程序中給定的,或者玩家輸入的。這個(gè)是多少自己決定吧。第三步,計(jì)算非雷區(qū)方格點(diǎn)開后的數(shù)字就把這個(gè)方格在二維數(shù)組中周圍八個(gè)方向的方格是否是地雷都檢查一遍,一定要注意不要越出數(shù)組邊界。這個(gè)數(shù)字可以在游戲初始化時(shí)全都計(jì)算好,也可以在玩家點(diǎn)擊的時(shí)候再計(jì)算。點(diǎn) 擊非雷區(qū)方格,顯示數(shù)字,這個(gè)方格標(biāo)記為“已點(diǎn)過”。第四步,當(dāng)方格數(shù)字為0時(shí),這里要用到遞歸調(diào)用,就是讓程序自動(dòng)“點(diǎn)擊”這個(gè)數(shù)字為0方格周圍的八個(gè)方格,然后再看結(jié)果,如果不是0,就停止,如果是0,依然遞歸調(diào)用,直到?jīng)]有0為止,或者直到點(diǎn)遍所有方格為止,一定要注意不要越出數(shù)組邊界。第五步,很簡單,宣布玩家死亡就可以了。 4.準(zhǔn)備工作 查閱相關(guān)資料,了解掃雷的的玩法,了解掃雷的設(shè)計(jì)思想方法。借鑒他人寫過的程序,從中找到突破口。從程序中了解需要的各種函數(shù)準(zhǔn)備,再進(jìn)一步獲悉該函數(shù)的功能與使用方法。 對(duì)自己要設(shè)計(jì)的挖地雷游戲進(jìn)行功能分析,大致如下: 總體游戲過程分析:在屏幕上顯示一個(gè)游戲界面,雷區(qū)范圍內(nèi)預(yù)先埋設(shè)了一定數(shù)量的隨機(jī)分布的地雷(用數(shù)字9代替地雷);玩家通過從鍵盤中輸入(行數(shù)X,列數(shù)Y)↙進(jìn)行點(diǎn)擊;若能點(diǎn)中所有非雷區(qū),則游戲勝利;否則踩雷,游戲失敗。簡易版掃雷游戲要具備以下功能: 1)開局:首先選擇游戲等級(jí),然后生成不同等級(jí)的雷區(qū)界面。游戲等級(jí)分 為三級(jí):各等級(jí)行列數(shù)為———:簡單:10× 10、普通:15× 15、困難:20×20;雷區(qū)每個(gè)*號(hào)下面或埋藏有1個(gè)地雷,或者沒有地雷; 2)挖雷:從鍵盤中輸入(行數(shù)X,列數(shù)Y),并按回車鍵,可挖開它;若所揭方塊下有9,則踩雷,此時(shí)所有含地雷的塊都出現(xiàn)9,該局游戲失敗;如果方塊上出現(xiàn)數(shù)字,它代表 在它周圍的8個(gè)方塊中共有多少顆地雷; 3)輸入:通過鍵盤輸入相關(guān)指示信息; 4)輸出:提示游戲失敗,是否繼續(xù)再來一遍; 5.設(shè)計(jì)步驟、方法 5.1主函數(shù)第一步,寫出主程序的基本框架,確定各子模塊名字和參數(shù)。具體的函數(shù)流程如圖5-3 所示: 定義使用到的常數(shù)、全局變量、函數(shù)原型說明。然后初始化圖形系統(tǒng),調(diào)用游戲控制函數(shù),游戲只接受鍵盤,通過鼠標(biāo)結(jié)束游戲,關(guān)閉系統(tǒng),退出游戲。 主控模塊的各子模塊說明: void InitialValue_game()用于棋盤初始化; InitialMine_game()用于棋盤的隨機(jī)布雷; void print_game()用于打印棋盤; int judge_game()用于判斷游戲是否結(jié)束; int openmap()用于點(diǎn)開地圖; 5.2定義全局變量 #include 5.3挖雷部分函數(shù)的分析 void InitialValue_game(struct Games *g){ int i,j;for(i=0;i InitialMine_game(struct Games *g){ 5 int i,j,next1,next2;int sum=0;srand((unsigned)time(NULL));while(1){ i=rand()%x;j=rand()%y;if((*g).game_int[i][j]==9)continue;(*g).game_int[i][j]=9;++sum;for(next1=-1;next1<2;next1++){ for(next2=-1;next2<2;next2++){ if(-1 void print_game(struct Games *g,int Logo){ int i,j;int a[s];for(i=0;i int judge_game(struct Games *g){ int sum=0;int i,j;for(i=0;i 運(yùn)行第一步: 按ENTER鍵進(jìn)入: 11 選擇游戲難度(簡單、普通、困難、任意),按ENTER鍵進(jìn)入: 簡單難度: 普通難度: 困難難度: 任意難度: 游戲界面,開始從鍵盤輸入數(shù)字,格式為(行數(shù)X,列數(shù)Y),點(diǎn)擊Enter鍵: 游戲結(jié)束頁面: 7.設(shè)計(jì)結(jié)論 一學(xué)期結(jié)束了,對(duì)C語言也有了一些認(rèn)識(shí),不過自我感覺學(xué)得不太好,好在還是學(xué)到了知識(shí): 了解了C的發(fā)展以及編程的基本步驟,學(xué)會(huì)了Printf輸出語句,C語言的運(yùn)算,知道了有哪幾種數(shù)據(jù)類型,還有我覺得經(jīng)常用的if語句,if--eles語句,for循環(huán),while 語句,do-while語句等等,基本會(huì)用數(shù)組和指針,還有字符串的處理,對(duì)了還有才學(xué)的結(jié)構(gòu)體。 還有許多知識(shí)點(diǎn),不一羅列了,總之C語言要學(xué)的東西太多了,聽大三的都說C很簡單,但我并不認(rèn)為他像人們說的那樣簡單,C是最基礎(chǔ)的,基礎(chǔ)不代表簡單,也可能是我沒學(xué)好才有這樣的感受。 在這次設(shè)計(jì)過程中,不僅復(fù)習(xí)課本上所學(xué)知識(shí),還通過查資料、問同學(xué)學(xué)到了課本上沒有的知識(shí)。從而啟發(fā)我,要想寫好程序,在寫好課本知識(shí)的同時(shí)還需要多讀和專業(yè)有關(guān)的一些書籍,同時(shí)還需要多動(dòng)腦子,盡量把所學(xué)的知識(shí)綜合起來應(yīng)用,力爭寫出完美的程序。除此之外,我還得到了一些有用的教訓(xùn):寫程序時(shí)必須要細(xì)心,不能輸錯(cuò)一個(gè)字符標(biāo)點(diǎn),就連全角半角也得注意。在修改時(shí)要有耐心,編譯出錯(cuò)后必須逐個(gè)錯(cuò)誤去改正,絕不能心急浮躁,否則修改之后還會(huì)有新的錯(cuò)誤。 8.參考文獻(xiàn) 郭翠英主編的《C語言課程設(shè)計(jì)實(shí)例精編》; 張芳妮 呂波 譯《C語言編程常見問題解答》; 譚浩強(qiáng)《C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版)》。伍俊良.VB課程設(shè)計(jì)與系統(tǒng)開發(fā)案例[M].北京 附錄: #include main(){ int i,j;/*定義i,j變量*/ int NO;int begin=1;int h;/*確定雷的個(gè)數(shù)*/ while(begin){ printf(“nnnnnnn” “ttt=================================n” “ttt 歡迎進(jìn)入掃雷 nnn” “ttt 按回車鍵繼續(xù) n” “ttt=================================n” “ttt n”);getchar();/*游戲開始界面*/ system(“cls”);printf(“ nnnnnnnnn”);printf(“ 請(qǐng)選擇游戲難度:nn”);printf(“ 1簡單難度nn”);printf(“ 2普通難度nn”);printf(“ 3困難難度nn”);printf(“ 4自定義難度nn”);scanf(“%d”,&h);getchar();/*確定游戲難度*/ if(0 void InitialValue_game(struct Games *g){ int i,j;for(i=0;i InitialMine_game(struct Games *g){ int i,j,next1,next2;int sum=0;srand((unsigned)time(NULL));while(1){ i=rand()%x;j=rand()%y;if((*g).game_int[i][j]==9)continue;(*g).game_int[i][j]=9;++sum;for(next1=-1;next1<2;next1++){ for(next2=-1;next2<2;next2++){ if(-1 void print_game(struct Games *g,int Logo){ int i,j;int a[s];for(i=0;i int judge_game(struct Games *g){ int sum=0;int i,j;for(i=0;i 一、設(shè)計(jì)任務(wù)與要求 掃雷游戲的基本要求 Windows 2000/XP系統(tǒng)提供的掃雷游戲是一個(gè)很有趣的游戲。本章的課程設(shè)計(jì)使用Java語言編寫一個(gè)與其類似的掃雷游戲。具體要求如下: (1)掃雷游戲分為初級(jí)、中級(jí)和高級(jí)三個(gè)級(jí)別,掃雷英雄榜存儲(chǔ)每個(gè)級(jí)別的最好成績,即挖出全部的地雷且用時(shí)最少者。單擊游戲菜單可以選擇“初級(jí)”、“中級(jí)”和“高級(jí)”或“查看英雄版”。 (2)選擇級(jí)別后將出現(xiàn)相應(yīng)級(jí)別的掃雷區(qū)域,這是用戶使用鼠標(biāo)左鍵單擊雷區(qū)中任何一個(gè)方塊便啟動(dòng)計(jì)時(shí)器。 (3)用戶要揭開某個(gè)方塊,可單擊它。若所揭方塊下有淚,用戶便輸了這一局,若所揭方塊下五雷,則顯示一個(gè)數(shù)字,該數(shù)字代表方塊的周圍的8個(gè)方塊中共有多少顆雷。 (4)如果用戶認(rèn)為某個(gè)方塊下埋著雷,單擊右鍵可以在方塊上標(biāo)識(shí)一個(gè)用戶認(rèn)為是雷的圖標(biāo),即給出一個(gè)掃雷標(biāo)記。用戶每標(biāo)記出一個(gè)掃雷標(biāo)記(無論用戶的標(biāo)記是否正確),程序?qū)@示的剩余雷數(shù)減少一個(gè)。 (5)掃雷勝利后(用時(shí)最少者),程序彈出保存成績的對(duì)話框。 (6)用戶可以選擇標(biāo)記疑問的方塊,用可以勾選游戲菜單下的標(biāo)記(或者用快捷鍵alt+G 然后M)即可,此時(shí)雙擊右鍵并可出現(xiàn)“?”標(biāo)記。另有顏色選項(xiàng),當(dāng)用戶勾選此項(xiàng)時(shí),游戲?qū)⒁宰畹蛨D像像素來顯示。 (7)如果用戶需要即使提示聲,并可選中聲音選項(xiàng),此時(shí)將聽到計(jì)時(shí)的卡塔聲。當(dāng)用戶點(diǎn)中雷時(shí),將有爆炸聲產(chǎn)生,勝利時(shí),將有凱旋的旋律播放,此時(shí)企鵝出現(xiàn)歡悅表情。 二、需求分析 1、掃雷游戲概述 掃雷是一種具有迷惑性的對(duì)記憶和推理能力的簡單測試,它是長久以來最受歡迎的Windows游戲之一。游戲目標(biāo):找出空方塊,同時(shí)避免觸雷。 2、掃雷的操作方法 游戲主區(qū)域由很多個(gè)方格組成。使用鼠標(biāo)隨機(jī)點(diǎn)擊一個(gè)方格,方格即被打開并顯示出方格中的數(shù)字;方格中數(shù)字則表示其周圍的8個(gè)方格隱藏了幾顆雷;如果點(diǎn)開的格子為空白格,即其周圍有0顆雷,則其周圍格子自動(dòng)打開。 例如,方格中出現(xiàn)1,說明上下左右及斜角合計(jì)有一顆雷,依次類推,2則有2顆,3則有3顆。 3、需實(shí)現(xiàn)的主要功能 (1)用戶可以自定義級(jí)別并且可以任意輸入雷數(shù); (2)具有計(jì)時(shí)功能,即顯示用戶完成移動(dòng)盤子所花費(fèi)的時(shí)間;(3)用戶可以選擇是否有音效;(4)自動(dòng)保存掃雷英雄榜; 三、總體設(shè)計(jì) 1、總體功能圖 掃雷游戲主界面游戲菜單重新開始幫助開局級(jí)別選擇標(biāo)記英雄榜退出關(guān)于掃雷 2、總體流程圖 開始定義并初始化個(gè)按鈕,菜單等菜單菜單事件處理按鈕按鈕開局選擇級(jí)別標(biāo)記聲音英雄榜退出重新開始方塊展示相應(yīng)的效果是否點(diǎn)中雷NY結(jié)束 四、詳細(xì)設(shè)計(jì) 1、掃雷棋盤的布局設(shè)計(jì) 系統(tǒng)的整體布局為:CardLayout布局, 采用了菜單、按鈕、面板?等組件,菜單主要包括開始,選擇級(jí)別,標(biāo)記,掃雷英雄榜,退出,按鈕的功能是重新開始新的游戲。 2、雷區(qū)的設(shè)計(jì) MineArea類是javax.swing包中Jpanel容器的子類,實(shí)現(xiàn)了ActionListener和MouseListener接口,所創(chuàng)建的對(duì)象:mineArea是MineGame類中最重要的成員之一,作為一個(gè)容器添加到MineGame窗口的中心。標(biāo)明MineArea類的主要成員變量、方法以及和MineGame類之間組合關(guān)系的UML圖如圖2-1所示。 JPanelActionListenerMouseListenerMineArearow,colum,mineCount,markMount: inblock: Block[]blockView: BlockView[][]showTime: JTextFieldshouMarkedMineCount: JTextField initMineArea(int,int,int): voidactionnPerformed(ActionEvent)voidmousePressed(MouseEvent): voidlay: LayMinesrecord: Record reStart: JButtontime: Timer show(int m,int n): voidinquireWin(): voidMineGamemineArea:MineArea------------------MineArea類的UML圖 以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。 1、成員變量 (1)block是Block類型的數(shù)組,用來確定雷區(qū)有多少需進(jìn)行掃雷的方塊。(2)blockView是BlockView類型的數(shù)組,負(fù)責(zé)為block數(shù)組中的Block對(duì)象提供視圖。 (3)lay是LayMines類型的對(duì)象,負(fù)責(zé)設(shè)置block數(shù)組中的哪些方塊是雷或不是雷。 (4)record負(fù)責(zé)提供保存成績的界面,是一個(gè)對(duì)話框,默認(rèn)不可見。用戶只有掃雷成功后(用時(shí)最少),才可以看見對(duì)話框。 (5)reStart是一個(gè)按鈕對(duì)象,用戶單擊它重新開始游戲。(6)time是計(jì)時(shí)器對(duì)象,負(fù)責(zé)計(jì)算用戶的用時(shí)。 2、方法 (1)initMineArea(int,int,int,int)方法可根據(jù)參數(shù)提供的數(shù)據(jù)設(shè)置雷區(qū)的寬度、高度、雷的數(shù)目以及雷區(qū)的級(jí)別。 (2)actionPerformed(ActionEvent)是MineArea類實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶單擊blockView中的某個(gè)方塊時(shí),actionPerformed(ActionEvent)方法負(fù)責(zé)執(zhí)行有關(guān)算法,例如,當(dāng)用鼠標(biāo)左鍵單擊方塊上的按鈕后,若該方塊下有雷,actionPerformed(ActionEvent)方法將使用戶輸?shù)舯揪?,若該方塊下無雷,actionPerformed(ActionEvent)方法將顯示blockView對(duì)象中的標(biāo)簽,該標(biāo)簽上是一個(gè)數(shù)字,該數(shù)字代表當(dāng)前方塊的周圍的8個(gè)方塊中共有多少顆雷。 (3)show()方法是一個(gè)遞歸方法。actionPerformed(ActionEvent)方法執(zhí)行時(shí)將調(diào)用show方法進(jìn)行掃雷。 (4)mousePressed(MouseEvent)方法是MineArea類實(shí)現(xiàn)的MouseListener接口中的方法,當(dāng)用戶按下鼠標(biāo)有件事mousePressed(MouseEvent)方法負(fù)責(zé)讓方塊上顯示一個(gè)探雷標(biāo)記。 (5)inquireWin()方法用來判斷用戶是否掃雷成功,如果成功該方法負(fù)責(zé)讓record對(duì)話框可見。所謂掃雷成功是指不僅找到了全部的累而且用時(shí)最少。綜上所述,MineArea創(chuàng)建的掃雷區(qū)域效果如圖2.2.2所示。 3、音效的設(shè)計(jì) music類是java.awt包中Frame的子類,通過構(gòu)造音效聲音方法,在MainFrame主類中,通過ActionListener來監(jiān)視是否已開始游戲,來決定播放計(jì)時(shí)聲,之后又通過ActionListener來監(jiān)視是否踩到雷和是否完成來決定,播放相應(yīng)的音樂。下面標(biāo)明music類的主要成員變量、方法以及和MineFrame類之間組合關(guān)系的UML圖如圖2-2所示。 musiclooping,looping2,looping3:booleanfile1,file2,file3:Filesound1,sound2,sound3:AudioClipchosenClip1,chosenClip2,chosenClip3:AudioClipdidaInit():voiddidaLoop():voiddidaStop():voiddetonationInit():voiddetonationPlay():voidvictoryInit():voidvictoryPlay():void MineArea類的UML圖 4、排行榜設(shè)計(jì) LogDialog是javax.swing包中Jdialog對(duì)話框的子類,并實(shí)現(xiàn)了ActiongListener接口。LogDialog創(chuàng)建的對(duì)象dialog是MainFrame類(主類)的成員之一,當(dāng)用戶選擇查看“英雄榜”菜單項(xiàng)時(shí),該對(duì)話框可見,提供了查看掃雷的最好成績的界面。標(biāo)明LogDialog類的主要成員變量、方法以及和MainFrame類之間組合關(guān)系的UML圖如圖2-3所示。JDialogActiongListenerLogDialogfile:File 顯示成績:重新記分:JButtonactionPerformed(ActionEvent):voidreadAndShow:voidMineGameshowHeroRecord:ShowRecord LogDialog類的UML圖 五、調(diào)試分析、測試結(jié)果 在程序代碼基本完成后,經(jīng)過不斷的調(diào)試與修改,最后測試本次所設(shè)計(jì)的掃雷游戲能夠正常運(yùn)行,在基本功能與畫面上與Windows自帶的掃雷游戲沒有太大差別,沒有出現(xiàn)明顯的錯(cuò)誤和漏洞,但是在一些細(xì)節(jié)方面仍然需要完善,比如在游戲中可以加入一些不同語音的提示,在游戲完成和失敗的時(shí)候可以彈出一些小的Flash動(dòng)畫,還有就是可以擴(kuò)展一下掃雷英雄榜的功能等??偟膩碚f本次設(shè)計(jì)在功能上已經(jīng)基本達(dá)到要求,其他細(xì)節(jié)方面有待以后完善。 六、結(jié)論及改進(jìn)設(shè)想 1、界面的美觀性做的不太好,比如說布局,顏色搭配有待改進(jìn) 2、背景音樂在播方的時(shí)候有一點(diǎn)小問題,比如單擊停止播放,音樂并沒有停止,需要單擊2次或多次;另外背景音樂似乎很占內(nèi)存,運(yùn)行的時(shí)候容易死機(jī)。 3、MineGame的初始化界面大小難以控制,特別是在自定義的情況下,需在手動(dòng)改面窗口的大小。 七、心得體會(huì) 這個(gè)掃雷游戲是完全模擬微軟系統(tǒng)自帶的掃雷游戲,所以難度是比較大了,必然在編程過程中也遇到很多問題,有些問題比較簡單但就不知道錯(cuò)在哪里,有些大問題之道在哪就是不知道怎么辦才好,后來經(jīng)過自己的不斷調(diào)試,這個(gè)掃雷游戲終于大功告成。 經(jīng)過編寫這個(gè)掃雷游戲,我認(rèn)識(shí)到應(yīng)該注意細(xì)節(jié)問題,雖然是很小的問題,但可以提高自己編程的能力,而且還可以培養(yǎng)自己編程的嚴(yán)謹(jǐn)性,同時(shí)還可以為以后的編程積累經(jīng)驗(yàn)。編寫完這個(gè)掃雷游戲,我發(fā)現(xiàn)自己有很多的不足,我想如果讓我來單獨(dú)來編寫這個(gè)游戲,我感覺很吃力,因?yàn)檫@個(gè)游戲涉及到好多算法。感觸最深的就是我們真的要扎扎實(shí)實(shí)的打基礎(chǔ)!并且我感覺到只要我們自己肯下功夫?qū)W習(xí),我們也可以做出很好的東西。 通過該課程設(shè)計(jì),全面系統(tǒng)的理解了程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過自己設(shè)計(jì)的程序表示出來,加深了對(duì)理論知識(shí)的理解?,F(xiàn)在通過自己動(dòng)手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識(shí)了Java是如何處理命令的,課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì)。 在這次課程設(shè)計(jì)中,我就是按照實(shí)驗(yàn)指導(dǎo)的思想來完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開發(fā)能力的目的。 八、參考文獻(xiàn) [1] 耿祥義.Java大學(xué)實(shí)用教程.北京:清華大學(xué)出版社,2009. [2] 耿祥義.Java課程設(shè)計(jì).北京:清華大學(xué)出版社,2008. [3] 王鵬.Java Swing圖形界面開發(fā)與案例詳解.北京:清華大學(xué)出版社,2008. [4] 丁振凡.Java語言實(shí)驗(yàn)教程.北京:北京郵電大學(xué)出版社,2005. [5] 鄭莉.Java語言程序設(shè)計(jì).北京:清華大學(xué)出版社,2006. 九、附錄 中南大學(xué) 程序設(shè)計(jì)基礎(chǔ)實(shí)踐報(bào)告 學(xué)生姓名 張?zhí)m蘭 學(xué) 院 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí) 物聯(lián)網(wǎng)工程1301班 完成時(shí)間 2014.1 題 目 設(shè)計(jì)一個(gè)和window系統(tǒng)類似的小游戲【挖地雷】 《計(jì)算機(jī)程序設(shè)計(jì)實(shí)踐》錯(cuò)誤!未指定書簽。 目錄 1.課程設(shè)計(jì)內(nèi)容.............................................................................................3 2.課程設(shè)計(jì)目的.............................................................................................3 3.背景知識(shí)....................................................................................................3 4.工具/準(zhǔn)備工作............................................................................................5 5.設(shè)計(jì)步驟、方法.........................................................................................5 5.1.步驟1:步驟名稱(二級(jí)標(biāo)題).......................................................錯(cuò)誤!未定義書簽。 步驟1.1:步驟名稱(三級(jí)標(biāo)題)..............................................................................5 5.1.1.5.2.5.3.步驟2:步驟名稱..........................................................................錯(cuò)誤!未定義書簽。步驟n:步驟名稱..........................................................................錯(cuò)誤!未定義書簽。 6.設(shè)計(jì)結(jié)果及分析.........................................................................................5 7.設(shè)計(jì)結(jié)論..................................................................................................15 8.問題及心得體會(huì).......................................................................................16 9.對(duì)本設(shè)計(jì)過程及方法、手段的改進(jìn)建議....................................................17 10.參考文獻(xiàn)..................................................................................................17 《計(jì)算機(jī)程序設(shè)計(jì)實(shí)踐》錯(cuò)誤!未指定書簽。 case 4: system(“cls”); printf(“請(qǐng)輸入棋盤行列數(shù)(小于20且用逗號(hào)隔開):”); scanf(“%d,%d”,&x,&y); getchar(); printf(“請(qǐng)輸入雷的個(gè)數(shù):”); scanf(“%d”,&b); getchar(); break; } break; } else { printf(“輸入錯(cuò)誤請(qǐng)重新輸n”); } } while(begin){ system(“cls”); InitialValue_game(&g); InitialMine_game(&g); print_game(&g,2); NO=1; while(NO) { printf(“Please choose:”); scanf(“%d,%d”,&i,&j);getchar();if(-1 { switch(openmap(&g,i-1,j-1)) { case 1: 《計(jì)算機(jī)程序設(shè)計(jì)實(shí)踐》錯(cuò)誤!未指定書簽。 print_game(&g,1); printf(“游戲結(jié)束!按回車鍵再來一局n”); if(getchar()=='n')begin=1; else begin=0; NO=0; break; case 2: if(judge_game(&g)==b) { printf(“win!n”); print_game(&g,1); printf(“按回車鍵再來一局n”); if(getchar()=='n')begin=1; else begin=0; NO=0; break; } else print_game(&g,2);NO=1;break; default:break; } } else { printf(“你輸入錯(cuò)誤!請(qǐng)重新輸入n”); } } } }第三篇:C語言程序設(shè)計(jì)掃雷游戲
第四篇:java_掃雷游戲課程設(shè)計(jì)報(bào)告
第五篇:C語言程序設(shè)計(jì)掃雷游戲?qū)嶒?yàn)報(bào)告