欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 掃雷游戲雷陣及提示生成方法(加個(gè)界面就能做掃雷游戲了) [打印本頁(yè)]

作者: liuyy    時(shí)間: 2015-1-11 20:04
標(biāo)題: 掃雷游戲雷陣及提示生成方法(加個(gè)界面就能做掃雷游戲了)






#include <stdio.h>
#include <stdlib.h>
#include<time.h>/*用到了time函數(shù),所以要有這個(gè)頭文件*/ #define LEI 10           //地雷標(biāo)記
#define LEI_X 15        //雷區(qū)列數(shù)
#define LEI_Y 15          //雷區(qū)行數(shù)
int LEI_buju[LEI_Y][LEI_X];   //雷區(qū)地圖用二維數(shù)組表示
int LEI_buju_init(void); //雷區(qū)地圖初始化函數(shù)
int LEI_buju_print(void); //雷區(qū)狀態(tài)輸出到屏幕(調(diào)試用,做掃雷游戲時(shí)用自己的UI線(xiàn)程代替)
int LEI_buju_bulei(void); //布雷函數(shù)(隨機(jī)的把LEI_X*LEI_Y/10個(gè)雷步到雷區(qū)中)
int LEI_buju_tishi(void);  //計(jì)算地雷提示

main()
{
      LEI_buju_init();
      LEI_buju_bulei();
      LEI_buju_print();
      LEI_buju_tishi();
      system("pause");
}

