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

C語言代碼實現(xiàn)掃雷小游戲

 更新時間:2020年02月07日 09:22:05   作者:格戮  
這篇文章主要為大家詳細介紹了C語言代碼實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)掃雷小游戲的具體代碼,供大家參考,具體內容如下

主頁面:

游戲頁面:

雖然頁面比較low,但我已經盡力了

具體代碼實現(xiàn):

#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
int n;//記錄已經探索的區(qū)域數
int x,y;//光標的橫縱坐標
int T;//判斷游戲是否失敗,T=1為失敗
int b[9][9];//區(qū)分每個位置的狀態(tài),0為未探索,1為已探索,2為插旗狀態(tài)
int a[9][9];//隨機生成的掃雷地圖,-1為雷
void setColor(unsigned short ForeColor=7,unsigned short BackGroundColor=0) {//控制局部區(qū)域的字體顏色和背景顏色
 HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(handle,ForeColor+BackGroundColor*0x10);
}
void gotoxy(int x, int y) {
 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
 COORD pos;
 pos.X = x;
 pos.Y = y;
 SetConsoleCursorPosition(handle, pos);
}
void add(int p,int q) {//雷的一周數值+1
 for(int i=-1; i<2; i++)
 for(int j=-1; j<2; j++)
  if(p+i>=0&&p+i<9&&q+j>=0&&q+j<9&&a[p+i][q+j]>=0)
  a[p+i][q+j]++;
}
void start() {//初始化函數
 srand(time(0));
 for(int i=0; i<9; i++)
 for(int j=0; j<9; j++) {
  a[i][j]=0;
  b[i][j]=0;
 }
 x=0;
 y=0;
 T=0;
 n=10;
 while(n) {//由p和q隨機數產生10個坐標,生成10個雷
 int p,q;
 p=rand()%9;
 q=rand()%9;
 if(!a[p][q]) {
  n--;
  a[p][q]=-1;
  add(p,q);
 }
 }
}
void show() {//顯示圖
 gotoxy(0,0);
 for(int i=0; i<9; i++) {
 if(i==0)
  printf("┌───┬───┬───┬───┬───┬───┬───┬───┬───┐\n");
 else
  printf("├───┼───┼───┼───┼───┼───┼───┼───┼───┤\n");
 printf("│");
 for(int j=0; j<9; j++) {
  printf(" ");
  if(!b[i][j]) {
  setColor(0,7);
  if(i==x&&j==y)
   setColor(0,12);
  printf(" ");
  } else {
  if(i==x&&j==y)
   setColor(7,4);
  if(b[i][j]==-1)
   printf("│>");
  else if(a[i][j]>=0) {

   if(a[i][j])
   printf("%2d",a[i][j]);
   else
   printf(" ");
  } else
   printf("**");
  }
  setColor(7,0);
  printf("│");
 }
 printf("\n");
 if(i==8)
  printf("└───┴───┴───┴───┴───┴───┴───┴───┴───┘\n");
 }
 printf("1.探索 2.插旗\n");
}
void ss(int x1,int y1) {//探索函數
 if(b[x1][y1])
 return ;
 b[x1][y1]=1;
 n++;
 if(a[x1][y1]>0)
 return;
 if(a[x1][y1]<0) {
 T=1;
 return;
 }
 for(int i=-1; i<2; i++)
 for(int j=-1; j<2; j++)
  if(x1+i>=0&&x1+i<9&&y1+j>=0&&y1+j<9)
  ss(x1+i,y1+j);
}
void doing() {//游戲進行流程函數
 start();
 while(n<71) {
 show();
 int t;
 t=_getch();
 switch(t) {
  case 72: {
  if(x)
   x--;
  break;
  }
  case 75: {
  if(y)
   y--;
  break;
  }
  case 77: {
  if(y<8)
   y++;
  break;
  }
  case 80: {
  if(x<8)
   x++;
  break;
  }
  case '1': {
  if(!b[x][y])
   ss(x,y);
  break;
  }
  case '2': {
  if(!b[x][y])
   b[x][y]=-1;
  else if(b[x][y]==-1)
   b[x][y]=0;
  break;
  }
 }
 if(T) {
  for(int i=0; i<9; i++)
  for(int j=0; j<9; j++)
   b[i][j]=1;
  break;
 }
 }
 show();
 if(T)
 printf("游戲失敗!\n");
 if(!T)
 printf("挑戰(zhàn)成功!\n");
 printf("請按'0'鍵返回主頁!\n");
 int o=1;
 while(o!='0'){
 o=_getch();
 } 
}
int main() {
 int m=1;
 while(m) {
 system("cls");
 printf("┌───────────┐\n");
 printf("│  掃雷  │\n");
 printf("├───────────┤\n");
 printf("│ 1.開始游戲│\n");
 printf("├───────────┤\n");
 printf("│ 2.退出游戲│\n");
 printf("└───────────┘\n");
 int t;
 t=_getch();
 if(t=='1')
  doing();
 if(t=='2')
  break;
 }
 return 0;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C++實現(xiàn)學生管理系統(tǒng)示例解析

    C++實現(xiàn)學生管理系統(tǒng)示例解析

    這篇文章主要介紹了C++實現(xiàn)學生管理系統(tǒng)示例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 用C實現(xiàn)PHP擴展 Fetch_Url 類數據抓取的方法

    用C實現(xiàn)PHP擴展 Fetch_Url 類數據抓取的方法

    該擴展是基于libcurl基礎實現(xiàn)的網頁數據抓取
    2013-04-04
  • openCV實現(xiàn)圖像分割

    openCV實現(xiàn)圖像分割

    這篇文章主要為大家詳細介紹了openCV實現(xiàn)圖像分割,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C語言大小端模式、判斷大小端、大小端轉換方法詳解

    C語言大小端模式、判斷大小端、大小端轉換方法詳解

    這篇文章主要介紹了C語言大小端模式、判斷大小端、大小端轉換的相關資料,大端和小端是數據在內存中的存儲方式,大端模式下高字節(jié)存于低地址,小端模式則相反,大小端問題由數據類型多字節(jié)存儲引起,不同選擇形成不同存儲模式,需要的朋友可以參考下
    2024-10-10
  • C++實現(xiàn)字符串切割的兩種方法

    C++實現(xiàn)字符串切割的兩種方法

    這篇文章主要介紹了C++實現(xiàn)字符串切割的兩種方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 怎么用C++提取任意一張圖片的特征(從內存讀取數據)

    怎么用C++提取任意一張圖片的特征(從內存讀取數據)

    這篇文章主要介紹了用C++提取任意一張圖片的特征(從內存讀取數據)的相關資料,需要的朋友可以參考下
    2017-05-05
  • Opencv獲取身份證號碼區(qū)域的示例代碼

    Opencv獲取身份證號碼區(qū)域的示例代碼

    這篇文章主要介紹了Opencv獲取身份證號碼區(qū)域的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 基于C語言指令的深入分析

    基于C語言指令的深入分析

    本篇文章是對C語言的指令進行了詳細的分析與介紹,需要的朋友參考下
    2013-05-05
  • 一文讓你不再害怕指針之C指針詳解(經典,非常詳細)

    一文讓你不再害怕指針之C指針詳解(經典,非常詳細)

    這篇文章主要給大家介紹了C指針的相關資料,文中介紹的很經典,非常詳細,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C指針具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • C++編譯器Clion的使用詳解(總結)

    C++編譯器Clion的使用詳解(總結)

    Clion有一個比較讓人郁悶的地方就是必須要把編譯環(huán)境配置好了,IDE才去做代碼分析等動作,但是還是有很多優(yōu)點,本文重點給大家介紹C++編譯器Clion的使用,感興趣的朋友跟隨小編一起看看吧
    2021-05-05

最新評論