免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 884 | 回复: 0
打印 上一主题 下一主题

java扫雷——Day9 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-18 16:50 |只看该作者 |倒序浏览


昨天没有做。晚上看羽毛球去了。不算昨天的话今天已经是第九天了,仍然有问题。不过基本上已经差不多了。现在的问题是:

有时候点不开雷,明明知道是雷但是展开无效。这个问题上次就有,但是上次没有太在意,一直在考虑递归开一片的问题。

我估计这个问题仍然是我递归的问题。递归过程中把状态置为LOCK锁定,但是函数没有正常退出,所以没有解除锁定状态。而expand函数是只能对INITIAL的格子状态展开的。

不能加断点调试真让我郁闷

不过解决了雷都被正确标记后,游戏不结束的问题。仍然是递归调用那里处理问题。
要考试了,近期不打算再花时间弄了。真让人精疲力尽……

把这部分有问题的代码贴出来,有高手请指教一下啊!
我的email:
blackchoc@126.com
//expand the mine
    void expand(int row , int col)
    {
        if(isValid(row,col))
        {
               
            if(this.status[row][col] == INITIAL)
            {
                if(isBomb(row,col))
                {   
                    setGameStatus(EXPLODED);
                }
                else // it's not a bomb itself
                {               
                    
                    if ( (computeBomb(row,col)-computeFlag(row,col)) != 0 )    // there are many bombs around this grid,如果发现它周围一共有3个雷,而且你都已经标了3个,那么不管你标的对不对都自动展开.
                    {
                        if(isBomb(row,col))// make a wrong judge
                            setGameStatus(EXPLODED);
                        else
                        {
                            this.status[row][col] = EXPANDED;
                            this.humantable[row*grid+col].setBackground(new Color(217, 217, 217));
                            this.showBomb(row,col);
                            this.marked++;
                        }
                                       
                    }
                    else // there is no bomb around this grid
                    {
                        this.status[row][col] = LOCK;        //在递归调用前加锁add lock to the current grid
                        
                        this.expand(row-1,col-1);    //up_left
                        this.expand(row-1,col);        //up_middle
                        this.expand(row-1,col+1);    //up_right
                        this.expand(row,col-1);        //left
                        this.expand(row,col+1);        //right
                        this.expand(row+1,col-1);    //down_left
                        this.expand(row+1,col);        //down_middle
                        this.expand(row+1,col+1);    //down_right
                        
                        this.status[row][col] =
                        this.humantable[row*gridEXPANDED;    //unlock the grid
                        this.marked++;+col].setBackground(new Color(217, 217, 217));            
                        
                    }               
                    
                }
               
            }
            
        }
        
    }


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/15262/showart_323789.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP