C++基于CMD命令行實(shí)現(xiàn)掃雷小游戲
本文實(shí)例為大家分享了C++基于CMD命令行實(shí)現(xiàn)掃雷小游戲的具體代碼,供大家參考,具體內(nèi)容如下
這個(gè)小游戲是筆者在大一C語(yǔ)言課程設(shè)計(jì)的時(shí)候?qū)懙?,基于命令行,為了顯得漂亮一些,特別加上了彩色特效。
注意:Win10系統(tǒng)須將命令行調(diào)為舊版命令行,否則有可能會(huì)顯示亂碼!
代碼示例:
#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)計(jì)圖(用于顯示周圍雷總數(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ù)目(計(jì)數(shù)器),用于判定玩家獲勝 int n=5; ?//布雷數(shù)(待輸入) /主函數(shù)開(kāi)始/// ? void main() ? { ? ? ? int i=0,j=0; ? ? ? int flag=1; ? ? ? int temp=0; ? ? ? char ch1; ? ? ? SetColor(3,0); ? ? ? printf("歡樂(lè)掃雷\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)移動(dòng)前的位置屬于已被挖雷(在上一次光標(biāo)移動(dòng)時(shí)已經(jīng)恢復(fù)數(shù)字,只是還沒(méi)有showmine()而已) ? ? ? ? ? ? ? ? ? ? i--; ?//光標(biāo)移動(dòng) ? ? ? ? ? ? ? ? ? ? if(row[I][J]<'9' && row[I][J]>='0'){ ?//確認(rèn)移動(dòng)后的位置已被挖雷 ? ? ? ? ? ? ? ? ? ? ? ? temp=row[I][J]; ?//用temp記錄該位置原數(shù)字 ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; ?//將該位置標(biāo)記為選中 ? ? ? ? ? ? ? ? ? ? ? ? showmine(); ?//顯示雷區(qū)圖 ? ? ? ? ? ? ? ? ? ? ? ? row[I][J]=temp; ?//將選中位置改回原數(shù)字 ? ? ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? row[I][J]='\x01'; //如果不會(huì)被覆蓋,則直接選中即可 ? ? ? ? ? ? ? ? ? ? ? showmine(); ?//顯示雷區(qū)圖 ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? ? ? } ? ?? ??? ??? ??? ?//移動(dòng)前的位置未被挖雷情況 ? ? ? ? ? ? ? ? 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'){ //挖雷消息識(shí)別&處理 ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? if (mines[i][j]==1) ?//如果踩雷 ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? printmine(); ?//打印全圖雷區(qū),游戲結(jié)束... ? ? ? ? ? ? ? ? printf("\n BOOM!\n\n"); ? ? ? ? ? ? ? ? ? flag=0; ? ? ? ? ? ? ? ? ? getch(); ? ? ? ? ? ? ? ? ? fflush(stdin); ? ? ? ? ? ? ? ? ? break;? ? ? ? ? ? ? }else{ ? ?? ??? ??? ??? ?//如果沒(méi)有踩雷...標(biāo)示本位地雷數(shù)目(從雷數(shù)統(tǒng)計(jì)圖讀?。? ? ? ? ? ? ? ? ? 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){ ? ? ?//無(wú)雷地區(qū)自動(dòng)展開(kāi) ? ? ? ? ? ? ? ? ? ? ? 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ù)雷算法開(kāi)始// ? 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"); ? ? ? } ? } ? ?? /隨機(jī)布雷/// ? 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è)置隨機(jī)種子 ? ? ? srand(time(0)); ? ? ? //隨機(jī)布雷開(kāi)始 ? ? ? for(k=1;k<=x;){ ? ? ? ? ? i=rand()%14; ? ? ? ? ? j=rand()%14; ? ? ? ? ? if(mines[i][j]!=1){ ? ? ? ? ? ? ? mines[i][j]=1; ? ? ? ? ? ? ? k++; ? ? ? ? ? }else{ ? ? ? ? ? ? ? continue; ? ? ? ? ? } ? ? ? } ? ?? ?//方格雷數(shù)計(jì)算開(kāi)始 ? ? 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ù)計(jì)算? ? ? ? ? ? ? ? ? //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ū)(失敗時(shí))/// ? 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; ? }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言連接并操作Sedna XML數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了C語(yǔ)言連接并操作Sedna XML數(shù)據(jù)庫(kù)的方法,實(shí)例分析了C語(yǔ)言操作XML文件的相關(guān)技巧,需要的朋友可以參考下2015-06-06C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++課程設(shè)計(jì)之圖書(shū)館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++ Opencv自寫(xiě)函數(shù)實(shí)現(xiàn)膨脹腐蝕處理技巧
這篇文章主要介紹了C++ Opencv 自寫(xiě)函數(shù)實(shí)現(xiàn)膨脹腐蝕處理,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10簡(jiǎn)單談?wù)凜++ 頭文件系列之(bitset)
我們要使用bitset,首先需要包含頭文件bitset。和vector對(duì)象不一樣的是bitset類型對(duì)象的區(qū)別僅在其長(zhǎng)度而不在其類型。在定義bitset的時(shí)候,要明確bitset包含了多少位,須在尖括號(hào)內(nèi)給出它的長(zhǎng)度值。長(zhǎng)度值必須定義為整形字面值常量或是已用常量值初始化的整型的const對(duì)象2017-02-02