猜數(shù)字游戲課程設計報告_第1頁
猜數(shù)字游戲課程設計報告_第2頁
猜數(shù)字游戲課程設計報告_第3頁
猜數(shù)字游戲課程設計報告_第4頁
猜數(shù)字游戲課程設計報告_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、XXXX學校 C程序設計課程設計報告設計題目:猜數(shù)字游戲附錄完整源代碼 專 業(yè): 班 級: 學 生: 學 號: 指導教師: 起止時間: xxx.x.x -xxx.x.xxxxx-xxxx年 xx 學期目 錄1 、 程序設計描述 1.1 程序設計目的: 1.2 程序設計要求: 1.3、猜數(shù)字游戲的簡介:2 、程序設計內容: 2.1、游戲主要框架圖: 2.2、開始游戲框架: 2.3、最佳排行框架: 2.4、游戲操作說明模塊: 2.5、退出游戲系統(tǒng): 2.6、游戲系統(tǒng)總流程圖:3、猜數(shù)字游戲源代碼: 3.1、void main()函數(shù)函數(shù)功能: 3.2、void game();/雙人游戲void p

2、game();/單人游戲 3.4、排行榜模塊函數(shù)功能: 3.5、繼續(xù)游戲模塊函數(shù)功能: 3.6、操作說明模塊函數(shù)功能:4、調試與測試: 4.1、調試方法 4.2、測試結果的分析與討論 4.3、測試過程中遇到的主要問題及采取的解決措施5、程序具體說明書: 6、程序設計心得:7、參考文獻1 、 程序設計描述1.1 程序設計目的:綜合使用所學過的C語言程序設計知識,掌握結構化程序設計的基本思路和方法,利用所學的基本知識和技能,發(fā)揮自學能力和查找資料的能力,解決稍微復雜的結構化程序設計問題,加深對所學知識的理解與掌握,增強學生利用自己所學知識解決實際問題的能力,為以后的程序開發(fā)打下基礎。1.2 程序設

3、計要求:1、鞏固和加強C語言程序設計課程的理論知識。2、掌握語言的基本概念、語法、語義和數(shù)據(jù)類型的使用特點。3、掌握語言程序設計的方法及編程技巧,能正確使用語言編寫程序。4、進一步理解和運用結構化程設計的思想和方法;學會利用流程圖。5、掌握調試程序的基本方法及上機操作方法。6、掌握書寫程設計開發(fā)文檔的能力,學會撰寫課程設計總結報告。課程設計的思想和方法還可以作為做畢業(yè)論文時的參考資料。7、通過查閱手冊和文獻資料,培養(yǎng)獨立分析問題和解決問題的能力。為做畢業(yè)設計打好基礎。8、培養(yǎng)自己的創(chuàng)新能力和創(chuàng)新思維。可以根據(jù)指導書和相關文獻上的參考算法,自己設計出相應的應用程序。9、培養(yǎng)自己良好的程序設計風格

4、。在實際編程中,為了提高編程質量,對空行、空格和注釋均有要求。在課程設計書寫代碼時,應該嚴格按要求處理,以便建立良好的程序設計風格。1.3、猜數(shù)字游戲的簡介:猜數(shù)字游戲(又稱 Bulls and Cows )是一種大概于20世紀中期興起于英國的益智類小游戲。一般由兩個人玩,也可以由一個人和電腦玩,在紙上、在網上都可以玩。這種游戲規(guī)則簡單,但可以考驗人的嚴謹和耐心。2 、程序設計內容:2.1、游戲主要框架圖:該模塊為玩家提供猜數(shù)字游戲的主體功能,即開始游戲、繼續(xù)游戲、最佳排行、操作說明、退出游戲。給用戶一個清晰明了的操作界面!流程圖如下:系統(tǒng)模塊結構圖2.2、開始游戲框架:開始游戲返回主菜單單人

5、游戲雙人游戲單人游戲由系統(tǒng)產生4個隨機數(shù),并按任意順序排列,作為游戲的原始數(shù)字供玩家進行猜數(shù)字游戲。雙人游戲有主用戶知己定義輸入輸入,再用另一用戶猜測!單人、雙人游:提示用戶數(shù)值和位置全對的數(shù)字個數(shù),和只有數(shù)值但位置不對的數(shù)字個數(shù)。原始數(shù)字顯示:當用戶在8次之內仍未能猜出原始數(shù)字和順序時,系統(tǒng)提示玩家失敗,并給玩家顯示出原始數(shù)字和順序。2.3、最佳排行框架:進入該界面后,進行提示由于技術問題此項有待解決!個人認為最佳排行的應有的功能想法(有待改進)該模塊為玩家提供排行榜的瀏覽和清除功能,包括按玩家成績順序瀏覽、按玩家姓名瀏覽和清除排行榜功能。2.4、游戲操作說明模塊:進入該界面后,進行提示由于

6、技術問題此項有待解決!當玩家選項為幫助功能對應的選項數(shù)字時,進入幫助模塊,給出用戶猜數(shù)字的游戲規(guī)則和游戲中相關提示的含義和簡單提示。 2.5、退出游戲系統(tǒng):該功能主要是在主界面操作,為方便用戶退出游戲功能2.6、游戲系統(tǒng)總流程圖:開始功能選擇最佳排行繼續(xù)游戲開始新游戲操作說明退出游戲輸入0輸入0單人雙人輸入0輸入0 主完家輸入數(shù)字系統(tǒng)內部隨機出數(shù) 0輸入數(shù)字 0是否有效四位數(shù)輸出第一次結果 是 否 不輸出結果是否大達到3此?輸出結果并返回 是 否提示再輸 結束游戲3、猜數(shù)字游戲源代碼:游戲主程序調用的函數(shù)如下:#include #include #include #include proces

7、s.h#define N 4 /隨機抽N個數(shù)#define NUM 8 /NUM次猜數(shù)的機會void mainmenu();/游戲主菜單void bestmenu();/最佳排行子菜單Best rankingvoid continumenu();/繼續(xù)游戲子菜單Continue to gamevoid operationmenu();/操作說明子菜單operation explanationvoid playgame();/新游戲子菜單void game();/雙人游戲void pgame();/單人游戲void gotoxy(int x,int y) COORD c; c.X = x - 1

8、; c.Y = y - 1; SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c); 3.1、void main()函數(shù)函數(shù)功能: 功能:軟件執(zhí)行的入口,在函數(shù)所在的程序頭部包含可部分系統(tǒng)必須的頭文件和完成其他功能的源文件。在該函數(shù)中還提供了系統(tǒng)功能選擇的平臺,提示用戶系統(tǒng)可用的功能有哪些和這些功能的選項代碼。并給用戶提供輸入功能選項代碼的接口,當用戶輸入選項代碼后,即顯示給用戶相應的功能處理界面或結果。歡迎界面while(1) system(color 6A) ;/顏色代碼mainmenu();/調用游戲主菜單printf

9、( 請輸入序號:);choose=getchar();switch(choose)case 1: do int x;playgame();/調用開始新游戲子菜單printf( 請輸入序號:);editch=getchar();switch(editch)case 1:game(); loop1:printf( |*按0鍵返回兩人游戲菜單*|n); scanf(%d,&x); switch(x) case 2: printf( |*按0鍵返回兩人游戲菜單*|n); pgame(); goto loop1;break;case 2:pgame(); loop2:printf( |*按0返回兩人游戲

10、菜單*|n); scanf(%d,&x); switch(x) case 2: printf( |*按0返回兩人游戲菜單*|n);pgame(); goto loop2; break;case 0:system(cls);/C+清屏函數(shù)printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(editch!=0);break;case 2: docontinumenu();/調用繼續(xù)游戲子菜單 printf( 按“0”返回上一級菜單:);editch=getchar();switch(editch)case 0:system(cls)

11、;/C+清屏函數(shù)printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(editch!=0);break;case 3:dobestmenu();/調用最佳排行子菜單 printf( 按“0”返回上一級菜單:);editch=getchar();switch(editch)case 0:system(cls);printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(editch!=0);break;case 4:dooperationmenu();/調用操作說明菜單pri

12、ntf( 按“0”返回上一級菜單:);editch=getchar();switch(editch)case 0:system(cls); printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(editch!=0);break;case 0:/退出猜數(shù)字游戲系統(tǒng)system(cls);printf(nnnnnn 游戲結束,退出系統(tǒng)!);getch();system(cls);exit(0);3.2、void game();/雙人游戲void pgame();/單人游戲 功能:開始猜數(shù)字游戲和進行游戲過程,調用系統(tǒng)內部以隨機給出的數(shù)

13、字,提示用戶輸入猜數(shù)字,每次再輸入完整后自動給出答案,在8次之內未猜出者提示失敗,如果成功,進行提示。3.3、#define N 4 /隨機抽N個數(shù)#define NUM 8 /NUM次猜數(shù)的機會getnumber()函數(shù) 功能:由系統(tǒng)產生4個按任意順序排列的隨機整數(shù)。3.4、排行榜模塊函數(shù)功能:void bestmenu();/最佳排行子菜單功能:主要是起調用作用,顯示排行界面?。ㄌ崾緮?shù)據(jù)技術原因未制作)void bestmenu()/猜數(shù)字游戲最佳排行子菜單函數(shù) system(cls);printf(nnn); printf( |* * * * * * * 最佳排行 * * * * |n)

14、;3.5、繼續(xù)游戲模塊函數(shù)功能:void continumenu();/繼續(xù)游戲子菜單Continue to game功能:主要是起調用作用,顯示繼續(xù)游戲子菜單界面?。ㄌ崾緮?shù)據(jù)技術原因未制作)void continumenu()/猜數(shù)字游戲繼續(xù)游戲子菜單函數(shù)getchar();system(cls);printf(nnn);printf( |* * * * * * * 繼續(xù)游戲 * * * * |n);3.6、操作說明模塊函數(shù)功能:void operationmenu();/操作說明子菜單operation explanation功能:主要是起調用作用,顯示操作說明子菜單界面!輸出顯示幫助系統(tǒng)

15、。具體游戲規(guī)則(未直接在游戲顯示)。雙人游戲,由一方出數(shù)字,一方猜。出數(shù)字的人要想好一個沒有重復數(shù)字的4位數(shù),不能讓猜的人知道。猜的人就可以開始猜。每猜一個數(shù)字,出數(shù)者就要根據(jù)這個數(shù)字給出幾A幾B,其中A前面的數(shù)字表示位置正確的數(shù)的個數(shù),而B前的數(shù)字表示數(shù)字正確而位置不對的數(shù)的個數(shù)如正確答案為 5234,而猜的人猜 5346,則是 1A2B,其中有一個5的位置對了,記為1A,而3和4這兩個數(shù)字對了,而位置沒對,因此記為 2B,合起來就是 1A2B,在本軟件中,在用戶輸入數(shù)字后自動給出答案!猜數(shù)字次數(shù)限制:本猜數(shù)字游戲軟件設有猜測次數(shù)的上限。根據(jù)計算機測算,采用嚴謹?shù)牟聹y策略,任何數(shù)字最低8次就

16、可猜出。最快取勝的簡單策略:一是保證在猜測次數(shù)限制下贏得游戲,二是使用盡量少的猜測次數(shù)。以目標追求的是最壞情況下的猜測次數(shù)最少。 如啟發(fā)式策略:這類策略是猜數(shù)字游戲最常用的解法。其算法步驟如下:甲、 首先猜 1234,得到第一個反饋(xAyB)。乙、 從所有數(shù)字中,篩選出滿足已知反饋的所有可能數(shù)字,稱之為“可能集”。丙、 對于所有數(shù)字(而不僅限于篩選出來的可能集),逐一評估每個數(shù)字的“好壞”,并給其打分。選取得分最高的那個數(shù)字猜。如果有多個數(shù)字的評分一樣高,則優(yōu)先選取可能集中的數(shù)字。丁、 重復乙、丙、丁步驟,直到猜出 4A0B 為止。void operationmenu()/猜數(shù)字游戲操作說明

17、子菜單函數(shù) system(cls);printf(nnn);printf( |* * * * * * * 操作說明* * * * * * |n);4、調試與測試: 4.1、調試方法:先運行游戲軟件,按照提示進行操作,對輸出地數(shù)據(jù)進行判斷,并參考書籍進行查閱!4.2、測試結果的分析與討論:通過查找資料和同學討論,測試正常。下面對軟件運行結果進行展示 4.3、測試過程中遇到的主要問題及采取的解決措施:同學討論、上網查閱資料對錯誤進行改進!5、程序具體說明書: 程序的功能說明:猜數(shù)字游戲是一個運行在Windows平臺下的小型游戲軟件,依據(jù)猜數(shù)字游戲的基本規(guī)則,給用戶進行娛樂。游戲用戶可以選擇開始游、

18、排行榜查看、幫助等主要功能。如果用戶猜數(shù)字的次數(shù)超過8次,則提示用戶游戲失敗,如果在8次之內猜出4個數(shù)字和正確的順序,則提示用戶猜數(shù)字成功,在幫助模塊,用戶可以查看游戲規(guī)則,當熟悉規(guī)則后可以退出幫助模塊。 本游戲軟件實現(xiàn)以下一些基本功能:新游戲:玩家可以在游戲區(qū)逐次猜數(shù)字,系統(tǒng)給出玩家每次猜數(shù)字后的提示,包括數(shù)值、位置均正確的數(shù)字個數(shù)和數(shù)值正確但位置不正確的數(shù)字個數(shù);查看排行榜:(待改進);清除排行榜:(待改進); 幫助:玩家通過幫助功能了解游戲規(guī)則和排行榜設置規(guī)則。6、程序設計心得:通過猜數(shù)字游戲課程設計了解其典型功能:即系統(tǒng)產生4個不重復的隨機數(shù)字、提供給玩家8次猜測機會、提供給玩家每次猜

