2048c語言源代碼(推薦文檔)_第1頁
2048c語言源代碼(推薦文檔)_第2頁
2048c語言源代碼(推薦文檔)_第3頁
2048c語言源代碼(推薦文檔)_第4頁
2048c語言源代碼(推薦文檔)_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、#i nclude #in clude#i nclude #in elude #in clude#defi ne N 4in t gridNN=0;int D=0;int M=2048;/顯示void showdata()int i,j;system(CLS);for(i=0;iN+2;i+)pri ntf(%5c,+);pri ntf(nn);for(i=0;iN;i+)prin tf(%5c,+);for(j=0;jN;j+)if(gridij!=O)prin tf(%5d,gridij);elseprin tf(%5c,);prin tf(%5c,+);prin tf(nn);for(i

2、=0;iN+2;i+)pri ntf(%5c,+);pri ntf(n);/判斷是否有空位in t isNotFull()int i,j,k=O;for(i=0;iN;i+)for(j=0;jN;j+)if(gridij=0)k=1; break;return k;II隨機數(shù)字void ran domdata()int r,c, x;x = ran d()%2*2+2;dor = ran d()%N;c = ran d()%N;while(gridrc!=O); gridrc=x;獲取最大值in t getMax()int i,j,max=0;for(i=0;iN;i+)for(j=0;jN;

3、j+)if(maxgridij) max=gridij;return ma x;II移動相加,返回1表示有移動,返回0表示無移動int add()int i,j,cr,w,F=0;if(D=1)IItopfor(i=1;iN;i+)for(j=0;j=1 & gridcrj!=0 )if(gridcr-1j=0)II 上方有空位,上移 gridcr-1j=gridcrj; gridcrj=0;F=1;elseII上 方無空位等,相加 if(gridcr-1j=gridcrj& w=0)II gridcr-1j=gridcr-1j*2; gridcrj=0; w=1; F=1;elseII不 等

4、break;cr-;if(D=2)/dow nfor(i=N-2;i=0;i-)for(j=0;jN;j+)cr=i;w=0;while(cr=N-2 & gridcrj!=0 )if(gridcr+1j=0) 下方有空位,下移 gridcr+1j=gridcrj; gridcrj=0;F=1;else/下方無空位等,相加if(gridcr+1j=gridcrj & w=0)/ gridcr+1j=gridcr+1j*2; gridcrj=O; w=1;F=1;else/不等 break; cr+;if(D=3)/leftfor(i=0;iN;i+)for(j=1;j=1 & gridicr!

5、=O ) if(gridicr-1=0) 左方有空位,左移 gridicr-1=gridicr; gridicr=0;F=1;else/左方無空位等,相加if(gridicr-1=gridicr & w=0) gridicr-1=gridicr-1*2; gridicr=0;w=1;F=1;else/不 等break;cr-;if(D=4)/rightfor(i=0;i=0;j-)cr=j;w=0;while(cr=N-2 & gridicr!=O )if(gridicr+1=0) 右方有空位,右移 gridicr+1=gridicr; gridicr=0;F=1;else/右方無空位等,相加

6、if(gridicr+1=gridicr & w=0)/ gridicr+1=gridicr+1*2; gridicr=0; w=1; F=1;else/不 等break;cr+;return F;in t getKey()int k=0;char c=getch();if(c0) c0為特殊鍵,還要再讀下一個字節(jié)判斷為何鍵c=getch();if(c=72) D=1; k=1;/topif(c=80) D=2; k=1;/dow nif(c=75) D=3; k=1;/leftif(c=77) D=4; k=1;/rightreturn k;在數(shù)字全滿下,檢查是否還有合并的可能,有則返回1;

7、int can Add()int i,j,k,F=O;for(i=0;iN;i+)for(j=0;jN-1;j+)if(gridij=gridij+1) F=1;for(j=0;jN;j+)for(i=0;iN-1;i+)if(gridij=gridi+1j) F=1;return F;main ()char c;i nt mov,key,isf;,2048:);printf(請輸入游戲要拼湊的最大數(shù)字,例如32,64, 128,sca nf(%d,&M);/初次狀態(tài)sran d(time(NULL);ran domdata();/ 隨機第一個數(shù)ran domdata();隨機第二個數(shù)showdata();dokey=getKey();讀取操作鍵 if(key=O) continue; /不是上下左右鍵,重新讀取鍵盤 mov=add();根據(jù)方向鍵合并相加,返回1表示有移動 if(mov=1) showdata(); 顯示if(getMax()=M)判斷是否勝利printf(你贏了! n ”);break;isf=isNotFull();返回1表示還有空位if(isf=1 & mov=1)

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論