关于初学java,面向对象编程时的疑问,求教

sayHi2me 2015-08-27 01:29:21
本人学习java已经有一段时间了,在学习过程中,感觉和语法比起来,面向对象编程的思想才是敲代码不至于卡壳的指南针。但由于初学理解还不是很深,在练习过程中遇到点问题,麻烦大神给个总体思路。
问题很简单,就是编写一个扫雷小游戏,但我的思路是把每个Cell看成一个对象,两个成员变量记录自身属于雷还是普通,以及周围有几个地雷;一个构造方法初始化属性;最后在主方法创建一个二维Cell类数组,初始化每个Cell时通过随机算法埋雷。
以上就是我的总体思路,但获取周围地雷个数的方法应该在哪里?还有很多细节,感觉这个思路漏洞百出。希望能有大神能提供点具体的编写思路,感谢~~
...全文
263 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
草原码农 2015-08-29
  • 打赏
  • 举报
回复
引用 9 楼 sayHi2me的回复:
[quote=引用 8 楼 qq342063618 的回复:] [quote=引用 7 楼 saqrag 的回复:] [quote=引用 5 楼 sayHi2me的回复:][quote=引用 2 楼 saqrag 的回复:] [quote=引用 1 楼 saqrag的回复:]写在cell类里,然后点用此方法时传给二维数组 如何
调用不是点用写错了[/quote] Cell类里定义一个方法,检测自己周围Cell雷数量,返回int值? 这个方法我纠结很久,自己是Cell,如何检测周围Cell的属性?求源码[/quote] 传给这个方法的cell对象二维数组保存着每个cell的状态,再传给被点击的cell位置(a,b)。(a,b)cell调用这个方法,所以判断周围八个位置(x,y)[/quote] 也就是不用自己对比周围同类的属性,在主方法二维数组生成雷区的时候,每个Cell对象调用一个方法,以这个二维数组为参返回自己周围的雷区状况?[/quote] 刚又写了一遍,Area类生成boolean二维数组并随机生成雷区,但这样Cell类需要定义坐标属性、周围雷区个数,就不能放入Area的二维数组了,除非重新定义一个一样大小的二维数组,二者叠加(就是同样大小的二维数组,那样位置可以一一对应)。[/quote] class cell{ boolean dilei; public int zhouweishu(cell[][] dilei,int a,int b){ } } 然后再主函数建 cell[][] dilei; 然后用循环new。我的大概意思是这样 用手机的特慢只能写这么多 见谅
0萌萌哒0 2015-08-27
  • 打赏
  • 举报
回复
我给出两个思路: 第一,在生成雷区的时候,采用多遍扫描的方法,由生成地雷的代码在确定所有地雷位置后,判断每个cell周围雷的数量,用set方法将该数值保存进cell中;这个方法可行是因为该数据是静态的(不会变动); 第二,可以用动态扫描的方法,即每次调用的时候让cell对象获得访问周围对象的能力,然后由该方法统计周围雷的数量。 具体优劣则由楼主自行分析了。
sayHi2me 2015-08-27
  • 打赏
  • 举报
回复
引用 8 楼 qq342063618 的回复:
[quote=引用 7 楼 saqrag 的回复:] [quote=引用 5 楼 sayHi2me的回复:][quote=引用 2 楼 saqrag 的回复:] [quote=引用 1 楼 saqrag的回复:]写在cell类里,然后点用此方法时传给二维数组 如何
调用不是点用写错了[/quote] Cell类里定义一个方法,检测自己周围Cell雷数量,返回int值? 这个方法我纠结很久,自己是Cell,如何检测周围Cell的属性?求源码[/quote] 传给这个方法的cell对象二维数组保存着每个cell的状态,再传给被点击的cell位置(a,b)。(a,b)cell调用这个方法,所以判断周围八个位置(x,y)[/quote] 也就是不用自己对比周围同类的属性,在主方法二维数组生成雷区的时候,每个Cell对象调用一个方法,以这个二维数组为参返回自己周围的雷区状况?[/quote] 刚又写了一遍,Area类生成boolean二维数组并随机生成雷区,但这样Cell类需要定义坐标属性、周围雷区个数,就不能放入Area的二维数组了,除非重新定义一个一样大小的二维数组,二者叠加(就是同样大小的二维数组,那样位置可以一一对应)。
sayHi2me 2015-08-27
  • 打赏
  • 举报