////////////////////////////////////////////////////////////////////////////////
int LEI_buju_init(void)
{
    //初始化雷區(qū)數(shù)組
    int x,y;
    for(y=0;y<LEI_Y;y++)
     for(x=0;x<LEI_X;x++)
     {
      LEI_buju[y][x]=0;               
     }
    return 1;
}
////////////////////////////////////////////////////////////////////////////////
int LEI_buju_print(void)
{
    //向屏幕輸出雷區(qū)狀態(tài)
    int x,y;
    printf("%dx%d雷區(qū)布雷情況如下(1表示是地雷0表示無(wú)雷):\n\n",LEI_Y,LEI_X);
    for(y=0;y<LEI_Y;y++)
    {
        for(x=0;x<LEI_X;x++)
        {
         if(LEI_buju[y][x]==0) printf("%d ",LEI_buju[y][x]);
          else {printf("%d ",(LEI_buju[y][x]-9)); }
        }
      printf("\n");
     }
    ///////////////////////////////////////////////
    printf("\n去掉安全區(qū)域后的雷區(qū)布局如下:\n");
    for(y=0;y<LEI_Y;y++)
    {
        for(x=0;x<LEI_X;x++)
        {
         if(LEI_buju[y][x]==0) {printf("  ");}
         else {printf("Q "); }   
        }
      printf("\n");
     }
     printf("\n");
    return 1;
}
////////////////////////////////////////////////////////////////////////////////
int LEI_buju_bulei(void)
{
    //向雷區(qū)中隨機(jī)布雷
    int x,y,L,l;
    L=LEI_Y*LEI_X/10; //雷區(qū)中地雷總數(shù)
    srand((unsigned)time(NULL));//調(diào)用該方法產(chǎn)生隨機(jī)數(shù)的種子
    for(l=0;l<L;)
    {
    y=rand()%LEI_Y; //隨機(jī)產(chǎn)生地雷所在的行系數(shù)
    x=rand()%LEI_X; //隨機(jī)產(chǎn)生地雷所在的列系數(shù)
    if(LEI_buju[y][x]==LEI) {continue;}
     else if(LEI_buju[y][x]==0)
     {
        LEI_buju[y][x]=LEI;
        l++;
     }  
    }   
    return 1;
}
////////////////////////////////////////////////////////////////////////////////
int LEI_buju_tishi(void)
{
    //計(jì)算地雷位置提示,數(shù)據(jù)保存在雷區(qū)布局?jǐn)?shù)組中
    int BJ[LEI_Y][LEI_X];
    int x,y;
    for(y=0;y<LEI_Y;y++)
    {
     for(x=0;x<LEI_X;x++)
     {
       BJ[y][x]=0;                 
     }
    }
    //計(jì)算四個(gè)角
     if(LEI_buju[0][0]==LEI)
            {
              BJ[y][x]=LEI;
             }else BJ[0][0]=(LEI_buju[0][1]+LEI_buju[1][0]+LEI_buju[1][1])/10;
            
     if(LEI_buju[y-1][0]==LEI)
            {
              BJ[y][x]=LEI;
             }else BJ[LEI_Y-1][0]=(LEI_buju[LEI_Y-2][0]+LEI_buju[LEI_Y-2][1]+LEI_buju[LEI_Y-1][1])/10;
   
     if(LEI_buju[0][LEI_X-1]==LEI)
            {
              BJ[y][x]=LEI;
             }else BJ[0][LEI_X-1]=(LEI_buju[0][LEI_X-2]+LEI_buju[0][LEI_X-1]+LEI_buju[1][LEI_X-2])/10;
   
     if(LEI_buju[LEI_Y-1][LEI_X-1]==LEI)
            {
              BJ[y][x]=LEI;
             }else BJ[LEI_Y-1][LEI_X-1]=(LEI_buju[LEI_Y-2][LEI_X-2]+LEI_buju[LEI_Y-2][LEI_X-1]+LEI_buju[LEI_Y-1][LEI_X-2])/10;
   //計(jì)算第一行
   for(y=0,x=1;x<LEI_X-1;x++)
   {
       if(LEI_buju[y][x]==LEI)
            {
              BJ[y][x]=LEI;
             }else
             {                       
             BJ[y][x]=(LEI_buju[y][x-1]+LEI_buju[y][x+1]+
             LEI_buju[y+1][x-1]+ LEI_buju[y+1][x]+LEI_buju[y+1][x+1])/10;
             }                     
    }
    //計(jì)算第一列
    for(y=1,x=0;y<LEI_Y-1;y++)
    {
      if(LEI_buju[y][x]==LEI)
            {
              BJ[y][x]=LEI;
             }else
             {                        
              BJ[y][x]=(LEI_buju[y-1][x]+LEI_buju[y-1][x+1]+
              LEI_buju[y][x+1]+
              LEI_buju[y+1][x]+LEI_buju[y+1][x+1])/10;  
              }            
    }
    //計(jì)算最后一行
   for(y=LEI_Y-1,x=1;x<LEI_X-1;x++)
   {
      if(LEI_buju[y][x]==LEI)
            {
              BJ[y][x]=LEI;
             }else
             {                              
               BJ[y][x]=(LEI_buju[y][x-1]+LEI_buju[y][x+1]+
              LEI_buju[y-1][x-1]+LEI_buju[y-1][x]+LEI_buju[y-1][x+1])/10;
              }                           
   }
   //計(jì)算最后一列
    for(y=1,x=LEI_X-1;y<LEI_Y-1;y++)
    {
        if(LEI_buju[y][x]==LEI)
            {
              BJ[y][x]=LEI;
             }else  
             {                           
               BJ[y][x]=(LEI_buju[y-1][x-1]+LEI_buju[y-1][x]+
               LEI_buju[y][x-1]+
               LEI_buju[y+1][x-1]+LEI_buju[y+1][x])/10;
             }
     }
    //計(jì)算其余的部分
     for(y=0;y<LEI_Y;y++)
    {
     for(x=0;x<LEI_X;x++)
     {
        if(x>=1&&x<LEI_X-1&&y>=1&&y<LEI_Y-1)  
        {
           if(LEI_buju[y][x]==LEI)
            {
              BJ[y][x]=LEI;
             }else {
                     BJ[y][x]=(LEI_buju[y-1][x-1]+LEI_buju[y-1][x]+LEI_buju[y-1][x+1]+
                     LEI_buju[y][x-1]+LEI_buju[y][x+1]+
                     LEI_buju[y+1][x-1]+LEI_buju[y+1][x]+LEI_buju[y+1][x+1])/10;
                   }                                 
        }              
     }
    }
   
    printf("計(jì)算后的雷區(qū)提示如下:\n");
      for(y=0;y<LEI_Y;y++)
    {
     for(x=0;x<LEI_X;x++)
     {
       if(BJ[y][x]==LEI) printf("Q ");
       if(BJ[y][x]==0) printf("  ");  
       if(BJ[y][x]!=0&&BJ[y][x]!=LEI) printf("%d ",BJ[y][x]);                 
     }
     printf("\n");
    }
    printf("\n\n\n");                     
         
    return 1;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   


作者: liufangchishi    時(shí)間: 2016-4-9 12:35
可以可以,給了我一個(gè)不錯(cuò)的思路!謝謝分享了!!!
作者: 馬丁賴(lài)床    時(shí)間: 2016-4-22 07:44
牛牛牛牛牛




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1