真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

函數(shù)調(diào)用雷劈數(shù)C語(yǔ)言 雷劈數(shù)c語(yǔ)言編程

如何用C語(yǔ)言編程 掃雷!~

俄羅斯方快

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的臨川網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

掃雷

#includestdio.h

#includegraphics.h

#includestdlib.h

struct list

{

int x;

int y;

int num;

int bomb;

int wa;

};

struct list di[10][10];

int currentx=210;

int currenty=130;

void initxy(void)

{

int i,j;

for(i=0;i=9;i++)

for(j=0;j=9;j++)

{

di[j].x=i*20+200;

di[j].y=j*20+120;

di[j].wa=0;

di[j].bomb=0;

}

}

void initmu(void)

{

int i,j;

setcolor(2);

rectangle(200,120,400,320);

rectangle(190,110,410,330);

setfillstyle(8,14);

floodfill(191,111,2);

for(i=0;i=9;i++)

for(j=0;j=9;j++)

rectangle(di[j].x,di[j].y,di[j].x+19,di[j].y+19);

outtextxy(450,200,"press 'enter' to kick");

outtextxy(450,250,"press '\' to mark");

}

void randbomb(void)

{

int k;

int i,j;

randomize();

for(i=0;i=9;i++)

for(j=0;j=9;j++)

{

k=random(5);

if(k==2)

di[j].bomb=1;

}

}

void jisuan(void)

{

int k=0;

int i,j;

for(i=0;i=9;i++)

for(j=0;j=9;j++)

{

if(ijdi[i-1][j-1].bomb)

k=k+1;

if(idi[i-1][j].bomb)

k=k+1;

if(jdi[j-1].bomb)

k=k+1;

if(i=8di[i+1][j].bomb)

k=k+1;

if(j=8di[j+1].bomb)

k=k+1;

if(i=8j=8di[i+1][j+1].bomb)

k=k+1;

if(ij=8di[i-1][j+1].bomb)

k=k+1;

if(i=8jdi[i+1][j-1].bomb)

k=k+1;

di[j].num=k;

k=0;

}

}

void xianbomb(void)

{

int i,j;

char biaoji[2];

char znum[2];

biaoji[0]=1;

biaoji[1]=NULL;

for(i=0;i=9;i++)

for(j=0;j=9;j++)

{

if(di[j].bomb==1)

outtextxy(di[j].x+2,di[j].y+2,biaoji);

else

{

itoa(di[j].num,znum,10);

setfillstyle(1,0);

bar(i*20+202,j*20+122,i*20+218,j*20+138);

outtextxy(i*20+202,j*20+122,znum);

}

}

}

void move(void)

{

int key;

key=bioskey(1);

if(key)

key=bioskey(0);

if(key==0x4800)

{

if(currenty130)

{

setcolor(0);

circle(currentx,currenty,5);

currenty-=20;

setcolor(4);

circle(currentx,currenty,5);

}

else

{

setcolor(0);

circle(currentx,currenty,5);

currenty=310;

setcolor(4);

circle(currentx,currenty,5);

}

}

if(key==0x4b00)

{

if(currentx210)

{

setcolor(0);

circle(currentx,currenty,5);

currentx-=20;

setcolor(4);

circle(currentx,currenty,5);

}

else

{

setcolor(0);

circle(currentx,currenty,5);

currentx=390;

setcolor(4);

circle(currentx,currenty,5);

}

}

if(key==0x4d00)

{

if(currentx390)

{

setcolor(0);

circle(currentx,currenty,5);

currentx+=20;

setcolor(4);

circle(currentx,currenty,5);

}

else

{

setcolor(0);

circle(currentx,currenty,5);

currentx=210;

setcolor(4);

circle(currentx,currenty,5);

}

}

if(key==0x5000)

{

if(currenty310)

{

setcolor(0);

circle(currentx,currenty,5);

currenty+=20;

setcolor(4);

circle(currentx,currenty,5);

}

else

{

setcolor(0);

circle(currentx,currenty,5);

currenty=130;

setcolor(4);

circle(currentx,currenty,5);

}

}

if(key==0x1c0d)

{

int i,j;

char snum[2];

snum[0]=NULL;

snum[1]=NULL;

i=(currentx-210)/20;

j=(currenty-130)/20;

if(di[j].bomb==1)

{

outtextxy(100,100,"game over");

xianbomb();

sleep(2);

exit(0);

}

if(di[j].bomb==0)

{

di[j].wa=1;

setfillstyle(1,0);

bar(currentx-8,currenty-8,currentx+8,currenty+8);

setcolor(15);

itoa(di[j].num,snum,10);

outtextxy(currentx-8,currenty-8,snum);

setcolor(4);

circle(currentx,currenty,5);

}

}

if(key==0x2b5c)

{

char biaoji[2];

biaoji[0]=1;

biaoji[1]=NULL;

setcolor(0);

bar(currentx-8,currenty-8,currentx+8,currenty+8);

setcolor(4);

outtextxy(currentx-8,currenty-8,biaoji);

circle(currentx,currenty,5);

}

}