回复
引用 7 楼 saqrag 的回复:
[quote=引用 5 楼 sayHi2me的回复:][quote=引用 2 楼 saqrag 的回复:] [quote=引用 1 楼 saqrag的回复:]写在cell类里,然后点用此方法时传给二维数组 如何
调用不是点用写错了[/quote] Cell类里定义一个方法,检测自己周围Cell雷数量,返回int值? 这个方法我纠结很久,自己是Cell,如何检测周围Cell的属性?求源码[/quote] 传给这个方法的cell对象二维数组保存着每个cell的状态,再传给被点击的cell位置(a,b)。(a,b)cell调用这个方法,所以判断周围八个位置(x,y)[/quote] 也就是不用自己对比周围同类的属性,在主方法二维数组生成雷区的时候,每个Cell对象调用一个方法,以这个二维数组为参返回自己周围的雷区状况?
草原码农 2015-08-27
  • 打赏
  • 举报
回复
引用 5 楼 sayHi2me的回复:
[quote=引用 2 楼 saqrag 的回复:] [quote=引用 1 楼 saqrag的回复:]写在cell类里,然后点用此方法时传给二维数组 如何
调用不是点用写错了[/quote] Cell类里定义一个方法,检测自己周围Cell雷数量,返回int值? 这个方法我纠结很久,自己是Cell,如何检测周围Cell的属性?求源码[/quote] 传给这个方法的cell对象二维数组保存着每个cell的状态,再传给被点击的cell位置(a,b)。(a,b)cell调用这个方法,所以判断周围八个位置(x,y)
三仙半 2015-08-27
  • 打赏
  • 举报
回复
建议Cell类只负责显示,在底层用二维数组(保存int)记录雷区的状态,是雷,记为-1,不是雷的,周边有几个雷,记录那个数字,刷新显示时,根据二维数组判断Cell的显示状态。
sayHi2me 2015-08-27
  • 打赏
  • 举报
回复
引用 2 楼 saqrag 的回复:
[quote=引用 1 楼 saqrag的回复:]写在cell类里,然后点用此方法时传给二维数组 如何
调用不是点用写错了[/quote] Cell类里定义一个方法,检测自己周围Cell雷数量,返回int值? 这个方法我纠结很久,自己是Cell,如何检测周围Cell的属性?求源码
sayHi2me 2015-08-27
  • 打赏
  • 举报
回复
引用 3 楼 u011106669 的回复:
楼主,这有个扫雷的源码,看看这个试试。http://zhidao.baidu.com/link?url=x1p6zVUHk8Uu2C9lP_tvZ6lgPOXEZk41rabMF-Sdp26ihGLvvkJw3vDZzN--F6gwNdZitYC1gE7jVL818WxEVa
源码还是很多的,还有设计书,网上一大把,我主要是想知道几个具体的方法,比如哪里定义数组,哪里定义坐标,哪里检测周围雷数量,那样自己写一个简单的扫雷而已,我主要是为了熟悉思想,网上的都不是很具体
多木多多木 2015-08-27
  • 打赏
  • 举报
回复
楼主,这有个扫雷的源码,看看这个试试。http://zhidao.baidu.com/link?url=x1p6zVUHk8Uu2C9lP_tvZ6lgPOXEZk41rabMF-Sdp26ihGLvvkJw3vDZzN--F6gwNdZitYC1gE7jVL818WxEVa
草原码农 2015-08-27
  • 打赏
  • 举报
回复
写在cell类里,然后点用此方法时传给二维数组 如何
草原码农 2015-08-27
  • 打赏
  • 举报
回复
引用 1 楼 saqrag的回复:
写在cell类里,然后点用此方法时传给二维数组 如何
调用不是点用写错了

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