(計算機C編程第一個課程設(shè)計)高手數(shù)獨游戲(最終完結(jié)完美解釋版)_第1頁
(計算機C編程第一個課程設(shè)計)高手數(shù)獨游戲(最終完結(jié)完美解釋版)_第2頁
免費預(yù)覽已結(jié)束,剩余8頁可下載查看

下載本文檔

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

文檔簡介

1、#include #include#include#include #include using namespace std;int Random 【 9】【 9】=/ 這是填好以后,正確地數(shù)獨3,9,6,1,2,4,7,8,5,7,8,1,9,5,6,2,4,3,2,4,5,7,8,3,6,1,9,6,3,2,8,4,1,5,9,7,1,7,4,5,3,9,8,2,6,9,5,8,2,6,7,4,3,1,4,1,7,6,9,8,3,5,2,5,6,3,4,1,2,9,7,8,8,2,9,3,7,5,1,6,4;int a 【9】【9】;/ 用于顯示地數(shù)組bool flag【9】【9】 ; /

2、 用于標(biāo)記地數(shù)組int cnt=0; / 用于標(biāo)記剩余地方框數(shù)void gaoshoujiemian() / 顯示第個界面printf( =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=n);printf(nnnnnnnnnn 高 手 數(shù) 獨 nnnnnnnnnnn 高手公司重磅推出 n 請按任 意鍵繼續(xù) );getch(); / 要用 #include 這個頭文件 ; 函數(shù)用途: 從控制 臺讀取個字符,但不顯示在屏幕上system(cls); / 執(zhí)行 DOS 下地清屏命令。void formal(int h【9】【9】,int f【9】【9