19、數(shù)字后的正確數(shù)字和位置,讓玩家根據(jù)這些信息繼續(xù)下一次的猜測。簡單的設計蘊涵了多種功能,簡單而又全面。實驗過程中,通過查詢各資料基本掌握數(shù)字游戲功能的實現(xiàn)步驟,并且熟練了解流程圖設計與編畫過程。能夠次實驗的設計成功完成游戲,準確猜出所須的4位數(shù)。感覺對所學的知識有更進一步的了解。附:完整代碼,VS建工程,COPY運行就OK#include #include #include #include process.h#define N 4 /隨機抽N個數(shù)#define NUM 8 /NUM次猜數(shù)的機會void mainmenu();/游戲主菜單void bestmenu();/最佳排行子菜單Best

20、rankingvoid continumenu();/繼續(xù)游戲子菜單Continue to gamevoid operationmenu();/操作說明子菜單operation explanationvoid playgame();/新游戲子菜單void game();/雙人游戲void pgame();/單人游戲void gotoxy(int x,int y) COORD c; c.X = x - 1; c.Y = y - 1; SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c); void main() char ch

21、oose=0;char editch=0;char continu=0;char operation=0;char sortch=0;char play=0;system(color 5A) ;/顏色代碼system(cls);/C+清屏函數(shù)gotoxy(20,3);printf( _);gotoxy(20,4);printf(| 歡 | 1 | 迎 |);gotoxy(20,5);printf(_|_ |_ |);gotoxy(20,6);printf(| 1 | * * | 1 |);gotoxy(20,7);printf(| 0 | * * | 0 |);gotoxy(20,8);pri

22、ntf(| 1 | * * * * | 1 |);gotoxy(20,9);printf(| 0 | | 0 |);gotoxy(20,10);printf(| 1 | * * | 1 |);gotoxy(20,11);printf(| 0 | * * | 0 |);gotoxy(20,12);printf(| 1 | * | 1 |);gotoxy(20,13);printf(| 0 | 猜數(shù)字游戲 | 0 |);gotoxy(20,14);printf(| 1 |_| 0 |);gotoxy(20,15); printf(| 使 | 0101010101 | 用 |);gotoxy(20,

23、16);printf(|_|_|_|);gotoxy(20,18);printf( 尊敬的用戶你好!n);gotoxy(20,19);printf( 你首先感謝你使用本軟件!使用本軟件請n);gotoxy(20,20);printf(你注意以下事項!避免對你造成不必要的麻煩n);gotoxy(20,21);printf(!敬請諒解!n);gotoxy(20,22);printf(一、請使用正版軟件,如使用盜版造成的后n);gotoxy(20,23);printf(果請自負!n);gotoxy(20,24);printf(二、本軟件是試用版本.如有疑問,請你聯(lián)系n);gotoxy(20,25);

24、printf(作者,為你提供技術服務!n);gotoxy(20,26);printf(三、本軟件嚴格遵守國家關于軟件相關的隱n);gotoxy(20,27);printf(私法律!n);gotoxy(20,28);printf(四、本軟件完美兼容WIN7、XP!n);gotoxy(20,29);printf( 更多精彩內容,請關注官網! n);gotoxy(20,30);printf( 如果你同意以上內容,請進行下一步,); gotoxy(20,31);printf(否則請你退出游戲!);gotoxy(20,33);printf(*按任意鍵進入猜數(shù)字游戲主菜單*);getch(); while

25、(1) system(color 6A) ;/顏色代碼mainmenu();/調用游戲主菜單printf( 請輸入序號:);choose=getchar();switch(choose)case 1: do int x;playgame();/調用開始新游戲子菜單printf( 請輸入序號:);editch=getchar();switch(editch)case 1:game(); loop1:printf( |*按0鍵返回兩人游戲菜單*|n); scanf(%d,&x); switch(x) case 2: printf( |*按0鍵返回兩人游戲菜單*|n); pgame(); goto

26、loop1;break;case 2:pgame(); loop2:printf( |*按0返回兩人游戲菜單*|n); scanf(%d,&x); switch(x) case 2: printf( |*按0返回兩人游戲菜單*|n);pgame(); goto loop2; break;case 0:system(cls);/C+清屏函數(shù)printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(editch!=0);break;case 2: docontinumenu();/調用繼續(xù)游戲子菜單 printf( 按“0”返回上一級菜單

27、:);editch=getchar();switch(editch)case 0:system(cls);/C+清屏函數(shù)printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(editch!=0);break; case 3:dobestmenu();/調用最佳排行子菜單 printf( 按“0”返回上一級菜單:);editch=getchar();switch(editch)case 0:system(cls);printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(e

28、ditch!=0);break;case 4:dooperationmenu();/調用操作說明菜單printf( 按“0”返回上一級菜單:);editch=getchar();switch(editch)case 0:system(cls); printf(nnnnnn 操作結束,返回主菜單!);getch();system(cls);break;while(editch!=0); break;case 0:/退出猜數(shù)字游戲系統(tǒng)system(cls);printf(nnnnnn 游戲結束,退出系統(tǒng)!);getch();system(cls);exit(0);void mainmenu()/猜

29、數(shù)字游戲主菜單函數(shù)system(cls); /C+清屏函數(shù)printf(nnn);printf( |* * * * * 猜數(shù)字游戲 * * * * *|n);printf( |.|n);printf( | 請選擇菜單序號(04) |n);printf( |.|n);printf( | 1-開始游戲 |n);printf( | 2-繼續(xù)游戲 |n);printf( | 3-最佳排行 |n);printf( | 4-游戲規(guī)則 |n);printf( | 0-退出系統(tǒng) |n);printf( |.|n);void playgame()/猜數(shù)字游戲開始游戲子菜單函數(shù) system(cls); /C+清

30、屏函數(shù)printf(nnn);printf( |* * * * * 猜數(shù)字游戲 * * * * *|n);printf( |.|n);printf( | 請選擇菜單序號(02) |n);printf( |.|n);printf( | 1-雙人游戲 |n); printf( | 2-單人游戲 |n);printf( | 0-退出系統(tǒng) |n);printf( |.|n);void continumenu()/猜數(shù)字游戲繼續(xù)游戲子菜單函數(shù)getchar();system(cls);printf(nnn);printf( |* * * * * * * 繼續(xù)游戲 * * * * |n);printf(

31、|.|n);printf( | 尊敬的用戶你好! 首 |n);printf( | 先感謝你使用本游戲 ,由 |n);printf( | 于此功能處于研發(fā)中 ,如 |n); printf( | 對你造成不便, 敬請諒解 |n); printf( | 感謝你的關注! 謝謝! |n); printf( | 祝你游戲愉快 ! |n);printf( |.|n);void bestmenu()/猜數(shù)字游戲最佳排行子菜單函數(shù) system(cls);printf(nnn);printf( |* * * * * * * 最佳排行 * * * * |n);printf( |.|n);printf( | 尊敬的

32、用戶你好! 首 |n);printf( | 先感謝你使用本游戲 ,由 |n);printf( | 于此功能處于研發(fā)中 ,如 |n); printf( | 對你造成不便, 敬請諒解 |n); printf( | 感謝你的關注! |n); printf( | 祝你游戲愉快 ! |n);printf( |.|n);void operationmenu()/猜數(shù)字游戲操作說明子菜單函數(shù) system(cls);printf(nnn);printf( |* * * * * * * 操作說明* * * * * * |n);printf( |.|n);printf( | 尊敬的用戶你好! |n);print

33、f( | 首先感謝你使用本游戲,在 |n);printf( | 戶登陸游戲后,請選擇“數(shù)字” |n); printf( | 并確定,進入新游戲!再更具統(tǒng) |n); printf( | 給出的提示,用戶進行數(shù)據(jù)輸入 |n); printf( | ,進行猜測!感受猜字游戲的魅 |n);printf( | 力! |n); printf( | 感謝你的關注! |n); printf( | 祝你游戲愉快 ! |n); printf( |.|n);void game()/雙人游戲 int i,j,m; int n; int a4; int tar4; int A; int B; printf( |*請輸入4位阿拉伯數(shù)字*|n); for(i =0;i4;i+) tari=getch();/輸入任意數(shù)字 tari=tari-0x30;/自己輸入數(shù)字(主玩家輸入數(shù)字,另一玩家再猜) printf(*);/保密數(shù)字用 printf( |*主玩家輸入完畢*|); for(m=0;mNUM;m+) if(m=(NUM-1) printf( |*你還有最后一次機會喲!加油!

溫馨提示

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

評論

0/150

提交評論