想学习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()方法加上参数(局部重绘)运行效率会有很大的提升。

更多相关文章

  1. Android(安卓)实现真机远程调试并适应7寸屏大小
  2. android 性能分析(优化)-利用AOP技术,字节码方法插桩,实现 android
  3. android/c++ opencv 攻坚篇(一) ndk运行环境搭建
  4. 进阶Frida--Android逆向之动态加载dex Hook(三)
  5. [置顶] 关于代码家(干货集中营)共享知识点汇总系列——Android
  6. viewpager实现自动循环轮播图
  7. android跳转进市场的代码
  8. [应用代码] android源码之多线程断点续传下载
  9. (详细代码,文末Demo下载)android简单修改密码、登录、注册功能 基于

随机推荐

  1. Android通过socket连接服务器(PC)
  2. 跨进程共享 SharedPreferences
  3. Android批量插入数据
  4. Android(安卓)APP 启动优化(冷启动)
  5. Android创建快捷方式图标
  6. 生成不同ABI版本APK在build.gradle中的配
  7. Android使用FFMPEG将H264解码为yuv420p
  8. Android View.startAnimation()动画
  9. Android 手机QQ临时会话
  10. Android 中使用 ComponentName 类