| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:结果与想象的结果不同,关于扫雷游戏的想法
只看楼主 加入收藏
shenyun345
Rank: 2
等 级:论坛游民
帖 子:32
专家分:10
注 册:2009-7-13
结帖率:50%
收藏
 问题点数:0 回复次数:0 
结果与想象的结果不同,关于扫雷游戏的想法
public class Shaolei {
    /*
     * 只是一点思路,做一个模型遇到问题,所以还没有用到图形界面
     *
     * 想的是一个9*9的扫雷,但是后面设置每个坐标对应的数字时候,要用到
     * (i-1)(i+1)之类的,就要加上一些判断语句来判断,避免数组越界。
     * 不想麻烦,就声明了11*11的二维数组了,然后只显示1到9之间的内容。
     */
    static int[][] s = new int[11][11]; //声明11*11滴数组
    //将数组初始化,值全部为0
    public static void main(String[] args) {
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                s[i][j] = 0;
            }
        }
        
        setS();  //调用随机设置雷,暂时就用数字9代替雷吧
        //设置每个坐标上面对应的数字
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                if (s[i][j] != 9) {
                    s[i][j] = jishu(i, j); //调用方法
                }
            }
        }
        //显示
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                System.out.print(s[i][j] + " ");
            }
            System.out.println();
        }
    }

    //随即产生雷,雷用数字9代替
    public static void setS() {
        int n = 0;
        while (n < 10) {
            int i = (int) (9 * Math.random()) + 1;
            int j = (int) (9 * Math.random()) + 1;
            if (s[i][j] == 9) {
                n--;
            } else {
                s[i][j] = 9;
                n++;
            }
        }
    }

    //设置每个坐标对应的数字的方法
    public static int jishu(int i, int j) {
        int count = 0;
        if (s[i - 1][j - 1] == 9) {
            count += 1;
        }
        if (s[i + 1][j - 1] == 9) {
            count += 1;
        }
        if (s[i][j - 1] == 9) {
            count += 1;
        }
        if (s[i + 1][j - 1] == 9) {
            count += 1;
        }
        if (s[i - 1][j] == 9) {
            count += 1;
        }
        if (s[i - 1][j + 1] == 9) {
            count += 1;
        }
        if (s[i + 1][j] == 9) {
            count += 1;
        }
        if (s[i + 1][j + 1] == 9) {
            count += 1;
        }
        s[i][j] = count;
        return count;
    }
}

自己认为思路没有错,但是结果不是想象的。大家帮忙看些,谢谢找出问题所在。
下面是我运行的一次结果,

0 0 0 0 1 1 2 1 1
0 0 0 0 0 9 3 3 9
1 2 0 0 1 2 9 9 2
9 2 1 2 0 1 9 3 1
1 1 9 1 0 1 1 1 0
0 1 1 1 0 0 0 1 1
1 2 0 0 0 0 1 1 9
9 1 0 0 0 0 0 9 2
1 1 0 0 0 0 1 1 1

很多都不对。
搜索更多相关主题的帖子: 扫雷 public 
2011-08-09 21:48
快速回复:结果与想象的结果不同,关于扫雷游戏的想法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029336 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved