Android华容道——我的第二个Android程序(第一个是HelloWorld)
16lz
2021-01-24
想学习Android有一段时间了,只是翻书,没怎么动手写过,想写个华容道练练手。突然有一天,我的lead看到我在看Android的书,于是拿回去翻了翻,然后没几天就写出了华容道!据说只用了3个小时!3个小时啊,有木有!然后只能督促自己赶紧动手
其实之前虽然没有动手,但是动脑想过算法,一旦知道怎么渲染界面就不难写了(好吧,我承认如何渲染界面的代码是“参考”我lead的代码),先看一下效果(餐后看的后果自负)
为了答谢大家看到上面的图还没有关掉浏览器,我分享出我跟我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。这样如果日后我前台的水平提高了,只需要改前台的实现方式,实现逻辑的代码可以不用动(虽然实现逻辑的代码很简单,动不动都差不多 ),而且后台代码几乎没有hardcode,以后只要是拼图类的游戏我都可以用这一套代码轻松实现后台逻辑 (我想太多了)。
写到这里,你我都发现,其实我是一个标题党,这里面根本没有多少跟Android有关的东西 木办法,我也刚学,希望有前辈能跟指教,或者有相同兴趣的人共同学习,本人QQ:81774487,希望有机会能同各位android新手老鸟交流。
最后抱怨一下,用惯了ruby写java真的蛋疼的要死。
-------------------- 5月11日 更新 --------------------
感谢雷雷同学为我添加图片。
-------------------- 5月12日 更新 --------------------
加的图片居然是bmp格式,坑死爹了。如果把图片改成png,view.invalidate()方法加上参数(局部重绘)运行效率会有很大的提升。
其实之前虽然没有动手,但是动脑想过算法,一旦知道怎么渲染界面就不难写了(好吧,我承认如何渲染界面的代码是“参考”我lead的代码),先看一下效果(餐后看的后果自负)
为了答谢大家看到上面的图还没有关掉浏览器,我分享出我跟我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。这样如果日后我前台的水平提高了,只需要改前台的实现方式,实现逻辑的代码可以不用动(虽然实现逻辑的代码很简单,动不动都差不多 ),而且后台代码几乎没有hardcode,以后只要是拼图类的游戏我都可以用这一套代码轻松实现后台逻辑 (我想太多了)。
写到这里,你我都发现,其实我是一个标题党,这里面根本没有多少跟Android有关的东西 木办法,我也刚学,希望有前辈能跟指教,或者有相同兴趣的人共同学习,本人QQ:81774487,希望有机会能同各位android新手老鸟交流。
最后抱怨一下,用惯了ruby写java真的蛋疼的要死。
-------------------- 5月11日 更新 --------------------
感谢雷雷同学为我添加图片。
-------------------- 5月12日 更新 --------------------
加的图片居然是bmp格式,坑死爹了。如果把图片改成png,view.invalidate()方法加上参数(局部重绘)运行效率会有很大的提升。
更多相关文章
- Android(安卓)实现真机远程调试并适应7寸屏大小
- android 性能分析(优化)-利用AOP技术,字节码方法插桩,实现 android
- android/c++ opencv 攻坚篇(一) ndk运行环境搭建
- 进阶Frida--Android逆向之动态加载dex Hook(三)
- [置顶] 关于代码家(干货集中营)共享知识点汇总系列——Android
- viewpager实现自动循环轮播图
- android跳转进市场的代码
- [应用代码] android源码之多线程断点续传下载
- (详细代码,文末Demo下载)android简单修改密码、登录、注册功能 基于