C++基于CMD命令行實現(xiàn)掃雷小游戲
更新時間:2022年05月07日 11:38:49 作者:雨者
這篇文章主要為大家詳細(xì)介紹了C++基于CMD命令行實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C++基于CMD命令行實現(xiàn)掃雷小游戲的具體代碼,供大家參考,具體內(nèi)容如下
這個小游戲是筆者在大一C語言課程設(shè)計的時候?qū)懙模诿钚?,為了顯得漂亮一些,特別加上了彩色特效。
注意:Win10系統(tǒng)須將命令行調(diào)為舊版命令行,否則有可能會顯示亂碼!
代碼示例:
#include <stdio.h> ? #include <conio.h> ? #include <stdlib.h> ? #include <time.h> ? #include <stdlib.h> ? #include <windows.h> ? ? // 由于棋盤格與邏輯雷區(qū)格有一定差別,所以為了坐標(biāo)能夠相互映射,設(shè)置宏I,J,分別映射邏輯表的i,j。 #define I (i+2) #define J (2*(j+1)+1) ? /*字體顏色處理函數(shù)*/ ? ?? void SetColor(unsigned short ForeColor,unsigned short BackGroundColor){ ? ? ? HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE); ? ? ? SetConsoleTextAttribute(hCon,(ForeColor%16)|(BackGroundColor%16*16)); ? } ? ?? /*游戲主程序*/ ? ?? void showmine(); ? ? ? ?//顯示所有地雷 ? void setmine(int x); ?//布雷 ? void printmine(); ? ? ? //打印所有地雷 ? void countmine(int rowno, int colno); ? ?//數(shù)雷算法 ? //構(gòu)建棋盤 ? char row[16][80]={ ? ? ? {"----------Platform---------------------"}, ? ? ? {"------------------------------------------------------------------------"}, ? ? ? {"01|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"02|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"03|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"04|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"05|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"06|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"07|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"08|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"09|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"10|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"11|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"12|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"13|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? ? ? {"14|\x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02 \x02"}, ? }; ? 構(gòu)建雷區(qū)// ? int mines[14][14]={ ? ? ? ? ? ? //雷區(qū)模擬圖(01二值化,標(biāo)記地雷) ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? }; ? ?? ?? int mines_demo[14][14]={ ? ? ? ? ?//雷數(shù)統(tǒng)計圖(用于顯示周圍雷總數(shù)) ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? ? ? {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, ? }; ? ?? // ? ?? int countstep=0; ?//已挖坑數(shù)目(計數(shù)器),用于判定玩家獲勝 int n=5; ?//布雷數(shù)(待輸入) /主函數(shù)開始/// ? void main() ? { ? ? ? int i=0,j=0; ? ? ? int flag=1; ? ? ? int temp=0; ? ? ? char ch1; ? ? ? SetColor(3,0); ? ? ? printf("歡樂掃雷\n\n"); ? ? ? printf("w-上 s-下 a-左 d-右 q-挖雷\n\n"); ? ? ? SetColor(7,0); ? ? ? printf("作者:PeterZheng\n"); ? ? ? printf("EagleEyes 工作室\n"); ? ? ? printf("EagleEyes.Inc\n\n"); ? ? ? getch(); ? ? ? system("cls"); ? ? ? printf("你想要布幾顆雷?(1< mines <196)"); ? ? ? scanf("%d",&n); ? ? ?? ?system("cls"); ? ? setmine(n); ? ? ? row[I][J]='\x01'; ? ? ? system("cls"); ? ? ? showmine(); ? ?? ?printf("\n\n"); ?? ?//按鍵消息處理核心代碼 ? ? while(flag) ? ? ? { ? ? ? ? ? ch1=getch(); ? ? ? ? ? if(ch1=='w'){ ? ? ? ? ? ? ? if(i==0){ ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ?//確認(rèn)移動前的位置屬于已被挖雷(在上一次光標(biāo)移動時已經(jīng)恢復(fù)數(shù)字,只是還沒有showmine()而已) ? ? ? ? ? ? ? ? ? ? i--; ?//光標(biāo)移動 ? ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ?//確認(rèn)移動后的位置已被挖雷 ? ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ?//用temp記錄該位置原數(shù)字 ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ?//將該位置標(biāo)記為選中 ? ? ? ? ? ? ? ? ? ? ? ? showmine(); ?//顯示雷區(qū)圖 ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ?//將選中位置改回原數(shù)字 ? ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; //如果不會被覆蓋,則直接選中即可 ? ? ? ? ? ? ? ? ? ? ? showmine(); ?//顯示雷區(qū)圖 ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? ? } ? ?? ??? ??? ??? ?//移動前的位置未被挖雷情況 ? ? ? ? ? ? ? ? row[I][J]='\x02'; ? ? ? ? ? ? ? ? ? i--; ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? } ? ? ? ? ? }else if(ch1=='s'){ ? ? ? ? ? ? ? if(i==13){ ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){//防止當(dāng)前位數(shù)字覆蓋 ? ? ? ? ? ? ? ? ? ? ? i++; ? ? ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ //防止下一位數(shù)字覆蓋 ? ? ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ? ? ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? row[I][J]='\x02'; ? ? ? ? ? ? ? ? ? i++; ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? } ? ? ? ? ? }else if (ch1=='a'){ ? ? ? ? ? ? ? if(j==0){ ? ? ? ? ? ? ? ? ? system("cls"); ?? ??? ??? ??? ?if(row[I][J]<'9' && row[I][J]>='0'){ ? ?? ??? ??? ??? ??? ?temp=row[I][J]; ? ?? ??? ??? ??? ??? ?row[I][J]='\x01'; ? ?? ??? ??? ??? ??? ?showmine(); ? ?? ??? ??? ??? ??? ?row[I][J]=temp; ? ?? ??? ??? ??? ??? ?continue; ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? j--; ? ? ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ? ? ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? row[I][J]='\x02'; ? ? ? ? ? ? ? ? ? j--; ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? } ? ? ? ? ? }else if (ch1=='d'){ ? ? ? ? ? ? ? if(j==13){ ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? j++; ? ? ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ? ? ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? row[I][J]='\x02'; ? ? ? ? ? ? ? ? ? j++; ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? } ? ? ? ? ? }else if(ch1=='q'){ //挖雷消息識別&處理 ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? if (mines[i][j]==1) ?//如果踩雷 ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? printmine(); ?//打印全圖雷區(qū),游戲結(jié)束... ? ? ? ? ? ? ? ? printf("\n BOOM!\n\n"); ? ? ? ? ? ? ? ? ? flag=0; ? ? ? ? ? ? ? ? ? getch(); ? ? ? ? ? ? ? ? ? fflush(stdin); ? ? ? ? ? ? ? ? ? break;? ? ? ? ? ? ? }else{ ? ?? ??? ??? ??? ?//如果沒有踩雷...標(biāo)示本位地雷數(shù)目(從雷數(shù)統(tǒng)計圖讀?。? ? ? ? ? ? ? ? ? if(i>0 && j>0 && row[I][J]=='\x01'){ ? ? ? ? ? ? ? ? ? ? ? row[I][J]=(char)(mines_demo[i][j]+48); ? ?? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? }else if(i==0 && j>0 && row[I][J]=='\x01'){ ? ? ? ? ? ? ? ? ? ? ? row[I][J]=(char)(mines_demo[i][j]+48);? ?? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? }else if(i>0 && j==0 && row[I][J]=='\x01'){ ? ? ? ? ? ? ? ? ? ? ? row[I][J]=(char)(mines_demo[i][j]+48);? ?? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? }else if(i==0 && j==0 && row[I][J]=='\x01'){ ? ? ? ? ? ? ? ? ? ? ? row[I][J]=(char)(mines_demo[i][j]+48); ? ?? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? if(mines_demo[i][j]==0 && i>0 && j>0 && i<13 && j<13){ ? ? ?//無雷地區(qū)自動展開 ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i+1][j]==0 && row[I+1][J]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I+1][J]=(char)(mines_demo[i+1][j]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i-1][j]==0 && row[I-1][J]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I-1][J]=(char)(mines_demo[i-1][j]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i][j+1]==0 && row[I][2*(j+1+1)+1]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][2*(j+1+1)+1]=(char)(mines_demo[i][j+1]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i][j-1]==0 && row[I][2*(j-1+1)+1]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I][2*(j-1+1)+1]=(char)(mines_demo[i][j+1]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i+1][j+1]==0 && row[I+1][2*(j+1+1)+1]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I+1][2*(j+1+1)+1]=(char)(mines_demo[i+1][j+1]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i+1][j-1]==0 && row[I+1][2*(j-1+1)+1]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I+1][2*(j-1+1)+1]=(char)(mines_demo[i+1][j+1]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i-1][j+1]==0 && row[I-1][2*(j+1+1)+1]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I-1][2*(j+1+1)+1]=(char)(mines_demo[i-1][j+1]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if(mines_demo[i-1][j-1]==0 && row[I-1][2*(j-1+1)+1]=='\x02'){ ? ? ? ? ? ? ? ? ? ? ? ? ? row[I-1][2*(j-1+1)+1]=(char)(mines_demo[i-1][j+1]+48); ? ?? ??? ??? ??? ??? ??? ?countstep++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? showmine(); ? ? ? ? ? ? ? ? ? if(countstep==196-n) ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? printf("\nYou Win!\n\n"); ? ? ? ? ? ? ? ? ? ? ? getch(); ? ? ? ? ? ? ? ? ? ? ? flag=0; ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? } ? ? ? ? ? } ? ? ? } ? } ? ?? 主函數(shù)結(jié)束/ ? ?? //數(shù)雷算法開始// ? void countmine(int rowno, int colno) ? { ? ? ? int count; ? ? ? int i,j; ? ? ? i=rowno; ? ? ? j=colno; ? ? ? mines_demo[i][j]=mines[i-1][j]+mines[i+1][j]+mines[i][j-1]+mines[i][j+1]+mines[i-1][j-1]+mines[i-1][j+1]+mines[i+1][j-1]+mines[i+1][j+1]; ? ? ? ? return; ? } ? /數(shù)雷算法結(jié)束 ? void DebugMines() { ?? ?int i=0 , j=0; ?? ?printf("\n\n"); ?? ?for (i = 0 ; i < 14 ; i++) ?? ?{ ?? ??? ?for (j=0;j<14;j++) ?? ??? ?{ ?? ??? ??? ?printf("%d ",mines[i][j]); ?? ??? ?} ?? ??? ?printf("\n"); ?? ?} ?? ?printf("\n\n"); ?? ?for (i = 0 ; i < 14 ; i++) ?? ?{ ?? ??? ?for (j=0;j<14;j++) ?? ??? ?{ ?? ??? ??? ?printf("%d ",mines_demo[i][j]); ?? ??? ?} ?? ??? ?printf("\n"); ?? ?} } ///棋盤顯示/// ? void showmine(){ ? ? ? int i=0,j=0; ? ? ? for(i=0;i<16;i++){ ? ? ? ? ? for(j=0;j<30;j++){ ? ? ? ? ? ? ? if(row[i][j]=='\xf'){ ? ? ? ? ? ? ? ? ? SetColor(4,0); ? ? ? ? ? ? ? ? ? printf("%c",row[i][j]); ? ? ? ? ? ? ? ? ? SetColor(7,0); ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? }else if(row[i][j]<='8' && row[i][j]>='0' && j>2){ ? ? ? ? ? ? ? ? ? SetColor(2,0); ? ? ? ? ? ? ? ? ? printf("%c",row[i][j]); ? ? ? ? ? ? ? ? ? SetColor(7,0); ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? } ? ? ? ? ? ? ? printf("%c",row[i][j]); ? ? ? ? ? } ? ? ? ? ? printf("\n"); ? ? ? } ? } ? ?? /隨機布雷/// ? void setmine(int x){ ? ? ? int i,j,k; ? ? ? //初始化棋盤 ? ? ? for(i=0;i<14;i++){ ? ? ? ? ? for(j=0;j<14;j++){ ? ? ? ? ? ? ? mines[i][j]=0; ? ? ? ? ? } ? ? ? } ? ? ? //設(shè)置隨機種子 ? ? ? srand(time(0)); ? ? ? //隨機布雷開始 ? ? ? for(k=1;k<=x;){ ? ? ? ? ? i=rand()%14; ? ? ? ? ? j=rand()%14; ? ? ? ? ? if(mines[i][j]!=1){ ? ? ? ? ? ? ? mines[i][j]=1; ? ? ? ? ? ? ? k++; ? ? ? ? ? }else{ ? ? ? ? ? ? ? continue; ? ? ? ? ? } ? ? ? } ? ?? ?//方格雷數(shù)計算開始 ? ? for(i=0;i<14;i++){ ? ? ? ? ? for(j=0;j<14;j++){ ? ? ? ? ? ? ? if(i>0 && j>0 && i<13 && j<13){ ? ? ? ? ? ? ? ? ? countmine(i,j); ? ? ? ? ? ? ? }else{ //預(yù)置方格雷數(shù)計算? ? ? ? ? ? ? ? ? //if(mines[i][j]!=1){ ? ? ? ? ? ? ? ? ? ? ? if(i==0 && j!=0 && j!=13){ ? ? ? ? ? ? ? ? ? ? ? ? ? mines_demo[0][j]=mines[0][j-1]+mines[1][j]+mines[0][j+1]+mines[1][j-1]+mines[1][j+1]; ? ? ? ? ? ? ? ? ? ? ? }else if(j==0 && i!=0 && i!=13){ ? ? ? ? ? ? ? ? ? ? ? ? ? mines_demo[i][0]=mines[i-1][0]+mines[i+1][0]+mines[i-1][1]+mines[i+1][1]+mines[i][1]; ? ? ? ? ? ? ? ? ? ? ? }else if(i==0 && j==0){ ? ? ? ? ? ? ? ? ? ? ? ? ? mines_demo[0][0]=mines[0][1]+mines[1][1]+mines[1][0]; ? ? ? ? ? ? ? ? ? ? ? }else if(i==13 && j==13){ ? ? ? ? ? ? ? ? ? ? ? ? ? mines_demo[13][13]=mines[12][13]+mines[12][12]+mines[13][12]; ? ? ? ? ? ? ? ? ? ? ? }else if(i==0 && j==13){ ? ? ? ? ? ? ? ? ? ? ? ? ? mines_demo[0][13]=mines[0][12]+mines[1][12]+mines[1][13]; ? ? ? ? ? ? ? ? ? ? ? }else if(i==13 && j==0){ ? ? ? ? ? ? ? ? ? ? ? ? ? mines_demo[13][0]=mines[12][0]+mines[12][1]+mines[13][1]; ? ? ? ? ? ? ? ? ? ? ? }else if(i==13 && j!=0 && j!=13){ ?? ??? ??? ??? ??? ??? ?mines_demo[i][j] = mines[i][j-1]+mines[i][j+1]+mines[i-1][j-1]+mines[i-1][j]+mines[i-1][j+1]; ?? ??? ??? ??? ??? ?}else if (j==13 && i!=0 && i!=13) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?mines_demo[i][j] = mines[i+1][j]+mines[i-1][j]+mines[i-1][j-1]+mines[i][j-1]+mines[i+1][j-1]; ?? ??? ??? ??? ??? ?} ? ? ? ? ? ? ? ? //} ? ? ? ? ? ? ? } ? ? ? ? ? } ? ? ? } ? ? ? return; ? } ? ?? /打印雷區(qū)(失敗時)/// ? void printmine() ? { ? ? ? int i,j; ? ? ? system("cls"); ? ? ? for(i=0;i<14;i++) ? ? ? { ? ? ? ? ? for(j=0;j<14;j++){ ? ? ? ? ? ? ? if( mines[i][j]==1){ ? ? ? ? ? ? ? ? ? row[I][J]='\xf'; ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? row[I][J]='\x02'; ? ? ? ? ? ? ? } ? ? ? ? ? } ? ?? ? ? } ? ? ? showmine(); ? ? ? return; ? }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語言連接并操作Sedna XML數(shù)據(jù)庫的方法
這篇文章主要介紹了C語言連接并操作Sedna XML數(shù)據(jù)庫的方法,實例分析了C語言操作XML文件的相關(guān)技巧,需要的朋友可以參考下2015-06-06C++ Opencv自寫函數(shù)實現(xiàn)膨脹腐蝕處理技巧
這篇文章主要介紹了C++ Opencv 自寫函數(shù)實現(xiàn)膨脹腐蝕處理,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-10-10