欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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++動態(tài)內(nèi)存管理詳解

    C++動態(tài)內(nèi)存管理詳解

    今天小編就為大家分享一篇關(guān)于關(guān)于C++動態(tài)分配內(nèi)存的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-08-08
  • C++ 情懷游戲貪吃蛇的實現(xiàn)流程詳解

    C++ 情懷游戲貪吃蛇的實現(xiàn)流程詳解

    貪吃蛇是曾經(jīng)諾基亞手機上很經(jīng)典很經(jīng)典的傳統(tǒng)老游戲,80.90后的童年時不多的游戲之一,跟電腦上的掃雷一樣,下面來從貪吃蛇手機游戲的前世今生講起
    2021-11-11
  • C語言圖文并茂詳解鏈接過程

    C語言圖文并茂詳解鏈接過程

    首先來思考一個問題:工程中的每個C語言源文件被編譯后生成的目標(biāo)文件,這些目標(biāo)文件如何生成最終的可執(zhí)行程序? 這就需要這節(jié)我們將要分析的鏈接器
    2022-04-04
  • 淺談C++有理數(shù)的表達(dá)和計算

    淺談C++有理數(shù)的表達(dá)和計算

    這篇文章主要為大家詳細(xì)介紹了C++有理數(shù)的表達(dá)和計算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言連接并操作Sedna XML數(shù)據(jù)庫的方法

    C語言連接并操作Sedna XML數(shù)據(jù)庫的方法

    這篇文章主要介紹了C語言連接并操作Sedna XML數(shù)據(jù)庫的方法,實例分析了C語言操作XML文件的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C++課程設(shè)計之圖書館管理系統(tǒng)

    C++課程設(shè)計之圖書館管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++課程設(shè)計之圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++ Opencv自寫函數(shù)實現(xiàn)膨脹腐蝕處理技巧

    C++ Opencv自寫函數(shù)實現(xiàn)膨脹腐蝕處理技巧

    這篇文章主要介紹了C++ Opencv 自寫函數(shù)實現(xiàn)膨脹腐蝕處理,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 簡單談?wù)凜++ 頭文件系列之(bitset)

    簡單談?wù)凜++ 頭文件系列之(bitset)

    我們要使用bitset,首先需要包含頭文件bitset。和vector對象不一樣的是bitset類型對象的區(qū)別僅在其長度而不在其類型。在定義bitset的時候,要明確bitset包含了多少位,須在尖括號內(nèi)給出它的長度值。長度值必須定義為整形字面值常量或是已用常量值初始化的整型的const對象
    2017-02-02
  • C語言歸排與計排深度理解

    C語言歸排與計排深度理解

    這篇文章主要為大家詳細(xì)的介紹了C語言中計數(shù)排序和歸并排序,歸并排序是創(chuàng)建在歸并操作上的一種有效的排序算法,計數(shù)排序不用比較兩個數(shù)的大小,感興趣的朋友可以參考閱讀
    2023-04-04
  • 深入分析C++中幾個最不常用的關(guān)鍵字

    深入分析C++中幾個最不常用的關(guān)鍵字

    本篇文章是對C++中幾個最不常用的關(guān)鍵字進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評論