void success(void)

{

int k=1;

int i,j;

for(i=0;i=9;i++)

for(j=0;j=9;j++)

if(di[j].bomb==0di[j].wa==0)

k=0;

if(k==1)

{

outtextxy(100,100,"success good");

xianbomb();

sleep(2);

exit(0);

}

}

void main(void)

{

int gd=DETECT,gm;

initgraph(gd,gm,"");

initxy();

initmu();

randbomb();

jisuan();

setcolor(4);

circle(210,130,5);

while(1)

{

move();

success();

}

}

如何用C++寫(xiě)掃雷?????????????

用VC++編寫(xiě)掃雷游戲

用VC++編寫(xiě)掃雷游戲

王洪亞

本文從分析windows掃雷游戲的功能特點(diǎn)開(kāi)始,應(yīng)用面向?qū)ο蟮目梢暬幊陶Z(yǔ)言visual c++給出了個(gè)功能模塊的具體實(shí)現(xiàn)方法,并提供了編寫(xiě)小游戲程序的一般方法和visual c++的一些使用技巧。

首先分析掃雷的最基本功能。

點(diǎn)擊鼠標(biāo)左鍵于未知區(qū)域,如果未知區(qū)域有雷,游戲停止,顯示所有的地雷。如果沒(méi)雷,則顯示周?chē)讛?shù),如果周?chē)鷽](méi)雷,則再查看周?chē)藗€(gè)區(qū)域是否有雷直到有雷為止并顯示,這其實(shí)是一個(gè)遞歸過(guò)程。

點(diǎn)擊鼠標(biāo)右鍵于未知區(qū)域,則將其置為有雷而不管是否真的有雷。可選擇初、中、高三級(jí)并可自定義雷數(shù)和區(qū)域大小。

雷區(qū)上部左側(cè)顯示總雷數(shù)減被標(biāo)明有雷區(qū)域的數(shù)目。

雷區(qū)上部中間位置顯示一按鈕用于開(kāi)局和顯示鼠標(biāo)動(dòng)作的結(jié)果。

雷區(qū)上部右側(cè)顯示掃雷的時(shí)間。

將雷全部掃清后,則顯示一對(duì)話框?qū)⒛愕男彰浫肱判邪?。以時(shí)間排序。

為完成上述功能,應(yīng)用visual c++的具體技術(shù)細(xì)節(jié)如下:

1. 應(yīng)用appwizard創(chuàng)建基于sdi的應(yīng)用程序cbombapp,去除打印和狀態(tài)條支持,在資源編輯器中修改菜單和相應(yīng)的加速鍵,使其與windows掃雷游戲一致。具體為開(kāi)局(id-game-begin)、初級(jí)(id-game-junior)、中級(jí)(id-game-middle)、高級(jí)(id-game-senior)、自定義(id-game-custom)、顏色(id-game-color)、英雄榜(id-game-sort)、退出(id-game-exit)、幫助(id-help)。

