读书人

感谢大家的支持~初学者的扫雷修改了一

发布时间: 2012-01-14 20:02:35 作者: rapoo

感谢大家的支持~~菜鸟的扫雷修改了一下,再发一次,期待大家的意见
首先感谢大家对这个帖子的支持~~让菜鸟有了前进的信心
http://topic.csdn.net/u/20100811/10/233f5259-19c7-422e-9488-bd58e68c4a92.html?1993950910
这个结了。

我这几天又把程序修改了一些:
加入了“求救”按钮,在无法继续通过计算扫雷时,可以点出此获知随机的一个未标记雷的位置;
加入了计时器;
加入了作弊功能……嘿嘿,按下键盘上的某键,可以知道所有雷的位置,吼吼


为方便编译,把所有代码都放到一个文件里了~~~

期待大家的意见!

http://download.csdn.net/source/2619057
修改后的文件下载地址

再贴一下:一个楼层贴不下,分成了两部分,实则是一个源文件
Main.java

Java code
import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Main{        public static void main(String[] argus)        {                                Landmine Zhang = new Landmine();        }}////      Landmine类  主界面class Landmine    extends    JFrame{                static Resources resources = new Resources();                Playing     listener    =    new    Playing(this);                    //主要监听者,监听地雷面板的动作                Help helpListener    =    new    Help(this);                            //辅助监听者,监听“帮助”、“关于”                JPanel landminePanel = new JPanel();                        //创建地雷面板                JPanel topPanel    =    new    JPanel();                                    //创建顶部面板                JPanel lowerPanel    =    new    JPanel();                                //创建底部面板                public static    MyButton [][]    lei;                                //主区按钮组                public static    int    numberOfUnflaged ;                //剩余的雷数,显示在topPanel上,用于提示用户                public static    int    numberOfClicked;                    //已经翻开的格子数,当数字数字到"总格子数—雷数"时,即胜利                                public static    int    usedTime;                 //已用时间                public static    JLabel numberOfUnflagedLabel = new JLabel(); //创建剩雷数标签                public static JLabel timeLabel = new JLabel();//创建时间标签                public static    Timer    timer;                       //创建计时                Keylistener keyListener = new Keylistener(this);                                public Landmine()                {                                super("扫雷__1.2版__小老头");                                        //标题                                setBounds(300,90,800,800);                            //设置窗口位置和大小                                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//最大化、最小化、关闭按钮                                BorderLayout ff    =    new    BorderLayout();        //创建布局管理器                                setLayout(ff);                                                    //关联布局管理器                                setResizable(false);                    //禁止改变窗口大小                                                                /*初始化一些数据*/                                numberOfClicked    = 0;                                numberOfUnflaged = 40;                                usedTime = 0;                                                                /*设置顶部面板*/                                numberOfUnflagedLabel.setText("剩余雷数:"+numberOfUnflaged);//显示剩余雷数                                numberOfUnflagedLabel.setFont(resources.fontOne);//设置剩雷数标签字体                                numberOfUnflagedLabel.setIcon(resources.bombIconForLabel);//剩雷数标签图标(地雷形)                                topPanel.add(numberOfUnflagedLabel);        //剩雷数标签加入topPanel                                timeLabel.setText("用时:" + usedTime); //显示剩余时间                                timeLabel.setFont(resources.fontOne);        //设置时间标签字体                                timeLabel.setIcon(resources.clockIcon); //设置时间标签图标                                topPanel.add(timeLabel);                                //时间标签加入topPanel                                add(topPanel,BorderLayout.NORTH);                //加入主面板上部                                timer    =    new    Timer(1000,new TimerListener());//计算器注册监听者                                /*设置底部面板*/                                JButton    aboutJB    =    new    JButton("关于");    //创建“关于”按钮                                JButton    helpJB = new JButton("求救");        //创建“求救”按钮                                helpJB.addActionListener(helpListener);    //"求救"按钮加入监听者 





[解决办法]
SF
啊哈
看看
[解决办法]
顶一下,顺便拿走每日10分可用分
[解决办法]
小朋友 你挂了、、、
LZ 搞的还不错啊 可以再加个分等级啊
[解决办法]
刚看完楼主以前的 感觉还不错 现在这个不知道怎么样````
[解决办法]
领教了,多谢。
[解决办法]
支持楼主,如果有这种应用程序发布机制真的就非常好了,着重于讨论与版本升级~作为与sourceforge的呼应
1,2,3的图片选画得不错啊

下面两个按钮几乎看不到
应该设一下点某个按钮周围全开的按键

[解决办法]
累得慌 没认真看 但还是支持
[解决办法]
楼主牛人啊
不知道都看了些什么书啊
[解决办法]
楼主的帖子让我回想起以前做这些小游戏的情景~

有2个建议:
1.把界面和游戏算法逻辑分开

2.点到空白处翻开周围区域的的算法最好用循环,不用递归


