【云顶娱乐棋牌游戏】布雷算法,模拟扫雷游戏

       
要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示。如某位置为地雷,则该位置用数字-1表示,
如该位置不是地雷,则暂时用数字0表示。
云顶娱乐棋牌游戏 ,编写程序完成在该二维数组中随机布雷的操作,程序读入3个参数:布雷面板的行数(r),列数(c),布置的地雷个数(n),
且要满足0<n<r*c*0.75(即布置地雷的最大密度为75%),程序运行后将n个地雷随机地布置在r*c的二维数组,布置完成后进行扫雷游戏。

游戏界面:

import java.util.*;public class Minesweeper { public static void main(String[] args) { Scanner scn = new Scanner(System.in); //输入行和列 int r = Integer.parseInt(scn.nextLine()); int c = Integer.parseInt(scn.nextLine()); if(r<2 || c<2) { System.out.println("输入的行列无效。"); return; } //定义一个二维数组来布雷 int[][] a = new int[r][c]; Random rnd = new Random(); //随机给出雷的个数 int n = rnd.nextInt((int)(r*c*0.75)); System.out.println("雷的个数:"+n); while(n>0) { //随机的布雷,随机产生雷所在行和列 int rr = rnd.nextInt(r); int cc = rnd.nextInt(c); if(a[rr][cc]!=-1) { a[rr][cc]=-1; n--; } } //扫雷 for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { int lei=0; if(a[i][j] == 0) { if(i-1>=0 && j-1>=0 && a[i-1][j-1]==-1) lei++; if(i-1>=0 && a[i-1][j]==-1) lei++; if(j<c-1) { if(i-1>=0 && a[i-1][j+1]==-1) lei++; if(a[i][j+1]==-1) lei++; } if(j-1>=0 && a[i][j-1]==-1) lei++; if(i<r-1) { if(j-1>=0 && a[i+1][j-1]==-1) lei++; if(a[i+1][j]==-1) lei++; } if(i<r-1 && j<c-1) { if(i+1>=1 && j+1>=1 && a[i+1][j+1]==-1) lei++; } a[i][j]=lei; } } } //输出 for(int i=0;i<r;i++) { for(int j=0;j<c;j++) { System.out.print(a[i][j]+"t"); } System.out.println(); } }}

初级界面是:横竖各九格,共十颗雷

 

云顶娱乐棋牌游戏 1

游戏中如何产生地雷?

以初级扫雷作为讲解实例:

编程中采用的是二维数组来代表整个雷区,如A[9][9],横竖各九格也就是八十一格。初级是十颗雷。现在来看布雷的代码:

voidCMineWnd::LayMines(UINT row, UINT col)//布雷函数

{

//埋下随机种子

srand( (unsigned)time( NULL ) ) ;//调用该方法产生随机数的种子

UINT i, j;//定义两个UINT(由unsignedint派生)型变量

for(UINT index = 0; index//使用For循环来产生地雷

{//其中index为已产生雷数,m_uMineNum为游戏设定雷数,初级是十颗,一般根据游戏难度来确定

//取随机数

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。