2. 在資源編輯器中對(duì)應(yīng)于雷區(qū)的每個(gè)小區(qū)域的13個(gè)屬性。用畫(huà)筆或其他繪圖工具繪制出相對(duì)應(yīng)的13個(gè)10乘10的16色小位圖,三個(gè)對(duì)應(yīng)于小人表情的20乘20的16色小位圖,供更換顏色時(shí)使用的一套與前16個(gè)對(duì)應(yīng)的單色位圖,顯示時(shí)間和雷數(shù)的0~9十個(gè)數(shù)字位圖(底色為黑色)。

定制customer對(duì)話框,內(nèi)含三個(gè)靜態(tài)文本控件和三個(gè)編輯控件,三個(gè)編輯控件分別對(duì)應(yīng)成員m_irownum,m_icolumnnum,m_ibombnum。該對(duì)話框用于定制雷數(shù),行列數(shù),其相應(yīng)的mfc類(lèi)為ccustomer。定制sort對(duì)話框,內(nèi)含九個(gè)靜態(tài)文本控件,其中六個(gè)顯示排行榜的姓名和時(shí)間,其對(duì)應(yīng)的mfc類(lèi)為csort。定制input對(duì)話框,內(nèi)含一個(gè)靜態(tài)文本控件和一個(gè)編輯控件,編輯控件用于在游戲成功結(jié)束時(shí)輸入姓名,其對(duì)應(yīng)的mfc類(lèi)為cinput。

3. 定義類(lèi)bomb,封裝每顆雷的相關(guān)屬性。

class bomb

{

public:

int isbomb;//決定初始時(shí)是否是雷

bool issel; //判斷區(qū)域是否被處理過(guò)且周?chē)欣?/p>

bool isdone;//判斷遞歸時(shí)是否被處理過(guò)

int num; //周?chē)讛?shù)

bool findbomb; //排雷者認(rèn)為是雷時(shí)置一(但是不一定真是雷)

} ;

4. 重載cmainframe中precreatewindow,并設(shè)置相應(yīng)屬性,使其窗體大小固定,這樣就固定了顯示區(qū)域的大小為初始10乘10個(gè)雷和外加雷區(qū)上部的控制區(qū)域,部分代碼如下。

cs.style=ws_overlapped|ws_sysmenu| ws_border|ws_minimizebox;

cs.cy = 10*15+6;

cs.cx = 10*15+60; //6和60分別是橫縱的附加值,用于邊框、菜單、標(biāo)題條、控制區(qū)域。

5. 游戲的主要工作就是呈現(xiàn)不斷變換的圖形或動(dòng)畫(huà),并按用戶(hù)的輸入交互進(jìn)行顯示,而windows文檔-----視窗構(gòu)架中的視窗的功能正是接受用戶(hù)輸入并負(fù)責(zé)顯示,因此由cview類(lèi)來(lái)完成掃雷的大部分工作。在cbombview中定義下列成員變量記錄相關(guān)操作的結(jié)果或?qū)ο蟮臓顟B(tài)。

bomb m_bomb[30][30]; //最大的地雷區(qū)域

cstring m_currenttime; //用于記錄并顯示掃雷時(shí)間

ctime m_begintime;//記錄游戲開(kāi)始時(shí)的時(shí)間

bool m_timerbegin;//定時(shí)器是否開(kāi)啟

int m_ibomnum;//雷的數(shù)目

int m_irow;//雷的行數(shù)

int m_icolumn;//雷的列數(shù)

int m_ibombfound;//指示被認(rèn)為是雷的數(shù)目

cbitmapbutton m_bitbutton;//控制區(qū)的位圖按鈕

int m_currentlevel;//指示當(dāng)前游戲的級(jí)別

bool m_biscolor;//指示當(dāng)前是彩色還是單色

cbitmap m_bmbomb[12];//用于存放12個(gè)小位圖

int m_igameover;//游戲未結(jié)束置0,已清除所有的雷置1,被炸死置2。

重載cbombview中oncreate函數(shù)創(chuàng)建位圖按鈕,該位圖按鈕的兩幅位圖對(duì)應(yīng)了正常、排雷正確兩種狀態(tài),當(dāng)要顯示被炸死的狀態(tài)時(shí)應(yīng)動(dòng)態(tài)銷(xiāo)毀該按鈕,并重新創(chuàng)建一位圖對(duì)應(yīng)正常和被炸死兩種狀態(tài),將該位圖按鈕的id號(hào)定為id_game_begin,這樣一來(lái)當(dāng)點(diǎn)擊按鈕時(shí)便可重新開(kāi)始游戲,部分代碼如下。

crect rcclient;

getclientrect(rcclient);

crect rect(rcclient.cx/2-8,10,rcclient.cx/2+8,20);

m_button.create("new",bs_defpushbutton|ws_visible|

bs_ownerdraw,rect,this,id_game_begin);

m_button.loadbitmaps(idb_face1, idb_face2);

顯示時(shí)間的功能相對(duì)比較簡(jiǎn)單,在響應(yīng)第一個(gè)wm_lbuttomdown消息時(shí)開(kāi)啟定時(shí)器,并記錄游戲開(kāi)始的時(shí)間,在wm_time消息響應(yīng)函數(shù)ontimer中獲得當(dāng)前時(shí)間,減去游戲開(kāi)始時(shí)的時(shí)間,在顯示時(shí)間的客戶(hù)區(qū)域顯示得到的時(shí)間差(用數(shù)字位圖),當(dāng)游戲結(jié)束時(shí)(排完全部雷或被炸死)關(guān)閉定時(shí)器,停止顯示。

wm_lbuttomdown消息響應(yīng)函數(shù)onlbuttomdown是處理用戶(hù)輸入的主要執(zhí)行者,函數(shù)首先判斷點(diǎn)中位置是否是雷,是則關(guān)閉定時(shí)器,銷(xiāo)毀原位圖按鈕,創(chuàng)建一對(duì)應(yīng)正常和被炸死兩種狀態(tài)的新位圖按鈕,并調(diào)用setstate將其設(shè)置為pushdown(小人哭的狀態(tài)),將m_bgameover,置為true標(biāo)志游戲結(jié)束,否則先調(diào)用setstate 設(shè)置位圖按鈕為pushdown (小人笑的狀態(tài)),并在onlbuttomup中設(shè)置位圖按鈕為正常狀態(tài),然后調(diào)用caculate函數(shù)記下周?chē)椎臄?shù)目,最后調(diào)用invalidate使客戶(hù)區(qū)無(wú)效,迫使ondraw函數(shù)重繪客戶(hù)區(qū)域,在調(diào)用invalidate時(shí)不應(yīng)重畫(huà)背景,避免閃爍,這樣就完成了在雷區(qū)按下左鍵的響應(yīng)動(dòng)作。

wm_rbuttomdown消息響應(yīng)函數(shù)onlbuttomdown將被認(rèn)為有雷位置的m_ibombnum.findbomb置一,減少左上角的雷記數(shù),然后判斷是否真正全部排完了雷,是則結(jié)束游戲彈出input對(duì)話框,讓掃雷的人輸入姓名,在響應(yīng)idok通知碼時(shí)將其寫(xiě)入注冊(cè)表,沒(méi)有全部排完則使客戶(hù)區(qū)無(wú)效,迫使ondraw函數(shù)重繪客戶(hù)區(qū)域完成在雷區(qū)按下右鍵的動(dòng)作。

ondraw函數(shù)在每次點(diǎn)擊左鍵或右鍵時(shí)都會(huì)被調(diào)用重雷區(qū)和控制區(qū)域,因?yàn)辄c(diǎn)擊情況的復(fù)雜性和雷屬性的多元化導(dǎo)致ondraw函數(shù)需要精心設(shè)計(jì)。

函數(shù)caculate計(jì)算某個(gè)雷周?chē)睦讛?shù),根據(jù)前面的分析知道,計(jì)算某個(gè)雷周?chē)睦讛?shù)本身就是一個(gè)遞歸過(guò)程,在編制時(shí)應(yīng)注意遞歸的邊界條件,稍不注意會(huì)陷入無(wú)窮遞歸而耗盡了系統(tǒng)的資源。

6. 菜單命令的響應(yīng)是游戲交互的另一個(gè)重要方式,下面的九個(gè)命令響應(yīng)函數(shù)分別與九個(gè)菜單項(xiàng)相對(duì)應(yīng),用以完成用戶(hù)的更新和設(shè)置命令。

ongamebegin完成初始時(shí)間清零,隨機(jī)布雷,依據(jù)顏色指示裝載12幅小位圖,使雷區(qū)無(wú)效調(diào)用ondraw重繪等工作。其中隨機(jī)布雷就是多次調(diào)用rand(),根據(jù)其返回值決定m_bomb[i][j].isbomb的值。

ongamecustom首先彈出ccustomer對(duì)話框,在用戶(hù)輸入設(shè)置后響應(yīng)idok通知碼時(shí)將用戶(hù)輸入的雷數(shù)、行列數(shù)分別賦給cview的數(shù)據(jù)成員m_ibombnum、m_irow、m_icolumn,得到框架窗口的指針,用其調(diào)用movewindow將窗口調(diào)至所需大小,銷(xiāo)毀原位置的位圖按鈕,并在x軸坐標(biāo)為新窗口寬1/2減8處,y軸坐標(biāo)為新窗口頂部加30的位置創(chuàng)建一新按鈕。最后調(diào)用ongamebegin重新開(kāi)始游戲。

ongamejunior、ongamemiddle、ongamesenior三個(gè)函數(shù)與ongamecustom類(lèi)似,只不過(guò)將分別賦給cview的數(shù)據(jù)成員m_ibombnum、m_irow、m_icolumn以固定的值,其大小可由編程者自定,筆者定為junior(20,8,8,)、middle(40,13,13)、senior(99,20,25)。

ongamecolor函數(shù)銷(xiāo)毀原位圖按鈕,根據(jù)重新裝載位圖的標(biāo)志m_iscolor來(lái)創(chuàng)建新的位圖按鈕,將裝載12幅單色位圖的標(biāo)志取反,調(diào)用ongamebegin重新開(kāi)始游戲。

ongamesort函數(shù)根據(jù)當(dāng)前游戲級(jí)別從注冊(cè)表中讀出排名并彈出sort對(duì)話框顯示結(jié)果。到現(xiàn)在為止,一個(gè)自己編制的掃雷游戲就基本完成了,將數(shù)百行代碼編譯一下,找出小錯(cuò)誤,最后build一遍,run一下,好了,可愛(ài)的掃雷游戲就出現(xiàn)在你的面前了。怎么樣,自己的勞動(dòng)成果并不比microsoft的差吧,而且你還可以把小位圖畫(huà)成各種樣子,當(dāng)然你自己要認(rèn)得出才行了。

C語(yǔ)言掃雷游戲源代碼

"掃雷"小游戲C代碼

#includestdio.h

#includemath.h

#includetime.h

#includestdlib.h

main( )

