业余项目
华都烟梦
这个作者很懒,什么都没留下…
展开
-
从拼图游戏开始(二)_带优先搜索的地图路线搜索java实现
昨晚想着到目前为止这个拼图游戏的算法求解还是没有思路,想着先写一个简单的地图路线搜索来体会一下也许能找到一点感觉,于是就有了本文。这里的搜索考虑了从起点到终点的优先搜索(即以起点和终点的坐标差为依据,每一次搜索都以靠近终点的方向为优先搜索方向,当所有能够更加靠近终点的方向都不同时,才尝试搜索远离终点的方向)。这里的搜索是基于深搜的,所以路径是用栈来保存的,代码如下:原创 2013-12-10 09:16:10 · 1675 阅读 · 0 评论 -
从拼图游戏开始(十)_项目总结
项目名:智能拼图游戏Android实现算法部分 为了编写这个项目,笔者分别学习了深搜、广搜开始、Dijkstra、二叉堆和优先队列、A*算法以及IDA*算法,也算是一个将算法到显示的一个应用吧。我记得当初学Android最初的触动就是在网上看了一个手机解魔方的视频,那时觉得好厉害啊。现在笔者也能做到了,看着自己的项目在AI作用下自动求解的感觉还是不错的。Android部分 Android上的实现相对于算法来说,更多的是一些细节的处理。当然也遇到比较麻烦的东西,像游戏状原创 2014-01-13 19:36:47 · 2284 阅读 · 10 评论 -
从拼图游戏开始(三)_可行解的讨论
讨论一下拼图游戏(算法中的名称是15puzzle)中可行解的问题,实际上随机生成的15puzzle大约有%50是无解的,本文将就随机生成的谜题的可解性加以讨论。设有如下矩阵:12 1 10 27 11 4 145 x 9 158 13 6 3将其排成水平的,有:12,1,10,2,7,11,4,14,5,X,9,15,8,13,6,3。并记该序列为A定义:”倒置变量值“ T,Ti表示序列A中位于第i位之后比Ai小原创 2013-12-19 07:21:25 · 2546 阅读 · 3 评论 -
从拼图游戏开始(九)_界面优化及功能完善
今天来优化一下游戏界面,因为笔者希望做出来的东西能够有人会去参考或者使用。这个版本完善了一下界面,最终效果和最初的手稿设计有所不同,因为使用了ActionBar,又改了一些细节。同时也修复了上一版中快速反复单击移动块是可能出现的错乱问题的bug。运行效果如下: 有几点需要注意的: 一、大图片内存溢出问题 向这种图片列表,且列表中显示的是大图的情况。通常都需要处理内存溢出的问题,笔者之前也没注意,后来就频繁报内存溢出的问题。现在做了简单的处理,处理方法有两种:一原创 2014-01-13 19:31:45 · 1807 阅读 · 0 评论 -
从拼图游戏开始(七)_数据模块框架实现
代码第二版,主要添加了一些数据库相关的处理,具体的实现以下功能: 1.添加图片剪裁功能,支持任意具体长宽比的图片的自动剪裁。 2.添加问题完成与否检测及提示。 3.完成问题列表主界面、缩略图、当前移动步数。 4.游戏状态的持久化。 程序运行效果:原创 2013-12-27 14:35:25 · 1412 阅读 · 0 评论 -
从拼图游戏开始(六)_游戏主体的Android实现
好的,要开始正式编码了。说实话目前为止笔者也不知道这个东西该怎么写,只是觉得能够完成它,于是就写了。以至于这种边想边写的程序,必然会存在一些需要优化的地方,但是这里笔者也仅是抛砖引玉,不敢自称高手。 今天写的是游戏主体的实现,因为不想一上来就摆一大堆实体类、字段名,看的人头大。所以本文论述的仅仅是游戏主题的实现,暂时不考虑数据持久化时的字段等细节,而诸如字段这样的细节,会在后面的文章中统一论述。 先上效果图,代码可在本文最后下载:原创 2013-12-24 13:14:16 · 1846 阅读 · 0 评论 -
从拼图游戏开始(五)_Android版功能及界面设计
框架基于需求,下面是这个拼图游戏需要实现的功能:基础功能:1、正常的生成可解问题,用户进行求解问题,判断结果,反馈用户。2、支持移动步数记录,支持原图查看功能。3、只是用户切换问题规模,现暂定有3x3及4x4两种问题规模可供选择。4、支持图片的在线获取。5、支持问题的重置、暂停保存、恢复继续功能。扩展功能:1、支持好友蓝牙连接游戏。2、支持社区分享。下面是界面设计初稿:原创 2013-12-23 09:27:39 · 2094 阅读 · 0 评论 -
从拼图游戏开始(八)_功能完善
好几天没写博客了,今天继续扯拼图游戏。话说上次(从拼图游戏开始(七)_数据模块框架实现)实现了问题数据的持久化,任意长宽比图片的自动剪裁等功能。这次要完善以下功能: 1.添加自定义图片来源,相册,摄像头获取。 2.使用真实的随机问题数据。 3.原图放大缩小提示。 4.menu菜单,以及"编辑"功能实现。 同样的,先上程序运行效果,再具体讨论一下功能的实现细节原创 2014-01-06 14:43:52 · 1494 阅读 · 0 评论 -
从拼图游戏开始(四)_IDA*算法求解Java实现
终于,在学习了完深搜和广搜、Dijkstra、二叉堆和优先队列以及A*算法之后,可以看一下IDA*算法了。因为求解4x4的拼图游戏所要搜素的节点数很大,所以应该采用IDA*算法,而3x3的拼图游戏则可以采用A*算法。 IDA*算法是A*的一个变形,和A*算法不同的是他不保存之前的搜索状态(意味着同一个节点可能会被搜索多次),它的搜索效率会稍微低于A*算法。笔者对于IDA*的翻译是迭代深度的A*算法,它是一种有信息提示的搜索(informed search),但其实现思想是基于无信息提示的ID原创 2013-12-20 08:11:37 · 5566 阅读 · 5 评论 -
从拼图游戏开始(一)_简单java模拟
今天看Android,看到一个开源库android-FlipView,然后看着看着就绕到了拼图游戏上,现在我打算写一个简单的拼图游戏。这将是我第二个连载的系列文章,今天是第一天,简单的用java命令行模拟一下拼图游戏的实现。代码:package com.wly.algorithmproblem;import java.util.Scanner;/** * 拼图游戏的简单模拟 * @原创 2013-12-03 18:32:14 · 3341 阅读 · 1 评论