數(shù)據(jù)結(jié)構(gòu)掃雷實(shí)訓(xùn)源代碼_第1頁
數(shù)據(jù)結(jié)構(gòu)掃雷實(shí)訓(xùn)源代碼_第2頁
數(shù)據(jù)結(jié)構(gòu)掃雷實(shí)訓(xùn)源代碼_第3頁
數(shù)據(jù)結(jié)構(gòu)掃雷實(shí)訓(xùn)源代碼_第4頁
數(shù)據(jù)結(jié)構(gòu)掃雷實(shí)訓(xùn)源代碼_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、所需頭文件 和 頭文件的安裝方法請(qǐng)到網(wǎng)上下載/*/* 著作權(quán)所有者 : */* 文件名 : 掃雷.cpp */* 內(nèi)容 : 對(duì)排好序的文件進(jìn)行檢索 */* 作成日期 作者 : */* 修正日期 作者 : */*/#include#include #include #include#include#include #includepthread_t thread2;pthread_mutex_t mut;MOUSEMSG m;int *a;/一個(gè)用于分配空間的指針int post;/初始化不同等級(jí)雷的數(shù)量int size;/不同等級(jí)分配不同內(nèi)存空間int shenyumine;/記錄剩余雷的數(shù)量

2、int *two;/記錄每個(gè)位置旁邊有多少雷,0代表無雷,9代表當(dāng)前位置是雷int *twotemp;/記錄當(dāng)前位置是否被鼠標(biāo)左鍵點(diǎn)擊int *numflags;/記錄當(dāng)前位置鼠標(biāo)右鍵是否點(diǎn)擊int timerm=0;/內(nèi)置計(jì)時(shí)器 的分鐘數(shù)int timers=0;/內(nèi)置計(jì)時(shí)器 的秒數(shù)int controltime=0; int center_x=0;int center_y=0;int classsign=1;/定義游戲等級(jí) 且默認(rèn)狀態(tài) 為低級(jí)int leftdownsign;/記錄int gameend; /標(biāo)記游戲是否結(jié)束int returnend=0;/標(biāo)記是否點(diǎn)擊返回按鈕int re

3、starttimer;/標(biāo)記是否點(diǎn)擊重新開始 以清零計(jì)時(shí)器clock_t time_start,time_stop; /標(biāo)記游戲開始到結(jié)束所用時(shí)間float score;/記錄游戲分?jǐn)?shù)int lable;/標(biāo)簽控制鼠標(biāo)點(diǎn)擊時(shí)對(duì)應(yīng)的不同頁面IMAGE p;/讀取圖片 鼠標(biāo)未指向狀態(tài)IMAGE p11;/讀取圖片 鼠標(biāo)指向狀態(tài)IMAGE p1;/讀取圖片 鼠標(biāo)未指向狀態(tài)IMAGE p21;/讀取圖片 鼠標(biāo)指向狀態(tài)IMAGE p2;IMAGE p31;IMAGE p3;IMAGE p41;IMAGE c;IMAGE c1;IMAGE c11;IMAGE c2;IMAGE c21;IMAGE c3;I

4、MAGE c31;IMAGE f;IMAGE s;IMAGE t;IMAGE restarttemp;/讀取圖片 鼠標(biāo)未指向狀態(tài)IMAGE restart;IMAGE returtemp;/讀取圖片 鼠標(biāo)指向狀態(tài)IMAGE retur;IMAGE zero;/讀取旁邊地雷數(shù)量圖標(biāo)IMAGE one;IMAGE two1;IMAGE three;IMAGE four;IMAGE five;IMAGE six;IMAGE seven;IMAGE eight;IMAGE mine;/讀取地雷IMAGE shenyu; /隱蔽計(jì)數(shù)顯示IMAGE suremax;IMAGE suremaxtemp;IM

5、AGE clearrecod;IMAGE clearrecodtemp;void mouseaction();void ginterface();void mianinterface();void random();void addtion();void autoshow(int x,int y,int temp);void autoshowtemp(int x,int y,int temp,int a,int b,int c);void showshenyuminenum();void maxscore(int score,int sign);void thread_create();voi

6、d clearrecodfile();void suregameend();void autoshowtip(int x,int y,int temp);void autoshowtemptiptemp(int x,int y,int temp,int a,int b,int c);void autoshowreturntemp(int x,int y,int temp,int a,int b,int c);void autoshowreturn(int x,int y,int temp);int scanautoshow(int x,int y,int temp);int scanautos

7、howtemp(int x,int y,int temp,int a,int b,int c);void getclass()/得到游戲等級(jí)函數(shù)putimage(270,80,&c);putimage(270,80,&c1);putimage(270,175,&c2);putimage(270,285,&c3);lable=2;mouseaction();void mouseaction()/鼠標(biāo)控制 游戲界面int sign=0;/標(biāo)記鼠標(biāo)該函數(shù)是否退出int flagsnum=0;/插入旗幟的個(gè)數(shù)int temp;/記錄當(dāng)前等級(jí)下雷盤的行數(shù)if(classsign=1)temp=6;if(

8、classsign=2)temp=9;if(classsign=3)temp=10;while(1)m=GetMouseMsg(); /得到鼠標(biāo)當(dāng)前狀態(tài) 如沒有狀態(tài)則等待switch(m.uMsg)case WM_MOUSEMOVE:/移動(dòng)鼠標(biāo)if(lable=1)/主界面if(m.x=270&m.x=80&m.y=115) /確定鼠標(biāo)當(dāng)前位置是否在相應(yīng)范圍內(nèi)putimage(270,80,&p11);if(m.x370)|(m.y115)putimage(270,80,&p);if(m.x=270&m.x=220&m.y=255)putimage(270,220,&p21);if(m.x37

9、0)|(m.y255)putimage(270,220,&p3);if(m.x=270&m.x=150&m.y=185)putimage(270,150,&p41);if(m.x370)|(m.y185)putimage(270,150,&p2);if(m.x=270&m.x=290&m.y=325)putimage(270,290,&p31);if(m.x370)|(m.y325)putimage(270,290,&p1);if(lable=2)/等級(jí)設(shè)置if(m.x=270&m.x=80&m.y=120)putimage(270,80,&c11);if(m.x370)|(m.y120)pu

10、timage(270,80,&c1);if(m.x=270&m.x=175&m.y=215)putimage(270,175,&c21);if(m.x370)|(m.y215)putimage(270,175,&c2);if(m.x=270&m.x=285&m.y=325)putimage(270,285,&c31);if(m.x370)|(m.y325)putimage(270,285,&c3);if(lable=3)/游戲界面if(m.x=130&m.x=400&m.y=440)putimage(130,400,&restarttemp);if(m.x250)|(m.y440)putima

11、ge(130,400,&restart);if(m.x=350&m.x=400&m.y=440)putimage(350,400,&returtemp);if(m.x470)|(m.y440)putimage(350,400,&retur);if(lable=4)/最高記錄界面if(m.x=150&m.x=400&m.y=380&m.x=400&m.y=270&m.x=220&m.y=270&m.x=150&m.y=270&m.x=80&m.y=270&m.x=290&m.y=270&m.x=80&m.y=270&m.x=175&m.y=270&m.x=285&m.y=150&m.x=50&m

12、.y=(50+temp*30)&leftdownsign=0&gameend=0)/判斷鼠標(biāo)位置并確定游戲是否結(jié)束和 當(dāng)前位置是否被鼠標(biāo)左鍵點(diǎn)擊/printf(%d %d %dn,*(two+(m.x-150)/30)+(m.y-50)/30)*temp),(m.y-50)/30,(m.x-150)/30);if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)!=9)if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=0)/putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&s);aut

13、oshow(m.x,m.y,temp);else if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=1&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0)*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&one);else if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=2&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*t

14、emp)=0)*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&two1);else if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=3&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0)*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&three

15、);else if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=4&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0)*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&four);else if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=5&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0)*(twotemp+

16、(m.x-150)/30)+(m.y-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&five);else if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=6&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0)*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&six);else if(*(two+(m.

17、x-150)/30)+(m.y-50)/30)*temp)=7&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0)*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&seven);else if(*(two+(m.x-150)/30)+(m.y-50)/30)*temp)=8&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0)*(twotemp+(m.x-150)/30)+(m.y

18、-50)/30)*temp)=1;putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&eight);if(*(numflags+(m.x-150)/30)+(m.y-50)/30)*temp)=1)*(numflags+(m.x-150)/30)+(m.y-50)/30)*temp)=0;shenyumine+;/取消有雷狀態(tài) 重新計(jì)算雷德數(shù)量showshenyuminenum();suregameend();elsetime_stop=clock(); /挖到地雷 游戲結(jié)束 計(jì)時(shí)器得到當(dāng)前時(shí)間for(int i=0;itemp;i+)for(in

19、t j=0;j=130&m.x=400&m.y=350&m.x=400&m.y=150&m.x=400&m.y=380&m.x=400&m.y=150&m.x=50&m.y=(50+temp*30)&*(numflags+(m.x-150)/30)+(m.y-50)/30)*temp)=0&*(twotemp+(m.x-150)/30)+(m.y-50)/30)*temp)=0&gameend=0)/判斷當(dāng)前位置是否被右鍵和左鍵點(diǎn)擊和自動(dòng)翻開putimage(m.x-150)/30)*30+150,(m.y-50)/30)*30+50,&f);*(numflags+(m.x-150)/30)+

20、(m.y-50)/30)*temp)=1;/記錄當(dāng)前位置已被右鍵點(diǎn)擊/printf(x=%d,y=%dn,(m.y-50)/30),(m.x-150)/30);shenyumine-;/點(diǎn)擊后重置剩余雷的數(shù)量showshenyuminenum();/*int findminenum=0;/記錄游戲著 正確定位地雷的個(gè)數(shù)for(int i=0;itemp;i+)for(int j=0;jtemp;j+)if(*(numflags+i*temp+j)=1&*(two+i*temp+j)=9)findminenum+;/printf(%d %d ,*(numflags+i*temp+j),*(two

21、+i*temp+j);j=0;/printf(n);if(findminenum=post&shenyumine=0&gameend=0)time_stop=clock();leftdownsign=1;outtextxy(150,450,恭喜你 地雷已全部清除);outtextxy(150,370,你的得分為:);/score=(double)(time_stop-time_start)/CLOCKS_PER_SEC;char scoretemp5;if(classsign=1)score=1000-6*score;if(score=0)score=0;else if(classsign=2)score=1000-3*score;if(score=0)score=0;if(classsign=3)score=1000-score;if(score=0)score=0;/printf(%f %f %d n,score,(double)(time_stop-time_start)/

溫馨提示

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

評(píng)論

0/150

提交評(píng)論