[解决办法]
越来越深入了,不错啊,佩服
[解决办法]
探讨

引用:

支持楼主,如果有这种应用程序发布机制真的就非常好了,着重于讨论与版本升级~作为与sourceforge的呼应
1,2,3的图片选画得不错啊



图标是用PS做的~~~数字的图片是“汉仪嘟嘟”字体~~

下面两个按钮几乎看不到
应该设一下点某个按钮周围全开的按键——点了全开就没意思了哦~~~

[解决办法]
翻开周围的方块类型有两种:一种是空白,一种是数字,空白的就继续翻开周围的,如果是数字则不作任何动作,被翻开的方块被标记成“Visited”,你可以维护一个列表,把空白的方块都放进去,对这个列表进行循环,最初的时候只有一个,翻开的过程中不断往里加,处理完一个就把他从列表中删除,直到列表中没有空白方块,不知道我这样描述是不是说清楚了。说白了就是一个图遍历的算法,可以认为是寻找连通图的算法。


探讨

引用:

楼主的帖子让我回想起以前做这些小游戏的情景~

有2个建议:
1.把界面和游戏算法逻辑分开

2.点到空白处翻开周围区域的的算法最好用循环,不用递归

我觉得递归容易理解~~~~~不知道循环该怎么做,算法该是怎样的》?

[解决办法]
之所以使用循环是为了锻炼算法的能力,递归用起来稍显简单,效率也不高,如果是在手机上运行的话就能看出差别来了。
[解决办法]

界面一启动时间就开始走了,应该是第一次按按钮开始扫雷的时候才开始走的吧
点求救为什么上面雷数没有减少
时间就是数字一直+1,看能不能换成多少时多少分的
右击成雷的标记时,左击应该不能击
左击过的也应该去掉那个按钮的监听
求救显示出来的雷按钮还能被左击
[解决办法]
[color=#FF0000]很不错,顶![/color]
[解决办法]
总体来说还行

不过没在机器上跑 不知道运行知道什么效果
[解决办法]
以前模仿过操作系统上自带的扫雷,不知道你这个是否完成所有的所有的功能!
[解决办法]
太大了,笔记本1280*800都显示不全的
[解决办法]
顶一下吧...学习下
[解决办法]
每天回帖即可获得10分可用分
[解决办法]
顶一下,好好学了!!!!!
[解决办法]
ddddddd....
[解决办法]
非常感谢楼主的分享
------解决方案--------------------


learning......
[解决办法]
学习!!!!!!!!!!!!!!!
[解决办法]
好久没有碰这个玩意了
[解决办法]
感谢楼主
[解决办法]

探讨
按键盘的 向上键 会有惊喜哦

[解决办法]
还没有看懂..
[解决办法]
内容存入剪贴板
[解决办法]
还没有看懂..
[解决办法]
看不懂啊
[解决办法]
你好,是的,共同的心愿,打到小日本
[解决办法]
美国韩国军演,统统干掉这些鬼子
[解决办法]
顶,下走了,研究研究
[解决办法]
不错,有时间学一下
[解决办法]
顶起是不是有分啊?
[解决办法]
努力努力!天天回复!
[解决办法]
接分 。
[解决办法]
我发现很占内存
[解决办法]
看不到雷还算小bug?
探讨
引用:

刚看完楼主以前的 感觉还不错 现在这个不知道怎么样````

改进了以前的几个小BUG,比如看不到雷~~~呵呵

[解决办法]

[解决办法]
不错,学习
[解决办法]
我也是菜鸟,欧欧。。。。

[解决办法]
恩 领主确实受教了
[解决办法]
顶一下吧...学习下
[解决办法]
l厉害呀

[解决办法]
顶 高手的注释一般都是英文的 要学会习惯
[解决办法]
恭喜恭喜
[解决办法]
每天十分顶一下

[解决办法]
学习学习,已拜读,谢谢楼主
[解决办法]
是不是就一个java文件??
[解决办法]
我怎么就运行不了的呢?
[解决办法]
呵呵,学习一下
[解决办法]
下来看看,学些一下。
[解决办法]
写的不错 分享一下 谢谢
------解决方案--------------------


果然是好文啊
[解决办法]
哈哈 不错的 不过大多数都是看不懂啊
[解决办法]
ding.新生多指教.一定多多支持的.
[解决办法]

探讨
太大了,笔记本1280*800都显示不全的

[解决办法]
这里大神好多啊!
[解决办法]
不错 看下
[解决办法]
.....我运行了下,但是用鼠标点击,没东西反应的,后来可能点中一个雷,才反应我输了~
[解决办法]
LZ呀 要不要再写个俄罗斯方块 话说 我只见过用VS写的 还没见过JAVA 版

不得不说LZ厉害呀
[解决办法]
学习下
顺便接个分,呵呵
[解决办法]
菜鸟学习下!!
[解决办法]
先运行看看
[解决办法]
汗,我不会java

读书人网 >J2SE开发

热点推荐