Android华容道——我的第二个Android程序(第一个是HelloWorld)

想学习Android有一段时间了,只是翻书,没怎么动手写过,想写个华容道练练手。突然有一天,我的lead看到我在看Android的书,于是拿回去翻了翻,然后没几天就写出了华容道!据说只用了3个小时!3个小时啊,有木有!然后只能督促自己赶紧动手 :cry:

其实之前虽然没有动手,但是动脑想过算法,一旦知道怎么渲染界面就不难写了(好吧,我承认如何渲染界面的代码是“参考”我lead的代码),先看一下效果(餐后看的后果自负)
[img]http://dl.iteye.com/upload/attachment/479019/11df757f-3db5-319e-ab69-71e5ab1dd0f2.png[/img]

为了答谢大家看到上面的图还没有关掉浏览器,我分享出我跟我lead的代码供刚接触Android的同学学习。

我的代码:HuaRongRoad.rar, Lead的代码:HuaRongDao.rar
apk文件在bin目录下。

我的代码的思路:
把棋盘抽象成一个二维数组,数组的维度就是棋盘的坐标,数组的值代表着当前格子有没有棋子,是哪个棋子(比如曹操的值是1的话初始状态 棋盘[1][1], 棋盘[1][2], 棋盘[2][1], 棋盘[2][2]的值都为1)所有对棋子的操作都最终转化为在二维数组上的操作。

Fragment类是棋子类,PlayBoard类是棋盘类,Fragment中有一个静态的hashtable储存了所有棋子,ChessboardView类把屏幕上的输入转化成Fragment类,PlayBoard类可以接受的输入,并最终把所有Fragment画到屏幕上。HuaRongRoad.java就是启动一个ChessboardView的实例而已。
看到这里(真有人能看到这里么?)你也许能理解我的思路了,我把前台显示跟后台数据处理分开,Fragment类,PlayBoard类就相当于model层,ChessboardView类相当于View跟Controller。这样如果日后我前台的水平提高了,只需要改前台的实现方式,实现逻辑的代码可以不用动(虽然实现逻辑的代码很简单,动不动都差不多 :oops: ),而且后台代码几乎没有hardcode,以后只要是拼图类的游戏我都可以用这一套代码轻松实现后台逻辑 :P (我想太多了)。

写到这里,你我都发现,其实我是一个标题党,这里面根本没有多少跟Android有关的东西 :lol: 木办法,我也刚学,希望有前辈能跟指教,或者有相同兴趣的人共同学习,本人QQ:81774487,希望有机会能同各位android新手老鸟交流。

最后抱怨一下,用惯了ruby写java真的蛋疼的要死。 :arrow:

-------------------- 5月11日 更新 --------------------
[img]http://dl.iteye.com/upload/attachment/479561/fef2c8d7-79d5-3a9c-8259-60b507d98ad7.png[/img]
感谢雷雷同学为我添加图片。

-------------------- 5月12日 更新 --------------------

加的图片居然是bmp格式,坑死爹了。如果把图片改成png,view.invalidate()方法加上参数(局部重绘)运行效率会有很大的提升。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值