3、】) / 初始化數(shù)組 , h 就是ramdom f 就是 aint m,n,i,j,l,k; while(true)m=rand()%9; /9 以內(nèi)地隨機數(shù) if(m=0|m=3|m=6)break;srand(time(NULL); / 利用時間設(shè)置隨機種子while(true)l=rand()%9;if(l=1|l=2)break;srand(time(NULL);while(true)n=rand()%9;if(n=0|n=3|n=6)break;srand(time(NULL);for(i=0;i9;i+)int u;u=h【i 】【 m】;h【i 】【 m】 =h【 i 】【m+l

4、】 ;h【i 】【m+l】=u; / 兩列交換while(true)k=rand()%9;if(k=1|k=2)break;不包括 9隨機數(shù)初始化for(j=0;j9;j+)int p;p=h【 n】【 j 】;h【n】【j 】 =h【 n+k 】【j 】 h【n+k】【 j 】=p; / 兩行交換for(i=0;i9;i+)for(j=0;j9;j+)f【i 】【j】=h【i】【j】; /把交換好地數(shù)組 給 要用于顯示地數(shù)組h 給 f 。void copyArray(int from【9】【9】,int to 【9】【9】) / 還原數(shù)組int m,n,i,j,l,k;while(true)

5、m=rand()%9;if(m=0|m=3|m=6)break;srand(time(NULL); / 利用時間設(shè)置隨機種子 , 隨機數(shù)初始化! while(true)n=rand()%9;if(n=0|n=3|n=6)break;srand(time(NULL);while(true)l=rand()%9;if(l=1|l=2)break;srand(time(NULL);while(true)k=rand()%9;if(k=1|k=2)break;for(i=0;i9;i+)int u;u=from 【i 】【m】 ;from 【i 】【 m】 =from 【i 】【m+l】from 【i

6、 】【 m+l】 =u;for(j=0;j9;j+)int p;p=from 【n】【j 】 ;from 【n】【 j 】 =from 【n+k 】【 j 】from 【 n+k 】【j 】 =p;for(i=0;i9;i+)for(j=0;j9;j+)to 【i 】【j 】 =from 【i 】【j 】for(i=0;i9;i+)for(j=0;j9;j+)to 【i 】【j 】 =from 【i 】【j 】if(level=0)p=1;r=2;else if(level=p=1; r=15;else if(level=p=1; r=20;else if(level=3)p=1; r=25;

7、else if(level=4)p=1; r=30;if(p=1)srand(time(NULL);/copyArray(Random,a);/ while(r-) /int i=rand()%9;void newgame(int a【9】【9】,bool flag 【9】【9】,int level)/設(shè)置難易程度fill(&flag 你應(yīng)該懂地:int r,p=0;【0】【0】,&flag【8】【8】+1false); /就是把 flag 數(shù)組里面地每個成員都標(biāo)記為/ r表示 挖去地空格。挖去操作,范立新 老在講地,false ( 這步很關(guān)鍵 )隨機數(shù)初始化 這里在打亂數(shù)組。

8、 隨機地在某個地方 標(biāo)記,用于挖空。int j=rand()%9;if(a 【 i 】【j 】 =0)r+;continue;/ 隨機產(chǎn)生地 a【i】【j 】是 0 地話,重新循環(huán)次 if(a 【i】【j 】!=0)a【i 】【 j 】=0;flag 【i 】【j 】=true; / 把 a【i 】【j 】 弄為 0 再把這 個地方地 flag【 i 】【j 】標(biāo)記為 trueelse / 否則,這個 level 不存在。coutInvalid Game levelendl; system (pause); /暫停void showArray(int a【 9】【9】,bool flag 【9

9、】【 9】) / 顯示數(shù)獨當(dāng)前狀態(tài)cout i- 1-1-1e ndl;int i,j;for(i=0;i9;i+)coutcol 【i 】| for(j=0;j9;j+)if(a 【i 】【j 】 !=0&flag【i 】【j 】 =false)coutsetw(3)a 【i 】【j 】 ;if(a 【i 】【j 】 =0)是用來標(biāo)記 方框數(shù) ; / setw 是 空格char col 【9】 =0,system (cls); /cout 011,2,3,4,5,6,7,8;清屏23 4 56 7 8 endl;cnt+; / cntcoutsetw(3)if(a 【i】【j 】 !

10、=0&flag 【i 】【 j 】 =true) / 原來是方框地 地方,現(xiàn)在輸入了值了,那就如下這樣。coutsetw(2)_a【i 】【j ;if(j+1)%3=0&j!=8) / 什么時候顯示IcoutI;cout | endl;if(i+1)%3=0&i!=8)cout I-1-1-1e ndl;cout1-1-1-1e ndl;void ShowMenu()/ 顯示菜單cout= cnt spaces left =endl;cout= SuDoKu Game ( 數(shù)獨 ) =endl;cout=endl; cout Erow col value : Edit

11、cellendl;cout C row col : Clear cellendl;cout N Level : Restart with Level(0-4) endl; cout Q: Quit Gameendl;cout=endl;void FillCell(int a【 9【 9 ,bool flag 【 9【 9 , int r,int c,int value)/ 用于賦值地函數(shù)if(flag 【r 【 c =true) / true是方框地地方。int i,j;int k=0;/下面就把行和列地數(shù)與 value 值比較。 用與確認,輸入地值是否正確for(j=0;j9;j+)if(a

12、 【r 】【j 】 =value)k=1;break;if(k=0)for(i=0;i9;i+)if(a 【 i 】【 c】 =value)k=1;break;if(k=0) / 如果比較后 完全正確地話,那么就把 值 里。a【r 】【c】 =value;elsecoutirregular valueendl; system (pause);void ClearCell(int a【9】【 9】 ,bool flag 【9】【9】,int r,int c) /輸入地數(shù)地 函數(shù), 即是返回 前個狀態(tài)。if(flag【r 】【 c】=true)a【r 】【c】 =0;elsecoutFixed c

13、ell cannot be changed!s;int r,c,value;if(s 【0】=Q|s【0】=q&s.size()=1) /長度要是防止 輸入 qwe 也會退出break;else if(s【0】 =N|s【0】 =n&s.size()=1)int level; cinlevel; newgame(a, flag, level);else if(s【0】 =E|s【 0】 =e&s.size()=1)cinrcvalue; FillCell(a, flag, r, c, value); cnt-;else if(s【0】 =C|s【0】 =c&s.size()=1)cinrc; ClearCell(a, flag, r, c);cnt+;int i,j,p=0;for(i=0;i9;i+)for(j=0;j9;j+)int main()gaoshoujiemian(); /formal(Random,a); /newgame(a, flag, 0); /個字符,if(a 【i 】【j 】 !=Random【i 】【j 】) / 如果 a 數(shù)組里面有 個 值沒有和 random 原數(shù)組里面地值相等,

溫馨提示

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

評論

0/150

提交評論