Swing实现最简单连连看的思路和源码_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Swing实现最简单连连看的思路和源码

Swing实现最简单连连看的思路和源码

 2014/10/6 3:59:24  wwwcomy  程序员俱乐部  我要评论(0)
  • 摘要:国庆闲着没事儿写个连连看,断断续续写了两三天,估计加起来也有8个manhour了。简单记录一下实现流程。罗马不是一天建成的,从零开始的话还是一步一步走,写一点看一下效果,慢慢东西就出来了。主要有四个类:主界面,Card,CardHolder,判断卡片是否联通的算法类。刚开始主要创建主界面、Card和CardHolder:a.先搞个Frame出来b.实现CardHolder和Card,能new出一堆Card来,并且Card记录有自己的位置,自己的value。这里最好用二维数组
  • 标签:实现 源码 思路 Swing
国庆闲着没事儿写个连连看,断断续续写了两三天,估计加起来也有8个man hour了。简单记录一下实现流程。

罗马不是一天建成的,从零开始的话还是一步一步走,写一点看一下效果,慢慢东西就出来了。

主要有四个类:主界面,Card,CardHolder,判断卡片是否联通算法类。
刚开始主要创建主界面、Card和CardHolder:
  • a.先搞个Frame出来
  • b.实现CardHolder和Card,能new出一堆Card来,并且Card记录有自己的位置,自己的value。这里最好用二维数组,刚开始我用的List,结果发现后面写算法不方便。。
  • c.能根据位置把这些Card作为矩形画在Frame上。
  • d.让Card成对出现(其实在new的时候控制下value就行了)
  • e.添加鼠标事件监听,能根据事件点击坐标算出来是哪个Card被点到了,然后设置selectedCard
  • f.实现连接算法(其实是蹲坑时候想到的),根据拐角数算,直连,一个拐角的情况,两个拐角的情况,边缘要特殊处理一下。这一步比较费时间,我写的也不是很好。
  • g.实现重排。刚开始完全没必要在意这些画出来的Card是不是随机的,哪怕都是挨着的也没关系,实现这一步的时候重用一下方法,new Card的时候调用一下就行了。
  • 其他闲杂点,比如加menu,控制消除的card怎么重绘,双缓冲什么的。。。其实主要是功能,软件总有做不完的细节和需求的,慢慢改。



需要优化点和其他未加入功能点:
  • 1.后来想到可以让Card继承Jcomponent,这样可能在绘制上更方便点,事件监听可能也好点。后来解决闪烁问题还是在paint的时候先搞个图,最后画图,这点和awt的重写update实现双缓冲还是有区别的;事件的话还是用的事件委托,等于整个界面只有一个listener,这点和Ext的表格事件很像,如果表格一堆listener的话太浪费了。
  • 2.连接算法感觉略笨,好像自己玩连连看的时候,游戏能自动判断当前是不是还有可消的牌。如果实现的话应该是在另外一个线程里面计算每个牌的可消牌,并且缓存起来,这样点击的时候直接从这个缓存取就行了,也不用实时计算能不能消除了。这个实现起来应该还行,但是貌似每次消除或者重排的话,都得遍历所有卡片重新算一遍。
  • 3.可以加入timer,提示什么什么的功能。
  • 4.可以让value变成一幅画,消除有连接线,消除播放声音,右键取消选择什么的。
  • 5.size现在是写死的。。。
  • 6.可以消掉某牌之后其他的牌移动。
...



里面有些方法名用的也不是很恰当,凑合看看吧~

写完之后被老婆喷:写这么半天功能才这么鶸 =。=



  • class='magplus' title='点击查看原始大小图片' />
  • 大小: 307.9 KB
  • LLK.rar (16.2 KB)
  • 下载次数: 0
  • 查看图片附件
上一篇: C#目录 下一篇: 没有下一篇了!
发表评论
用户名: 匿名