{char a[102][102],b[102][102],c[102][102],w;

int i,j; ?/*循環(huán)變量*/

int x,y,z[999]; ?/*雷的位置*/

int t,s; ?/*標(biāo)記*/

int m,n,lei; ?/*計(jì)數(shù)*/

int u,v; ?/*輸入*/

int hang,lie,ge,mo; ?/*自定義變量*/

srand((int)time(NULL)); ?/*啟動(dòng)隨機(jī)數(shù)發(fā)生器*/

leb1:? /*選擇模式*/

printf("\n? ?請(qǐng)選擇模式:\n ??1.標(biāo)準(zhǔn) ?2.自定義\n");

scanf("%d",mo);

if(mo==2) ?/*若選擇自定義模式,要輸入三個(gè)參數(shù)*/

{do

{t=0; printf("請(qǐng)輸入\n行數(shù) 列數(shù) 雷的個(gè)數(shù)\n");

scanf("%d%d%d",hang,lie,ge);

if(hang2){printf("行數(shù)太少\n"); t=1;}

if(hang100){printf("行數(shù)太多\n");t=1;}

if(lie2){printf("列數(shù)太少\n");t=1;}

if(lie100){printf("列數(shù)太多\n");t=1;}

if(ge1){printf("至少要有一個(gè)雷\n");t=1;}

if(ge=(hang*lie)){printf("雷太多了\n");t=1;}

}while(t==1);

}

else{hang=10,lie=10,ge=10;}? /*否則就是選擇了標(biāo)準(zhǔn)模式(默認(rèn)參數(shù))*/

for(i=1;i=ge;i=i+1)? /*確定雷的位置*/

{do

{t=0; z[i]=rand( )%(hang*lie);

for(j=1;ji;j=j+1){if(z[i]==z[j]) t=1;}

}while(t==1);

}

for(i=0;i=hang+1;i=i+1)? /*初始化a,b,c*/

{for(j=0;j=lie+1;j=j+1) {a[i][j]='1'; b[i][j]='1'; c[i][j]='0';} }

for(i=1;i=hang;i=i+1)

{for(j=1;j=lie;j=j+1) {a[i][j]='+';} }

for(i=1;i=ge;i=i+1) ?/*把雷放入c*/

{x=z[i]/lie+1; y=z[i]%lie+1; c[x][y]='#';}

for(i=1;i=hang;i=i+1)? /*計(jì)算b中數(shù)字*/

{for(j=1;j=lie;j=j+1)

{m=48;

if(c[i-1][j-1]=='#')m=m+1; if(c[i][j-1]=='#')m=m+1;

if(c[i-1][j]=='#')m=m+1; ?if(c[i+1][j+1]=='#')m=m+1;

if(c[i][j+1]=='#')m=m+1; ?if(c[i+1][j]=='#')m=m+1;

if(c[i+1][j-1]=='#')m=m+1; if(c[i-1][j+1]=='#')m=m+1;

b[i][j]=m;

}

}

for(i=1;i=ge;i=i+1) ?/*把雷放入b中*/

{x=z[i]/lie+1; y=z[i]%lie+1; b[x][y]='#';}

lei=ge; ?/*以下是游戲設(shè)計(jì)*/

do

{leb2:? /*輸出*/

system("cls");printf("\n\n\n\n");

printf(" ???");

for(i=1;i=lie;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c ?",w);

}

printf("\n ??|");

for(i=1;i=lie;i=i+1){printf("---|");}

printf("\n");

for(i=1;i=hang;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c |",w);

for(j=1;j=lie;j=j+1)

{if(a[i][j]=='0')printf("? ?|");

else printf(" %c |",a[i][j]);

}

if(i==2)printf(" 剩余雷個(gè)數(shù)");

if(i==3)printf(" %d",lei);

printf("\n? ?|");

for(j=1;j=lie;j=j+1){printf("---|");}

printf("\n");

}

scanf("%d%c%d",u,w,v); ?/*輸入*/

u=u+1,v=v+1;

if(w!='#'a[u][v]=='@')

goto leb2;

if(w=='#')

{if(a[u][v]=='+'){a[u][v]='@'; lei=lei-1;}

else if(a[u][v]=='@'){a[u][v]='?'; lei=lei+1;}

else if(a[u][v]=='?'){a[u][v]='+';}

goto leb2;

}

a[u][v]=b[u][v];

leb3: ?/*打開(kāi)0區(qū)*/

t=0;

if(a[u][v]=='0')

{for(i=1;i=hang;i=i+1)

{for(j=1;j=lie;j=j+1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; ?if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=1;i=hang;i=i+1)

{for(j=lie;j=1;j=j-1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1;? ?if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=hang;i=1;i=i-1)

{for(j=1;j=lie;j=j+1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; ?if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=hang;i=1;i=i-1)

{for(j=lie;j=1;j=j-1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1;if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1;? if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=1;i=hang;i=i+1) ?/*檢測(cè)0區(qū)*/

{for(j=1;j=lie;j=j+1)

{if(a[i][j]=='0')

{if(a[i-1][j-1]=='+'||a[i-1][j-1]=='@'||a[i-1][j-1]=='?')t=1;

if(a[i-1][j+1]=='+'||a[i-1][j+1]=='@'||a[i-1][j+1]=='?')t=1;

if(a[i+1][j-1]=='+'||a[i+1][j-1]=='@'||a[i+1][j-1]=='?')t=1;

if(a[i+1][j+1]=='+'||a[i+1][j+1]=='@'||a[i+1][j+1]=='?')t=1;

if(a[i+1][j]=='+'||a[i+1][j]=='@'||a[i+1][j]=='?')t=1;

if(a[i][j+1]=='+'||a[i][j+1]=='@'||a[i][j+1]=='?')t=1;

if(a[i][j-1]=='+'||a[i][j-1]=='@'||a[i][j-1]=='?')t=1;

if(a[i-1][j]=='+'||a[i-1][j]=='@'||a[i-1][j]=='?')t=1;

}

}

}

if(t==1)goto leb3;

}

n=0; ?/*檢查結(jié)束*/

for(i=1;i=hang;i=i+1)

{for(j=1;j=lie;j=j+1)

{if(a[i][j]!='+'a[i][j]!='@'a[i][j]!='?')n=n+1;}

}

}

while(a[u][v]!='#'n!=(hang*lie-ge));

for(i=1;i=ge;i=i+1) ?/*游戲結(jié)束*/

{x=z[i]/lie+1; y=z[i]%lie+1; a[x][y]='#'; }

printf(" ???");

for(i=1;i=lie;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c ?",w);

}

printf("\n ??|");

for(i=1;i=lie;i=i+1){printf("---|");}

printf("\n");

for(i=1;i=hang;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c |",w);

for(j=1;j=lie;j=j+1)

{if(a[i][j]=='0')printf(" |");

else ?printf(" %c |",a[i][j]);

}

if(i==2)printf(" 剩余雷個(gè)數(shù)");

if(i==3)printf(" %d",lei); printf("\n? ?|");

for(j=1;j=lie;j=j+1) {printf("---|");}

printf("\n");

}

if(n==(hang*lie-ge)) printf("你成功了!\n");

else printf("??? 游戲結(jié)束!\n");

printf("??? 重玩請(qǐng)輸入1\n");

t=0;

scanf("%d",t);

if(t==1)goto leb1;

}

/*注:在DEV c++上運(yùn)行通過(guò)。行號(hào)和列號(hào)都從0開(kāi)始,比如要確定第0行第9列不是“雷”,就在0和9中間加入一個(gè)字母,可以輸入【0a9】三個(gè)字符再按回車(chē)鍵。3行7列不是雷,則輸入【3a7】回車(chē);第8行第5列是雷,就輸入【8#5】回車(chē),9行0列是雷則輸入【9#0】并回車(chē)*/


本文名稱(chēng):函數(shù)調(diào)用雷劈數(shù)C語(yǔ)言 雷劈數(shù)c語(yǔ)言編程
當(dāng)前鏈接:http://weahome.cn/article/hipjip.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部